Sunday, Feb 05th

Last update12:13:00 PM GMT

Вы находитесь на: FreeBSD Запуск и выключение Организация времени выполнения

Организация времени выполнения

Ядро можно логически разделить на верхнюю половину и нижнюю половину. Верхняя половина ядра предоставляет службы процессам в ответ на системные вызовы или исключения. Это программное обеспечение можно представить как библиотеку процедур, разделяемую всеми процессами. Верхняя половина ядра выполняется в привилегированном режиме исполнения, в котором она имеет доступ как к структурам данных ядра, так и к контексту процессов уровня пользователя. Контекст каждого процесса содержится в двух областях памяти, зарезервированной для специфической информации процесса. Первая из этих областей является структурой процесса, которая исторически содержит информацию, необходимую, даже когда процесс сброшен на диск. В FreeBSD эта информация включает идентификаторы, связанные с процессом, права и привилегии процесса, его дескрипторы, распределение памяти, ожидающие внешние события и связанные действия, максимальное и текущее использование ресурсов и многие другие вещи. Вторая является структурой пользователя, которая исторически содержит информацию, которая не нужна, когда процесс сброшен на диск. В FreeBSD информация структуры пользователя каждого процесса включает аппаратный блок управления потоком (thread control block (ТСВ), учет ресурсов и статистику процесса и незначительную дополнительную информацию для отладки и создания дампов памяти (core dump). Решение, что же должно храниться в структуре процесса и структуре пользователя, было более важно в предыдущих системах, чем в FreeBSD. Поскольку память стала менее ограниченным ресурсом, большая часть структуры пользователя была для удобства перенесена в структуру процесса.

Нижняя половина ядра содержит в себе процедуры, которые вызываются для обработки аппаратных прерываний. Деятельность нижней половины ядра синхронна по отношению к источнику прерывания, но асинхронна по отношению к верхней половине, и программное обеспечение не может полагаться на то, что во время прерывания будет (если вообще будет) активен определенный процесс. Таким образом, информация о состоянии для процесса, который инициировал деятельность, недоступна. Верхняя и нижняя половины ядра взаимодействуют через структуры данных, обычно организованных вокруг рабочих очередей.


Похожие:
Еще по теме:
Советуем прочитать:

Сейчас 27 гостей онлайн