Как Linux обрабатывает потоки и планирование процесса

Я пытаюсь понять, как Linux обрабатывает планирование процессов и планирование потоков. Я читал, что Linux может планировать как процессы, так и потоки.

есть ли в Linux планировщик потоков и планировщик процессов? Если да, то как они сотрудничают?

3 ответов


на планировщик ядра Linux фактически планирование задач, и это либо потоки, либо (однопоточные) процессы.

так задание (a task_struct внутри ядра), в контексте планировщика, это то, что планируется, и может быть некоторым ядра потока как kworker или kswapd, несколько пользовательский поток многопоточного процесса (например,firefox), или однопоточность однопоточный процесс (типа bash), установлено, что однопоточный процесс.

A процесс - непустое конечное множество (иногда синглтон)темы обмен же виртуальное адресное пространство (и другие вещи, такие как файловые дескрипторы, рабочий каталог и т. д. и т. п...). См. также учетные записи(7), функции(7) etc....

потоки в Linux потоки ядра (в смысле управления ядром, которое также создает свои собственные потоки), созданные Linux specific клон syscall (который также может использоваться для создания процессов в Linux). The pthread_create функция, вероятно, построена (на Linux) выше clone внутри и nptl и Gnu Libc (который интегрировал NPTL в Linux) и musl-libc.


потоки ядра в Linux реализованы как процессы, которые совместно используют ресурсы. Планировщик не делает различий между потоком и процессом

см. здесь для получения дополнительной информации: http://www.linuxquestions.org/linux/articles/Technical/Linux_Kernel_Thread


под LINUX нет понятия потоков, чтобы сделать поток жалоб Linux POSIX не что иное, как другой процесс.при попытке получить идентификатор процесса он будет отображать идентификатор процесса лидера в любом потоке. Для получения более подробной информации попробуйте обратиться к этой книге "понимание ядра LINUX".Надежда!--1-->