Архитектура микроядра


 

На структуру ранних операционных систем, разработанных в средине 50-х годов, обращалось мало внимания. Ни у кого не было опыта в разработке дейст­вительно больших программных систем, а проблемы взаимозависимости и взаи­модействия сильно недооценивались. В подобных монолитных операционных системах (monolithic operating systems) почти все процедуры могли вызывать одна другую. Такое отсутствие структуры было несовместимо с расширением операционных систем. Первая версия операционной системы OS/360 была созда­на коллективом программистов из 5000 человек за пять лет и содержала более миллиона строк кода. Разработанная несколько позже операционная система Multics содержала уже 20 миллионов строк. Как отмечалось в разделе 2.3, для разработки программного обеспечения такого масштаба требуется использовать методы модульного программирования. В частности, были разработаны слоистые операционные системы (layered operating systems)3 (рис. 4.10,а) с иерархической организацией функций, взаимодействие в которых возможно только между функциями, находящимися на соседних уровнях. При "многослойном" подходе все уровни или большинство из них выполняются в режиме ядра.

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

Суть философии, лежащей в основе использования микроядра, заключается в том, что в ядре должны быть только самые важные функции операционной системы. Работа служб и приложений, не являющихся критическими, основана на работе микроядра, но выполняются они в пользовательском режиме. И хотя разделение на то, что находится внутри микроядра, и то, что выносится за его пределы, зависит от архитектуры системы; общая тенденция такова, что многие службы, которые традиционно входили в операционную систему, теперь входят во внешние подсистемы, взаимодействующие с ядром и друг с другом. К ним относятся драйверы устройств, файловые системы, менеджер виртуальной памяти, система управления окнами и службы безопасности.

3 Как обычно, терминология в этой области непоследовательна. Термином моно­литная операционная система часто обозначаются операционные системы двух видов, для которых в данной книге употребляются названия монолитные и слоистые.

 

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

Например, если приложению нужно открыть файл, оно отправляет сообще­ние серверу файловой системы. Если ему нужно создать процесс или поток, оно отправляет сообщение серверу процессов. Каждый из серверов может отправлять сообщения другим серверам и обращаться к элементарным функциям микроядра. Так в одном компьютере реализуется архитектура типа клиент/сервер.

 



Дата добавления: 2016-06-05; просмотров: 1969;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.008 сек.