Многоуровневые системы

ОС строится как иерархия уровней. Уровни образуются группами функций, каждый уровень взаимодействует только со своими непосредственными соседями.

OC THE, 1968г., Дейкстра (пакетная ОС)

Уровень:

0 – распределение времени процессора

1 – управление памятью

2 – связь между консолью оператора и процессами

3 – управление устройствами ввода/вывода и буферизация

4 – пользовательские программы

5 – системные операторы

Данная архитектура, в основном, служила средством разработки. Однако, каждый уровень может, в принципе, быть наделён привилегиями и для вызова нижележащего уровня выполнять системный вызов с контролем параметров (как в монолитных системах).

OC MULTICS, уровни – “кольца защиты”.

Проблемой является множественность и размытость интерфейсов между слоями (уровнями), т.к. сложно выполнить однозначную группировку функций по уровням.

3. Клиент – сервер (микроядро)

Модель предполагает наличие программного компонента потребителя сервиса, который называется клиентом, и программного компонента поставщика сервиса (сервера).

Взаимодействие клиента и сервера стандартизировано. Инициатором обмена является клиент, который посылает запрос серверу, находящемуся в состоянии ожидания запроса.

Применительно к структурированию ОС подход состоит в разделении её на несколько процессов (серверы), каждый из которых выполняет отдельный набор сервисных функций, например, управление памятью, планирование процессов. Каждый серверный процесс работает в пользовательском режиме. Микроядро работает в привилегированном режиме и выполняет функции доставки сообщений нужному серверу и передачи результатов клиенту.

Подход заменяет вертикальное распределение функций на горизонтальное.

Существует проблема: для реализации своих функций, серверы должны иметь доступ к аппаратуре. Существует два подхода к решению этой проблемы.

1) NT executive, исполнительная система WinNT

Заключается в размещении аппаратно зависимого сервиса в режиме ядра (управление процессами, управление памятью, управление вводом/выводом, управление безопасности). При этом сохраняется ориентированный на сообщения механизм взаимодействия с сервером.

Преимущества: скорость исполнения (не требуется частого переключения из режима ядра в режим пользования при взаимодействии с сервером).

Недостаток: невозможность адаптации механизмов ОС под конкретного пользователя.

2) Mach/Workplace OS

Оставить в ядре только те функции, которые можно исполнить только в режиме супервизора (привилегированном режиме).

При этом используется парадигма разделения механизма и политики. Ядро отвечает за механизм реализации некоторого решения по управлению ресурсами, а сервер пользовательского режима отвечает за принятие решений (за политику).

Пример 1: Управление нитями.

Очевидно, что запуск нити требует привилегированный режим.

Запуск процесса или нити требует доступа к аппаратуре – функции ядра. Решение о приоритетах нитей, дисциплине постановки в очередь может принимать работающий вне ядра планировщик.

Пользователь может использовать тот планировщик, который подходит для его прикладной задачи.

Пример 2: Микроядро управляет аппаратурой страничной памяти.

У планировщика есть pager, который определяет стратегию замещения страниц и работает вне ядра.

Для драйверов устройств тоже можно выделить общий интерфейс, работающий в режимах ядра. В его функции входит работа с аппаратными прерываниями и доступ к управляющим регистрам устройств ввода/вывода.

Драйвер, работающий в режиме пользователя, например, драйвер СУБД, может включать оптимизацию под конкретный способ доступа к диску.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: