Микроядерная архитектура
Суть микроядерной архитектуры состоит в следующем – в привилегированном режиме остается работать толь очень небольшая часть операционной системы, называемая микроядром.
В состав микроядра входят машинно-зависимые модули, а также модули, выполняющие функции базовых механизмов обычного ядра:
· по управлению процессами;
· обработке прерываний;
· управлению виртуальной памятью;
· управлению устройствами ввода-вывода, связанными с загрузкой или чтением регистров устройств.
Все остальные функции ядра оформляются в виде приложений, работающих в пользовательском режиме.
Многие менеджеры ресурсов (файловая система, подсистема управления виртуальной памятью и процессами и т.п.), являющиеся неотъемлемой частью обычного ядра, становятся «периферийными» модулями, работающими в пользовательском режиме.
Менеджеры ресурсов, работающие в пользовательском режиме, имеют принципиальные отличия от традиционных вспомогательных модулей операционной системы. Последние вызываются пользователями системы, а менеджеры ресурсов обслуживают запросы приложений. Поэтому в ОС с классической архитектурой отсутствуют механизмы, с помощью которых одно приложение могло бы вызвать функцию другого.
В микроядерной архитектуре менеджеры ресурсов становятся серверами операционной системы, то есть модулями, основное назначение которых является обслуживание запросов локальных приложений и других модулей ОС.
Очевидно, что для реализации микроядерной архитектуры необходимым условием является наличие в ОС удобного и эффективного способа вызова процедур одного процесса из другого. Поддержка такого механизма и является одной из главных задач микроядра (рис. 1.5).
Рис.1.5. Иллюстрация системного вызова в микроядерной архитектуре
Преимущества микроядерной архитектуры:
· Высокая степень переносимости, обусловленная тем, что весь машинно-зависимый код изолирован в микроядре, поэтому для переноса системы на новый процессор требуется меньше изменений и они все сгруппированы вместе.
· Высокая расширяемость – добавление новой подсистемы требует разработки только нового приложения, что никак не затрагивает целостность микроядра.
· Легкая конфигурируемость ОС – достаточно изменить файл с настройками начальной конфигурации системы или же остановить ненужные больше серверы (менеджеры ресурсов) в ходе работы системы обычными для остановки приложений средствами.
· Повышенная надежность ОС – каждый сервер выполняется в виде отдельного процесса в своей собственной области памяти и таким образом защищен от других серверов ОС, что не наблюдается в традиционных ОС, где все модули ядра могут влиять друг на друга. Кроме этого, уменьшенный объем кода ядра снижает вероятность появления ошибок программирования.
· Возможна поддержка распределенных вычислений, так как используются механизмы, аналогичные сетевым: взаимодействие клиентов и серверов путем обмена сообщениями. Серверы микроядра могут работать как на одном, так и на разных компьютерах.
Недостаток микроядерной архитектуры:
· Более низкая производительность, чем при классической архитектуре – системный вызов сопровождается не двумя переключениями режима (пользовательского и привилегированного), а четырьмя (рис. 1.5 и 1.6).
Рис. 1.6. Смена режимов при выполнении системных вызовов в операционной системе с классически ядром (a) и с микроядерной архитектурой (б)
Из-за этого недостатка разработчики не всегда жестко придерживаются принципа минимизации функций ядра, часто жертвуя этим ради повышения производительности. Таким образом, главная проблема разработки микроядерной ОС – что включать в микроядро, а что выносить в пользовательское пространство.