Микроядерные операционные системы

В микроядерных операционных системах мы можем выделить центральный ком­пактный модуль, относящийся к супервизорной части системы. Этот модуль име­ет очень небольшие размеры и выполняет относительно небольшое количество управляющих функций, но позволяет передать управление на другие управляю­щие модули, которые и выполнят затребованную функцию. Микроядро — это ми­нимальная главная (стержневая) часть операционной системы, служащая осно­вой модульных и переносимых расширений. Микроядро само является модулем системного программного обеспечения, работающим в наиболее приоритетном состоянии компьютера и поддерживающим связи с остальной частью операцион­ной системы, которая рассматривается как набор серверных приложений (служб).

В 90-е годы XX века было весьма распространенным убеждение, что большинство операционных систем следующих поколений будут строиться как микроядерные. Однако практика показывает, что это не совсем так. Разработчики желают иметь компактное микроядро, но при этом включить в него как можно больше функций, исполняемых непосредственно этим программным модулем. Ибо выполнение за­требованной функции другим модулем, вызываемым из микроядра, приводит и к дополнительным задержкам, и к дополнительным сложностям. Более того, име­ется масса разных мнений по поводу того, как следует организовывать службы опе­рационной системы по отношению к микроядру; как проектировать драйверы устройств, чтобы добиться наибольшей эффективности, но сохранить функции

Микроядерные операционные системы - student2.ru 290______________________________ Глава 9. Архитектура операционных систем

драйверов максимально независимыми от аппаратуры; следует ли выполнять опе­рации, не относящиеся к ядру, в пространстве ядра или в пространстве пользова­теля; стоит ли сохранять программы имеющихся подсистем (например, UNIX) или лучше отбросить все и начать с нуля.

Основная идея, заложенная в технологию микроядра заключается в том, чтобы создать необходимую среду верхнего уровня иерархии, из которой можно легко получить доступ ко всем функциональным возможностям уровня аппаратного обеспечения. При этом микроядро является стартовой точкой для создания всех остальных модулей системы. Все эти остальные модули, реализующие необхо­димые системе функции, вызываются из микроядра и выполняют сервисную роль. При этом они получают статус обычного процесса или задачи. Можно сказать, что микроядерная архитектура соответствует технологии клиент-сервер. Имен­но эта технология позволяет в большей мере и с меньшими трудозатратами реа­лизовать перечисленные выше принципы проектирования операционных сис­тем.

Важнейшая задача разработки микроядра заключается в выборе базовых прими­тивов, которые должны находиться в микроядре для обеспечения необходимого и достаточного сервиса. В микроядре содержится и исполняется минимальное ко­личество кода, необходимое для реализации основных системных вызовов. В чис­ло этих вызовов входят передача сообщений и организация другого общения меж­ду внешними по отношению к микроядру процессами, поддержка управления прерываниями, а также ряд других весьма немногочисленных функций. Осталь­ные системные функции, характерные для «обычных» (не микроядерных) опера­ционных систем, обеспечиваются как модульные дополнения-процессы, взаимо­действующие главным образом между собой и осуществляющие взаимодействие посредством передачи сообщений.

Для большинства микроядерных операционных систем основой для такой архи­тектуры выступает технология микроядра Mach. Эта операционная система была создана в университете Карнеги Меллон, и многие разработчики брали с нее при­мер.

Исполняемые микроядром функции ограничены в целях сокращения его разме­ров и максимизации количества кода, работающего как прикладная программа. Микроядро включает только те функции, которые требуются в целях определе­ния набора абстрактных сред обработки для прикладных программ и организации совместной работы приложений. В результате микроядро обеспечивает только пять различных типов сервисов:

- управление виртуальной памятью;

- поддержка заданий и потоков;

- взаимодействие между процессами (Inter-Process Communication, IPC);
- управление поддержкой ввода-вывода и прерываниями;

- сервисы хоста (host)1 и процессора.

Микроядерные операционные системы - student2.ru 1 Хост — главный компьютер. Нынче этим термином обозначают любой компьютер, имеющий IP-адрес.




Микроядерные операционные системы - student2.ru Микроядерные операционные системы________________ 291

Другие подсистемы и функции операционной системы, такие как файловые сис­темы, поддержка внешних устройств и традиционные программные интерфейсы, оформляются как системные сервисы либо получают статус обычных обрабаты­вающих задач. Эти программы работают как приложения на микроядре.

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

Благодаря своим небольшим размерам и способности поддерживать остальные службы в виде обычных процессов, выполняющихся вместе с прикладными про­граммами, сами микроядра проще, чем ядра монолитных или модульных операци­онных систем. С микроядром супервизорная часть операционной системы разби­вается на модульные части, которые могут быть сконфигурированы целым рядом способов, позволяя строить большие системы добавлением частей к меньшим. Например, каждый аппаратно-независимый нейтральный сервис логически отде­лен и может быть сконфигурирован различными способами. Микроядра также облегчают поддержку мультипроцессоров созданием стандартной программной среды, которая может использовать несколько процессоров, если они есть, однако если их нет, работает на одном. Специализированный код для мультипроцессоров ограничен самим микроядром. Более того, сети из общающихся между собой мик­роядер могут быть использованы для операционной системной поддержки возни­кающего класса массивно параллельных машин.

В некоторых случаях использование микроядерного подхода на практике сталки­вается с определенными сложностями, что проявляется в некотором замедлении скорости выполнения системных вызовов при передаче сообщений через микро­ядро по сравнению с классическим подходом. С другой стороны, можно констати­ровать и обратное. Поскольку микроядра малы и в значительной степени оптимизи­рованы, при соблюдении ряда условий они позволяют обеспечить характеристики реального времени, требующиеся для управления устройствами и для высокоско­ростных коммуникаций. Наконец, хорошо структурированные микроядра обеспе­чивают изолирующий слой для аппаратных различий, которые не маскируются применением языков программирования высокого уровня. Таким образом, они упрощают перенесение кода и увеличивают уровень его повторного использова­ния.

Наиболее ярким представителем микроядерных операционных систем является операционная система реального времени QNX. Микроядро QNX поддерживает только планирование и диспетчеризацию процессов, взаимодействие процессов, обработку прерываний и сетевые службы нижнего уровня (подробнее об ОС QNX см. в главе 10). Это микроядро обеспечивает всего лишь пару десятков системных вызовов, но благодаря этому оно может быть целиком размещено во внутреннем кэше даже таких процессоров, как Intel 486. Как известно, разные версии этой опе­рационной системы имели и разные объемы ядер — от 8 до 46 Кбайт.

Микроядерные операционные системы - student2.ru 292______________________________ Глава 9. Архитектура операционных систем

Чтобы построить минимальную систему QNX, требуется добавить к микроядру менеджер процессов, который создает процессы и управляет ими и памятью про­цессов. Чтобы операционная система QNX была применима не только во встроен­ных и бездисковых системах, нужно добавить файловую систему и менеджер уст­ройств. Эти менеджеры исполняются вне пространства ядра, так что ядро остается небольшим.

Наши рекомендации