ОС строится как иерархия уровней. Уровни образуются группами функций, каждый уровень взаимодействует только со своими непосредственными соседями.
OC THE, 1968г., Дейкстра (пакетная ОС)
Уровень:
0 – распределение времени процессора
1 – управление памятью
2 – связь между консолью оператора и процессами
3 – управление устройствами ввода/вывода и буферизация
4 – пользовательские программы
5 – системные операторы
Данная архитектура, в основном, служила средством разработки. Однако, каждый уровень может, в принципе, быть наделён привилегиями и для вызова нижележащего уровня выполнять системный вызов с контролем параметров (как в монолитных системах).
OC MULTICS, уровни – “кольца защиты”.
Проблемой является множественность и размытость интерфейсов между слоями (уровнями), т.к. сложно выполнить однозначную группировку функций по уровням.
3. Клиент – сервер (микроядро)
Модель предполагает наличие программного компонента потребителя сервиса, который называется клиентом, и программного компонента поставщика сервиса (сервера).
|
|
Взаимодействие клиента и сервера стандартизировано. Инициатором обмена является клиент, который посылает запрос серверу, находящемуся в состоянии ожидания запроса.
Применительно к структурированию ОС подход состоит в разделении её на несколько процессов (серверы), каждый из которых выполняет отдельный набор сервисных функций, например, управление памятью, планирование процессов. Каждый серверный процесс работает в пользовательском режиме. Микроядро работает в привилегированном режиме и выполняет функции доставки сообщений нужному серверу и передачи результатов клиенту.
Подход заменяет вертикальное распределение функций на горизонтальное.
Существует проблема: для реализации своих функций, серверы должны иметь доступ к аппаратуре. Существует два подхода к решению этой проблемы.
1) NT executive, исполнительная система WinNT
Заключается в размещении аппаратно зависимого сервиса в режиме ядра (управление процессами, управление памятью, управление вводом/выводом, управление безопасности). При этом сохраняется ориентированный на сообщения механизм взаимодействия с сервером.
Преимущества: скорость исполнения (не требуется частого переключения из режима ядра в режим пользования при взаимодействии с сервером).
Недостаток: невозможность адаптации механизмов ОС под конкретного пользователя.
2) Mach/Workplace OS
Оставить в ядре только те функции, которые можно исполнить только в режиме супервизора (привилегированном режиме).
При этом используется парадигма разделения механизма и политики. Ядро отвечает за механизм реализации некоторого решения по управлению ресурсами, а сервер пользовательского режима отвечает за принятие решений (за политику).
|
|
Пример 1: Управление нитями.
Очевидно, что запуск нити требует привилегированный режим.
Запуск процесса или нити требует доступа к аппаратуре – функции ядра. Решение о приоритетах нитей, дисциплине постановки в очередь может принимать работающий вне ядра планировщик.
Пользователь может использовать тот планировщик, который подходит для его прикладной задачи.
Пример 2: Микроядро управляет аппаратурой страничной памяти.
У планировщика есть pager, который определяет стратегию замещения страниц и работает вне ядра.
Для драйверов устройств тоже можно выделить общий интерфейс, работающий в режимах ядра. В его функции входит работа с аппаратными прерываниями и доступ к управляющим регистрам устройств ввода/вывода.
Драйвер, работающий в режиме пользователя, например, драйвер СУБД, может включать оптимизацию под конкретный способ доступа к диску.