> Можете хоть обсоздаваться потоками ядра.Повторю ещё раз, в линуксе и fork, и clone, и kernel_thread
создают одну и ту же сущность планирования, которая содержит информацию, которая называется
не иначе как окружение процесса исполнения задачи, и которой манипулирует планировщик.
От поняти потока это отличается тем, что
с потоком ассоциирована только информация, без
объектов глобального характера вроде информации о пространстве памяти.
В солярис, уже говорил чем манипулирует планировщик, и предлагаю пройтись по всей цепочке.
thread_create-поток ядра, сущность планирования.
При создании процесса происходит такая эстафета:
cfork http://fxr.watson.org/fxr/source/common/os/fork.c?v=OPENSOLA...
forklwp http://fxr.watson.org/fxr/source/common/os/lwp.c?v=OPENSOLAR...
lwp_create http://fxr.watson.org/fxr/source/common/os/lwp.c?v=OPENSOLAR...
thread_create http://fxr.watson.org/fxr/source/common/disp/thread.c?v=OPEN...
квантами которого и исполняется пользовательский процесс, чтоб лучше понять эту сущность
планирования, достаточно глянуть на её ключевую структуру http://fxr.watson.org/fxr/source/common/sys/thread.h?v=OPENS...
не найдёте там инфу, связанную с пространством памяти, вроде mm_struct* mm в линуксовой task_struct, или инфу, связанную с
пространством IO, вроде struct files_struct *files в линуксовой таске.
Планировщик манипулирует именно кернель тредами, и, если посмотреть какие процедуры исполняют
те кернель треды, что создаются в cfork, то можно понять что планирование исполнения
пользовательских процессов происходит в соответствующем кернель треде манипуляциями с структурой proc_t, а не в планировщике по тикам таймера.
Разницу между линуксовой схемой уловили?