16
Классическая архитектура ПО ОС UNIX содержит монолитное ядро ОС, которое согласно рисунку 1.4 содержит ПО всех уровней, кроме последнего. Системный вызовов такого ядра ОС происходит в два этапа и показан на рисунке 1.6:
системный вызов привилегированного ядра ОС инициирует переключение процессора из пользовательского режима в привилегированный;
при возврате к приложению, происходит обратное переключение.
За счет времени переключения 2t возникает дополнительная задержка в обработке системного вызова. Однако такое решение стало классическим и используется во многих ОС: UNIX, VAX, VMS, IBM OS/390, OS/2 и других.
Рисунок 1.6 - Переключение режимов монолитного ядра ОС
Замечание
Многослойная классическая многоуровневая архитектура ОС не лишена своих проблем:
значительные изменения одного из уровней могут иметь трудно предвидимое влияние на смежные уровни;
многочисленные взаимодействия между соседними уровнями усложняют обеспечение безопасности работы ОС.
Альтернативой классическому варианту архитектуры ОС является микроядерная архитектура ОС.
Суть этой архитектуры состоит в следующем:
В привилегированном режиме остается работать только очень небольшая часть ОС, называемая микроядром.
Микроядро защищено от остальных частей ОС и приложений.
В состав микроядра входят машинно-зависимые модули, а также модули, выполняющие базовые механизмы обычного ядра.
Все остальные, более высокоуровневые функции ядра, оформляются как
модули, работающие в пользовательском режиме.
На рисунке 1.7 представлено сравнение классической и микроядерной архитектур ОС:
17
менеджеры ресурсов, являющиеся неотъемлемой частью обычного ядра, становятся "периферийными" модулями, работающими в пользовательском режиме;
внешние, по отношению к микроядру компоненты ОС, реализуются как обслуживающие процессы;
между собой эти модули взаимодействуют как равноправные партнеры с помощью обмена сообщениями, которые передаются через микроядро.
Рисунок 1.7 - Сравнение классической и микроядерной архитектур ОС
При такой организации, менеджеры ресурсов, вынесенные в пользовательский режим, называются серверами ОС. Схематично механизм обращений к функциям ОС, оформленным в виде серверов, выглядит, как показано на рисунке 1.8.
Для микроядра, схема смены режимов, при выполнении системного вызова в ОС, показана на рисунке 1.9. Хорошо видно, что выполнение системного вызова сопровождается четырьмя переключениями режимов (4 t), а в классической архитектуре
– двумя (2 t). Следовательно, производительность ОС с микроядерной архитектурой, при прочих равных условиях, будет ниже, чем у ОС с классическим ядром.
Замечание
По многим литературным источникам, вопрос масштабов потери производительности в микроядерных ОС является спорным. Большинство ядер дистрибутивов ОС Linux являются монолитными.
18
Рисунок 1.8 - Системные вызовы через микроядро ОС
Рисунок 1.9 - Схема переключения режимов микроядерной архитектуры ОС
С 1990 года, в рамках проекта GNU, ведется разработка микроядерная архитектура Hurd ОС Linux, основанная на микроядре GNU Mach. Ричард Столлман, руководитель проекта GNU, в 2002 году заявил о скором выходе производственной версии Hurd, однако его обещания не оправдались.
19
Микроядерными являются ядра ОС Minix и ядро систем семейства BSD.
Windows NT часто также называют микроядерной ОС, однако многие считают, что:
•микроядро NT слишком велико (более 1 Мбайт), чтобы носить приставку "микро";
•все компоненты ядра работают в одном адресном пространстве и активно
используют общие структуры данных, что свойственно операционным системам с монолитным ядром.
Как было отмечено выше, модули ядра выполняют основные базовые функции ОС:
управление процессами и памятью;
управление устройствами ввода-вывода и другими элементами.
Хотя модульная организация ОС характерна для микроядерной архитектуры, монолитные ядра также используют модули. Вызвано это тем, что аппаратная часть ЭВМ настолько многообразна, что практически неэффективно создавать ядро на все возможные варианты.
Традиционно, взаимодействие ядра ОС с аппаратной частью ЭВМ осуществляется через специальное ПО, которое называется драйверами.
Любое ядро ОС является одной большой программной, которая:
выполняется в защищенном режиме (режиме ядра);
выполняется в своем собственном адресном пространстве.
Поэтому, перед компиляцией ядра запускается программа-конфигуратор, в которой можно указать какие драйвера включаются в ядро статически, а какие будут присутствовать как модули.
Когда ядро ОС загружено в память ЭВМ и начинает работать, запускается первый пользовательский процесс init (или скрипт init), имеющий PID=1, который обеспечивает дальнейшую загрузку необходимых модулей.
Для работы с модулями ОС Linux имеет специальные утилиты:
lsmod — просмотр списка модулей;
insmod — инсталляция модулей;
rmmod — удаление модуля;
modprobe — может выполнять функции insmod и rmmod;
modinfo — получение информации о модуле.
20
Подведем итог изученного ранее учебного материала. Нами были расмотрены различные концепции и представления:
•модель СОД раскрывает различные архитектурные возможности применения
средств вычислительной техники; на уровне отдельной ЭВМ можно выделить аппаратную и программную части; в программной части выделяется системное ПО, которое содержит объект нашего изучения — ОС;
•концепции серверных ОС и ОС рабочих станций в большей степени отража-
ют особенности применения прикладного ПО, что находит свое отражение в дистрибутивах ОС и их использования в пределах СОД;
•концепция многослойной структуры ОС отражает современную парадигму
построения сложных программных систем; стремление повысить надежность работы системного ПО приводит к выделению ядра ОС, работающего в привелигированном режиме; стремление повысить эффективность работы системного ПО приводит к созданию различных моделей ядер ОС, среди которых были выделены: монолитное ядро ОС и микроядро ОС;
•концепция базового ПО ЭВМ является попыткой формализовать и стандарти-
зировать наиболее важные понятия ОС, к которым в первую очередь относится ее ядро; формализуется интерфейс прикладного программирования (API) и идея абстрактной (виртуальной) машины;
•модели взаимодействия режимов ядра и пользователя наглядно показывают
архитектурные возможности построения ОС; демонстрируются архитектуры
классического (монолитного) ядра ОС и альтернативного — микроядра ОС;
•идея модульности ОС является техническим решением, обеспечивающим устранение основного недостатка монолитных ядер — привязка к аппаратной
конфигурации конкретной ЭВМ; в частности, ядро ОС УПК АСУ является монолитным и модульным.
Таким образом, нами изучены основные архитектурные особенности ОС, кроме представлений прикладного уровня, которые характерны для ПО, работающего в режиме пользователя. Данный подраздел посвящен именно этому вопросу.
Современный пользователь воспринимает ОС с внешней стороны — на уровне графической оболочки ОС. Эта оболочка представлена в виде рабочего стола — Desktop, на котором имеются: окна, панели, меню, курсор мыши...
Некоторые ОС, например, MS Windows и MacOS, не могут запуститься без графической оболочки. В других, например, UNIX и Linux, графическая оболочка является пользовательским приложением: X Window (X-сервер).
Если рассматирвать работу ПО ЭВМ на профессиональном уровне, то можно утверждать:
•в привигелированном режиме процессора (режим ядра) работает ядро ОС;
•в не привигелированном режиме процессора (режим пользователя) работают утилиты, инструментальное и прикладное ПО ЭВМ;
•для прикладного ПО — режим пользователя представляет некоторую среду