Набор модулей завершает установку всех потоков ядра, необходимых для получения рабочего ядра. Здесь запускаются потоки ядра 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() |
- 09/01/2010 17:59 - Конфигурация ядра FreeBSD (Linux)
- 09/01/2010 17:49 - Программа /usr/bin/login
- 09/01/2010 17:42 - /usr/libexec/getty
- 09/01/2010 17:34 - Сценарии запуска системы - rc conf, rc conf freebsd
- 09/01/2010 17:25 - init - Инициализация уровня пользователя
- 09/01/2010 12:12 - Запуск межпроцессного взаимодействия
- 09/01/2010 10:46 - Загружаемые модули ядра FreeBSD
- 09/01/2010 10:36 - Инициализация модулей устройств. Подсистема mbuf.
- 08/01/2010 22:03 - Инициализация потоков и процессов ядра
- 08/01/2010 21:52 - Базовые службы и память ядра