ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 17.06.2021

Просмотров: 121

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Лекция 7. Способы построения ОС.


1. Общие принципы построения операционных систем.

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

3. Архитектура Windows NT.




1. Общие принципы построения операционных систем


Многие реально существующие ОС разработаны и реализованы на основе иерархической структуры.






Каждый слой, или уровень, в структуре может использовать функции, предоставляемые ему более низким уровнем, как если бы они являлись частью реальной машины. Так уровень 0, часто называемый ядром ОС, имеет дело непосредственно с аппаратурой; уровень 1 имеет дело с интерфейсом, представленным уровнем 0 и т.д. Программы пользователя имеют дело с интерфейсом самого высокого уровня (в данном случае уровня 3), который представляет собой интерфейс пользователя.

Расположение уровней определяется взаимоотношением между выполнением или операциями. В общем случае функции каждого уровня могут обращаться лишь к функциям того же или более низкого уровня; таким образом, не должно быть внешних вызовов. В данной структуре программы управления файлами (уровень 3) для распределения буферов должны использовать менеджер памяти (уровень 2), а для чтения и записи блоков – супервизор ввода – вывода (уровень 1). Если управление памятью производится при помощи размещения страниц по запросу, то менеджер памяти для передачи страниц между реальной памятью и вспомогательной тоже должен вызвать супервизор ввода – вывода. Все уровни системы используют предоставляемые уровнем 0 функции планирования процессов и управления ресурсами.

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

Различные системы могут существенно отличаться друг от друга. Рассмотрим, например, программы обработку прерываний. Во многих системах обработки прерываний первого уровня (ОППУ) размещены ядре (уровень 0). После начальной обработки прерываний ОППУ может передать управление программе более высокого уровня; это исключение из правил, согласно которым внешнее вызовы недоступны. Так, например, ОППУ в случае прерывания по отсутствию страницы может сохранить информацию о состоянии, разрешить другие прерывания, а затем передать управления программе уровня 2.

В некоторых ОС иерархическое распределение функций в особых случаях сделано более сложным.

Иерархические системы различаются также правилами передачи управления с одного уровня на другой. В строгой иерархии каждый уровень может обращаться только к уровню, находящемуся непосредственно под ним. Так, уровень 3 может связаться только с уровнем 2. Если программе управления файлами в нашем примере необходимо вызвать супервизор ввода – вывода, то этот запрос будет передан с уровня 2 на уровень 1. Преимущества этого подхода заключается в простоте использования: каждый уровень взаимодействует только с одним интерфейсом. Однако такое ограничение может привести к потере эффективности, т.к. возрастает число вызовов, которые нужно сделать для достижения внутреннего уровня. В прозрачной иерархии каждый уровень может связываться непосредственно с интерфейсом любого более низкого уровня. Так, например, программа пользователя может обращаться к программам управления файлами уровня 3 или непосредственно вызывать функции супервизора ввода – вывода Уровня 1.


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

Виртуальная машина.


Под операционной системой ОС 1 работает три программы (протекает три процесса), под ОС 2 – один процесс, программа под ОС 3 – тестируется. Есть также программа пользователя 4, предназначенная для работы в режиме супервизора в качестве автономной программы, находящейся под собственным управлением. Все разновидности программ плюс автономная программа фактически работают на одной реальной машине. Однако они имеют дело не с ней, а с монитором виртуальной машины (МВМ), благодаря которому у каждой программы создается впечатление, что он работает на автономной машине. Таким образом, в то время как обычные пользователь обслуживаются традиционным способом (Р1…Р4), имеется возможность отлаживать новые программы, а также разрешить специальной программе в особых случаях работать в режиме супервизора.

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

На рисунке показана, каким образом создается подобная иллюзия.


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

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

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


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

Мультипроцессорные ОС.

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

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

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


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

Мультипроцессорные системы со слабо связанными процессорами относительно просты, поэтому каждый ресурс выделяется какому-нибудь одному процессору. С другой стороны, в некоторых мультипроцессорных системах допускается прямое распределение ресурсов между процессорами. Такая организация, называемая мультипроцессорной системой с сильно связанными процессорами, отчасти усложняет задачи операционной системы.


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

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

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

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



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


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


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

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

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

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

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

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