Архитектура операционных систем
ОС – сложная программно-аппаратная система.
Архитектура система – фундаментальный способ организации системы, включая:
состав и взаимоотношения компонентов, а также компонентов и окружающей среды,
принципы проектирования и развития системы. (Стандарт ANSI/IEEE 1471-2000)
Общие тенденции в реализации архитектуры ОС
Модульность
Ос состоит из множества программных модулей. Модуль ОС – функционально законченный элемент системы, выполненный в соответствии с принятыми межмодульными интерфейсами.
Во всех ОС модули делятся на две группы:
Ядро операционной системы – модули, исполняющие базовые функции. Это наиболее часто используемые системные модули (как правило, модуль управления системой прерываний, модуль управления процессами, модуль управления файловой системой, модуль управления памятью).
Модули ядра постоянно располагаются а памяти (резидентные модули), оформлены в виде модулей специального формата.
Вспомогательные модули – модули, загружаемые в память только при необходимости (транзитные модули): утилиты обслуживания диска, системы инструментальные, текстовые и графические редакторы ОС, графические пользовательские интерфейсы, библиотеки API и др.
Поддержка специального режима работы
Для повышения надежности и безопасности системы ядро ОС и низкоуровневые драйверы, управляющие работой каналов и устройств ввода-вывода, должны работать в специальном (привилегированном) режиме работы процессора, недоступном пользовательским программам. Вспомогательные модули ОС и пользовательские программы работают в пользовательском режиме.
Поддержка привилегированного и пользовательского режимов невозможна без специальных аппаратных решений процессора. Процессор Intel Pentium поддерживает 4 уровня привилегий (4 кольца: 0 ‑ самый высокий уровень привилегий, 3 – самый низкий), но операционные системы Windows и Unix используют только два.
Процессы, работающие в режиме ядра (привилегированный режим)
- имеют прямой доступ к аппаратному обеспечению;
- имеют доступ ко всей памяти компьютера;
- не могут быть вытеснены в страничный файл на жестком диске;
- выполняются с большим приоритетом, чем процессы режима пользователя.
Компоненты режима ядра защищены архитектурно: процессор предотвращает их изменение другой программой.
Процессы режима пользователя
- не имеют прямого доступа к аппаратуре, это защищает систему от неисправных приложений или неавторизированного доступа;
- ограничены выделенным им адресным пространством. Этим обеспечивается целостность ОС;
- могут быть вытеснены из физической памяти в страничный файл на жестком диске.
- выполняются с меньшим приоритетом, чем процессы режима ядра.
Процессор не должен позволять обращаться пользовательским программам к своим специальным системным регистрам. Попытка вызвать запрещенную команду или обратиться к запрещенному регистру должна вызывать прерывание (исключение).
Прикладные программы обращаются к модулям ядра операционной системы с соответствующим запросом (вызов функций API). При этом процессор переключается в привилегированный режим.
Недостаток: дополнительные затраты времени на переключение режимов.
Реализация многослойной структуры ОС
Все модули ОС и модули ядра работают как множество слоев (уровней иерархии). Самый нижний уровень – аппаратный (машинно-зависимый). Он пишется на языке ассемблера и ориентирован на работу с конкретной аппаратной реализацией. Это позволяет обеспечить переносимость ОС на новую платформу, не изменяя содержимого остальных модулей. Другие модули ядра обращаются с аппаратурой только через модуль аппаратной поддержки.
Модули одного слоя общаются друг с другом непосредственно, модули более высокого слоя обращаются только к модулям ближайшего нижнего слоя через межмодульный интерфейс.
"Молодые" (развивающиеся) ОС (например,Linux) имеют более многослойное ядро, чем "старые" (Unix).
Такая организация повышает надежность и защищенность работы системы, поддерживает переносимость, но приводит к замедлению работы ядра.
Совместимость с другими ОС и поддержка множественных прикладных сред
Современные операционные системы поддерживают как приложения, оптимизированные для работы в них, так и приложения, написанные для реализации в других ОС.
Прикладная среда – совокупность средств ОС, предназначенных для организации выполнения приложений, использующих
определенную систему команд,
определенный тип API,
определенный формат исполняемой программы.
Способы построения множественных прикладных средств:
эмуляция (моделирование выполнения каждой команды), например, режим эмуляции MS DOS в операционных системах Windows;
трансляция системных вызовов. В пользовательском режиме запускается транслятор, переводящий каждую функцию обращения "чужого" приложения к "чужому" API в обращение к функции "родного" API;
встраивание в ядро ОС множества прикладных средств. Так реализована работа с множественными прикладными средами в OS2.
Микроядерные ОС – ОС, в состав ядра которых включено минимально необходимое количество модулей. Как правило, это 5 сервисов (сервис – совокупность клиента и сервера):
управление виртуальной памятью,
поддержка заданий и потоков,
взаимодействие между процессами
управление поддержкой ввода-вывода и прерываниями,
сервисы главного компьютера сети и процессора.
Другие подсистемы и функции операционной системы оформляются как обычные пользовательские системы или как системные сервисы, работающие в режиме пользователя. По этому принципу организована ОС QNX.
Микроядерные ОС поддерживают модель клиент-сервер при организации обращения пользовательских программ к системным модулям, работающим в режиме пользователя, и для поддержки механизма вызова между серверами ОС. Микроядро при этом исполняет роль транспортных средств (рис. 1). Защита системных модулей, работающих в режиме пользователя, реализуется на уровне процессора (все приложения в многопроцессорной операционной системе изолированы!).
Достоинства:
простое и оптимизированное ядро (например, для работы в реальном времени),
возможность наращивания и изменения функций ОС без изменения ядра,
надежность организации, так как запуск или остановка каждого компонента, который представляет собой независимый процесс системы не отражается на работоспособности остальных процессов.
Монолитные (макроядерные) ОС – ОС, ядро которых не делится на центральную часть и периферийные модули (Unix).
Добавление новых функций и изменение существующих для монолитных ОС требует хорошего знания всей архитектуры операционной системы и больших усилий.
Операционная система Windows NT не является настоящей микроядерной ОС, но в ней реализован принцип клиент-сервер во взаимодействиях между модулями управляющей части.