Ядро и процессы
1.5. Ядро и процессы
Прежде чем приступать к изложению основного материала этого раздела, сделаем несколько общих замечаний о принципах управления ресурсами и о представлении их в нашем пособии.
Ядром (kernel) называется часть ОС, выполняющая некоторый минимально необходимый набор функций по управлению ресурсами. Дополнительные функции управления ресурсами выполняются вспомогательными модулями - утилитами. Точное определение ядра дать трудно, так как оно по-разному понимается в разных ОС. В "старых", не работавших с виртуальной памятью системах под ядром обычно понималась часть системы, резидентная в оперативной памяти. В современных ОС ядро резидентно в виртуальной памяти, и это также может служить его классификационным признаком. Более узкое определение, трактующую ядро как часть ОС, которая работает в привилегированном режиме, представляется нам более подходящей для определения микроядра (см. раздел 1.6).
На ядро, как правило, возлагаются такие основные функции:
- обработка прерываний;
- создание и уничтожение процессов;
- переключение процессов из одного состояния в другое;
- управление памятью;
- синхронизация и взаимодействие процессов;
- поддержка операций ввода-вывода (не всегда);
- учет работы системы и использования ресурсов пользователями;
- и т.д.
Для ОС процесс представляется блоком контекста процесса (вспомните примечание 3 к определению процесса). Блок контекста содержит информацию о процессе, необходимую для ОС, например:
- идентификатор пользователя-владельца процесса;
- информацию для планирования процесса на выполнение;
- информацию об оперативной и вторичной памяти;
- информацию о других выделенных процессу ресурсах;
- информацию об открытых устройствах и файлах;
- учетную информацию.
Обязательной составляющей блока контекста является вектор состояния процессора. Вектор состояния обязательно хранится в оперативной памяти. Другие составляющие блока контекста могут храниться в разных местах памяти и даже вытесняться на внешнюю память. Действия ОС по управлению процессами сводятся к манипуляциям с блоками контекста процессов и с отдельными полями этих блоков.
Вспомним теперь примечание 1 к определению процесса: процесс в системе может находиться в различных состояниях. Количество состояний процесса разное в разных ОС (так, в ОС Unix различают 9 возможных состояний процесса), но все они сводятся к трем основным, показанным на