Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
119
Добавлен:
20.05.2015
Размер:
315.9 Кб
Скачать

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

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

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

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

Микроядро – это минимальная часть операционной системы, служащая основой модульных и переносимых расширений.

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

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

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

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

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

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

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

  • сервисы набора хоста и процессора.

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

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

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

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

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

Соседние файлы в папке Лекции_ОС