Ответ 1
планировщик ядра Linux на самом деле планирует задачи, и это либо потоки, либо (однопоточные) процессы.
Итак, задача (a task_struct
внутри ядра) в контексте планировщика - это планируемая вещь и может быть некоторым потоком ядра, например kworker
или kswapd
, некоторая пользовательская нить многопоточного процесса (например, firefox
) или одного потока однопоточного процесса (например, bash
), идентифицированного с помощью одного однопоточного процесса.
A process - это непустое конечное множество (иногда одноэлементное) темы, разделяющие одно и то же виртуальное адресное пространство (и другие вещи, такие как файловые дескрипторы, рабочий каталог и т.д. и т.д.). См. Также учетные данные (7), возможности (7) и т.д.
Темы в Linux - это потоки ядра (в смысле управления ядром, которое также создает собственные потоки), созданное специфическим для Linux clone syscall (который также можно использовать для создания процессов в Linux). Функция pthread_create, вероятно, построена (в Linux) выше clone
внутри NPTL и Gnu Libc (который интегрировал NPTL в Linux) и musl-libc.