
- •1. Общие вопросы разработки операционных систем
- •1.4 Эволюция ос
- •1. Общие вопросы разработки операционных систем
- •1.1 Место ос в структуре вычислительной системы
- •1.2 Назначение и функции ос
- •1.3.4 Защита данных и администрирование
- •1.3.5 Интерфейс прикладного программирования
- •1.3.6 Пользовательский интерфейс
- •1.4 Требования, предъявляемые к современным ос
- •1.4.1 Расширяемость
- •1.4.2 Переносимость
- •1.4.3 Совместимость
- •1.5 Эволюция ос
- •1.6 Классификация ос
- •1.6.1 По типу алгоритмов управления ресурсами
- •1.6.2 По типу аппаратных платформ
- •1.7.1.2 Многоуровневые системы
- •1.7.1.3 Многослойная модель ядра
- •1.7.1.4 Примеры многоуровневых ос
- •1.7.2 Микроядерная архитектура (модель клиент-сервер)
1.7.1.2 Многоуровневые системы
Обобщением предыдущего подхода является организация ОС как иерархии уровней с хорошо определенными связями между ними, так чтобы объекты уровня N могли вызывать только объекты из уровня N-1. Нижним уровнем в таких системах обычно является аппаратура, верхним уровнем интерфейс пользователя. Чем ниже уровень, тем более привилегированные команды и действия может выполнять модуль, находящийся на этом уровне. Уровни образуются группами функций операционной системы - файловая система, управление процессами и устройствами и т.п. Каждый уровень может взаимодействовать только со своим непосредственным соседом - выше- или нижележащим уровнем. Прикладные программы или модули самой операционной системы передают запросы вверх и вниз по этим уровням. Впервые такой подход был применен при создании системы THE (Technishe Hogeschool Eindhoven) Дейкстрой и его студентами в 1968 г.
Многоуровневые системы хорошо реализуются. При использовании операций нижнего слоя не нужно знать, как они реализованы, нужно знать лишь, что они делают. Многоуровневые системы хорошо тестируются. Отладка начинается с нижнего слоя и проводится послойно. При возникновении ошибки есть уверенность, что она находится в тестируемом слое. Слоеные системы хорошо модифицируются. При необходимости можно заменить лишь один слой, не внося изменения в остальные. Но многоуровневые системы сложны для разработки: тяжело правильно определить порядок слоев, и что, к какому слою относится. Эти системы менее эффективны, чем монолитные. Так, например, для выполнения операций ввода-вывода программе пользователя придется последовательно проходить все слои.
1.7.1.3 Многослойная модель ядра
Поскольку ядро ОС представляет собой сложный многофункциональный комплекс, то многоуровневый поход обычно распространяется и на структуру ядра. Ядро может состоять из следующих слоев:
- средства аппаратной поддержки (система прерываний, средства переключения контекстов процессов, средства поддержки привилегированного режима, средства защиты областей памяти и т. д.);
- машинно-зависимые компоненты ОС; в идеале этот слой полностью экранирует вышележащие слои ядра от особенностей аппаратуры (пример – слой HAL ОС Windows NT);
- Рис.1.3.
Многослойная модель ядра ОС
- менеджеры ресурсов; слой состоит из мощных функциональных модулей, реализующих стратегические задачи по управлению основными ресурсами ОС;
- интерфейс системных вызовов является самым верхним слоем ядра и взаимодействует непосредственно с приложениями и системными утилитами, образуя прикладной программный интерфейс ОС.
1.7.1.4 Примеры многоуровневых ос
Многоуровневый подход был использован при реализации следующих ОС:
Рис. 1.4. Структура ОС UNIX
Рис. 1.5. Ядро ОС UNIX
Пример реализации многоуровневой Windows
Рис. 1.6. СтруктураWindows 2000
На сегодняшний момент такой структурный подход все больше воспринимается монолитным. В системах, имеющих многоуровневую структуру, нелегко удалить один слой и заменить его другим в силу множественности и размытости интерфейсов между слоями. Добавление новых функций и изменение существующих требовало хорошего знания операционной системы и массы времени. Когда стало ясно, что операционные системы живут долго и должны иметь возможности развития и расширения, на смену монолитным ОС пришла модель клиент-сервер и тесно связанная с ней концепция микроядра.