Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГОС_ответы.doc
Скачиваний:
35
Добавлен:
27.10.2018
Размер:
21.59 Mб
Скачать

18 Мікроядерні та монолітні операційні системи, їх особливості

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

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

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

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

Исполняемые макроядром ф-ции ограничены в целях сокращения его разме­ров и максимизации кол-ва кода, работающего как прикладная программа.

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

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

- задания и потоки;

- межпроцессные коммуникации;

- управление поддержкой ввода/вывода и прерываниями;

- сервисы набора главного компьютера и процессора.

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

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

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

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

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

Монолитные операционные системы

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

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

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

Микроядерные ОС в настоящее время разрабатываются чаще монолитных.