Набор модулей завершает установку всех потоков ядра, необходимых для получения рабочего ядра. Здесь запускаются потоки ядра swapper, init, pagezero, pagedaemon, bufdaemon, vnlru и scheduler, а также потоки ядра для сетевой файловой системы (NFS). До этого места система работала в однопроцессорном режиме.
На многопроцессорной системе модуль SISUBSMP вызывает последнюю часть машинно-зависимого кода, процедуру release_aps(), чтобы запустить в системе другие процессоры. Теперь настало время запустить систему. Модуль SISUBRUNSCHEDULER является потоком, особым в последовательности запуска, поскольку он всегда должен выполняться последним. В списке модулей ему дается наибольший возможный номер подсистемы со всеми установленными - 1-й, чтобы он не был случайно помещен в списке раньше.
Вызывается процедура task scheduler, которая никогда не возвращается. Она немедленно начинает планировать выполнение на процессорах системы потоков ядра и процессов уровня пользователя.
scheduler, task scheduler
Модули потоков ядра
|
Модуль |
Первая процедура |
|
SI_SUB_INTRINSIC_POST |
proc0_post() |
|
SISUBKTHREADINIT |
kick_init() |
|
SISUBKTHREADPAGE |
vm_pageout() |
|
SI_SUB_KTHREAD_VM |
vm_daemon() |
|
SISUBKTHREADBUF |
buf_daemon() |
|
SISUBKTHREADUPDATE |
vnlru_proc() |
|
SISUBKTHREADIDLE |
ald_daemon() |
|
SI_SUB_SMP |
release_aps() |
|
SI_SUB_RUN_SCHEDULER |
scheduler() |