Планировщик ядра 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 .