- •Тема 1. Введение в операционные системы
- •Тема 1. Введение в операционные системы 1
- •1.1. Определение, назначение, состав и функции операционных систем
- •1.1.1. Определение и назначение операционной системы
- •1.1.2. Понятие операционной среды
- •1.1.3. Операционные оболочки
- •1.1.4. Рациональное управление ресурсами компьютера
- •1.2. Сетевые операционные системы
- •1.2.1. Локальные и глобальные сети
- •1.2.2. Назначение и функциональные компоненты сетевых операционных систем
- •1.2.3. Компоненты сети
- •1.3. Архитектура операционных систем
- •1.3.1. Архитектура операционной системы, основанная на ядре
- •1.3.2. Микроядерная архитектура
- •1.3.3. Совместимость операционных систем
- •Вопросы для самопроверки
1.3.2. Микроядерная архитектура
Суть микроядерной архитектуры состоит в следующем – в привилегированном режиме остается работать толь очень небольшая часть операционной системы, называемая микроядром.
В состав микроядра входят машинно-зависимые модули, а также модули, выполняющие функции базовых механизмов обычного ядра:
по управлению процессами;
обработке прерываний;
управлению виртуальной памятью;
управлению устройствами ввода-вывода, связанными с загрузкой или чтением регистров устройств.
Все остальные функции ядра оформляются в виде приложений, работающих в пользовательском режиме.
Многие менеджеры ресурсов (файловая система, подсистема управления виртуальной памятью и процессами и т.п.), являющиеся неотъемлемой частью обычного ядра, становятся «периферийными» модулями, работающими в пользовательском режиме.
Менеджеры ресурсов, работающие в пользовательском режиме, имеют принципиальные отличия от традиционных вспомогательных модулей операционной системы. Последние вызываются пользователями системы, а менеджеры ресурсов обслуживают запросы приложений. Поэтому в ОС с классической архитектурой отсутствуют механизмы, с помощью которых одно приложение могло бы вызвать функцию другого.
В микроядерной архитектуре менеджеры ресурсов становятся серверами операционной системы, то есть модулями, основное назначение которых является обслуживание запросов локальных приложений и других модулей ОС.
Очевидно, что для реализации микроядерной архитектуры необходимым условием является наличие в ОС удобного и эффективного способа вызова процедур одного процесса из другого. Поддержка такого механизма и является одной из главных задач микроядра (рис. 1.5).
Рис.1.5. Иллюстрация системного вызова в микроядерной архитектуре
Преимущества микроядерной архитектуры:
Высокая степень переносимости, обусловленная тем, что весь машинно-зависимый код изолирован в микроядре, поэтому для переноса системы на новый процессор требуется меньше изменений и они все сгруппированы вместе.
Высокая расширяемость – добавление новой подсистемы требует разработки только нового приложения, что никак не затрагивает целостность микроядра.
Легкая конфигурируемость ОС – достаточно изменить файл с настройками начальной конфигурации системы или же остановить ненужные больше серверы (менеджеры ресурсов) в ходе работы системы обычными для остановки приложений средствами.
Повышенная надежность ОС – каждый сервер выполняется в виде отдельного процесса в своей собственной области памяти и таким образом защищен от других серверов ОС, что не наблюдается в традиционных ОС, где все модули ядра могут влиять друг на друга. Кроме этого, уменьшенный объем кода ядра снижает вероятность появления ошибок программирования.
Возможна поддержка распределенных вычислений, так как используются механизмы, аналогичные сетевым: взаимодействие клиентов и серверов путем обмена сообщениями. Серверы микроядра могут работать как на одном, так и на разных компьютерах.
Недостаток микроядерной архитектуры:
Более низкая производительность, чем при классической архитектуре – системный вызов сопровождается не двумя переключениями режима (пользовательского и привилегированного), а четырьмя (рис. 1.5 и 1.6).
Рис. 1.6. Смена режимов при выполнении системных вызовов в операционной системе с классически ядром (a) и с микроядерной архитектурой (б)
Из-за этого недостатка разработчики не всегда жестко придерживаются принципа минимизации функций ядра, часто жертвуя этим ради повышения производительности. Таким образом, главная проблема разработки микроядерной ОС – что включать в микроядро, а что выносить в пользовательское пространство.
