Как 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-->