Как Linux обрабатывает потоки и планирование процессов - PullRequest
26 голосов
/ 11 декабря 2011

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

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

Ответы [ 3 ]

38 голосов
/ 11 декабря 2011

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

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

A process - это непустой конечный набор (иногда одиночный) из потоков , разделяющих одно и то же виртуальное адресное пространство (и другие вещи, такие как * 1028) * файловые дескрипторы , рабочий каталог и т. д. и т. д.). См. Также учетные данные (7) , возможности (7) и т. Д ....

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

22 голосов
/ 11 декабря 2011

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

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

0 голосов
/ 04 декабря 2014

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

...