Архитектурные особенности ос кратко

Обновлено: 02.07.2024

Перейдем к рассмотрению архитектуры операционной системы. Вспомним состав операционной системы, рассмотренный ранее в лекции « Понятие операционной системы «. Операционная система состоит из четырех основных частей:

Перейдем к рассмотрению архитектуры операционной системы, в частности архитектуры ее ядра.

Архитектура Операционной системы — ЯДРО

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

Монолитное ядро (все вместе)

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

  • Планирование процессов
  • Управление файловой системой
  • Сетевое взаимодействие
  • Драйверы устройств
  • Управление памятью

Преимущества:

Производительность — в виду того, что количество переключений из контекста режима пользователя в режим ядра сведено к минимуму;

Недостатки:

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

Монолитный подход — простейший Первые ОС были монолитными, в них:

  • Нет определенной структуры
  • Нет уровней
  • Нет разделения на модули

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

  • Больше функциональности, меньше места (в то время было очень маленькое адресное пространство)
  • Разделение на уровни не было, программы могли работать с оборудованием напрямую, могли сами вызывать нужные драйверы

Состав MS-DOS

Итак, мы выяснили, что простая неорганизованная структура это — плохо.

Возможно улучшение – операционная система разбивается на ряд уровней (слоев) – каждый следующий уровень базируется на предыдущем(вводится понятие иерархии уровней)

  • Самый нижний – аппаратное обеспечение
  • Самый верхний – интерфейс пользователя

Каждый уровень использует только функции (сервисы), предоставляемые нижестоящим уровнем.

Все (или почти все уровни) работают в режиме ядра Примеры таких ОС – MULTICS, VAX\VMCИ

Простой поуровневый подход

Разбиение на уровни помогает разбить программирование операционной системы, становится легче программировать.

Поуровневый подход используется оригинальным ядром Unix:

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

Современные ОС более четко разделены на уровни.

Ядро ОС Unix

Поуровневый подход позволяет независимо работать, менять и отлаживать ОС.

Если уровни строго разделены:

  • + можно над ними независимо работать
  • + можно независимо заменять

Например, сетевой стек TCP/IP является примером строгого разделения на уровни (уровни все четко выверены и подробно описаны)

  • как определить эти слои (непростая задача)
  • разделение на уровни возможно только при наличии иерархии вызовов и отсутствии циклических зависимостей.

Циклические зависимости

Пример

Возьмем драйвер диска:

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

Поэтому в этом случае данная архитектурная модель не работает

Чем больше таких уровней, тем больше возникает проблемных ситуаций.

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

Дальнейшим этапом развития придумали МИКРОЯДРО.

МИКРОЯДРО

Микроядро – ядро, содержащее только самые необходимые функции.

Идея: минимизировать само ядро, вынести как можно функциональности в режим пользователя (т.е. исполнять эту функциональность в виде обычных процессов).

Многие сервисы становятся пользовательскими процессами:

  • Драйверы устройств,
  • Файловые системы,
  • Менеджер виртуальной памяти,
  • Оконные системы графического интерфейса пользователя,
  • Службы безопасности

На основе MACH сделаны, среди прочих, Mac OSX (комп.Apple), GNUHurd.

Структура микроядра

Предоставляет доступ к оборудованию

Фактически реализует клиент-серверную архитектуру на одном компьютере.

Преимущества микроядра

Недостатки микроядра

Решение 1: реинтеграция таких сервисов обратно в ядро (интегрировать некоторые сервисы в ядро и “убрать” переключения

  • Улучшается производительность(меньше переключений, одно адресное пространство)
  • Такое ядро было сделано в ядре Mach

Решение 2: сделать ядро еще меньше – экспериментальные архитектуры (нано-ядра, пико-ядра).

Минимальная функциональность в микроядре

1) Низкоуровневое управление памятью
-Отображение страниц на физическую память

— Все остальные механизмы предоставляются сервисами, работающими в режиме пользователя

  • Защита адресного пространства
  • Механизмы замещения страниц
  • Управление виртуальной памятью

2) Межпроцессорное взаимодействие

3)Ввод/вывод и обработка прерываний.

Модули ядра

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

Удобно для разработки (каждый может разрабатывать свой модуль без необходимости трогать основную систему).

  • Модули находятся в режиме ядра (уменьшаются затраты на взаимодействие модулей между собой)
  • Компромисс ради производительности.
  • Под разные задачи необходимо выбирать ОС

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

Многие ОС реализуют поддержку модульности

Пример – ОС Linux. Классифицируют как монолитное ядро.

  • Каждый ключевой компонент – отдельный модуль
  • Взаимодействие происходит через определенные интерфейсы
  • Загружаются модули по требованию

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

Операционная система Linux

Линус Бенедикт Торвальдс

Линус Бенедикт Торвальдс

Создатель Linux — Линус Бенедикт Торвальдс родился 28 декабря 1969 в Хельсинки — финский программист. Воодушевлённый прочтением книги Эндрю Таненбаума, посвящённой операционной системе Minix, Линус создал Linux — ядро операционной системы GNU/Linux, являющейся на данный момент самой распространённой из свободных операционных систем.

Уникальность данной ОС – открытый исходный код, он разрабатывается сообществом, поэтому данная ОС работает на очень многих существующих платформах (архитектуры процессора таких как Intel x86, x86-64, PowerPC, ARM, Alpha AXP, Sun SPARC, Motorola 68000, Hitachi SuperH, IBM S/390, MIPS, HP PA-RISC, AXIS CRIS, Renesas M32R, Atmel AVR32, Renesas H8/300, NEC V850, Tensilica Xtensa и многих других).

Сам разработчик сегодня заявляет, что ядро ОС стало настолько большим, что его уже трудно поддерживать, оно недостаточно структурировано.

Операционная система Windows NT

Уникальная операционная система с точки зрения архитектуры. В ней есть все: послойность, модульность и микроядро (используется гибридное ядро).

Уникальная система и с точки зрения теории – гениально структурированное ядро ОС. В структуре спокойно разберется один человек.

В ядре сосредоточены ключевые компоненты, а то, что можно было вынести без потери производительности – вынесено в режим пользователя.

На основе этого ядра сделаны Windows 2000/XP/7/8/

Windows NT первоначально работала на 5 платформах.

В дальнейшем мы будем рассматривать данную операционную систему более подробно.

Состав ОС Windows NT

Состав ОС Windows NT

Критерии выбора операционной системы

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

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

МОНОЛИТНОЕ ЯДРО
По сути дела, операционная система это обычная программа, поэтому было бы логичным и организовать его так же, как устроено большинство программ, то есть составить из процедур и функций. В этом случае компоненты операционной системы являются не самостоятельными модулями, а составными частями одной большой программы. Такая структура операционной системы называется монолитным ядром (monolithic kernel). Монолитное ядро представляет собой набор процедур, каждая из которых может вызвать каждую. Все процедуры работают в привилегированном режиме. Таким образом, монолитное ядро это такая схема операционной системы, при которой все ее компоненты являются составными частями одной программы, используют общие структуры данных и взаимодействуют друг с другом путем непосредственного вызова процедур. Для монолитной операционной системы ядро совпадает со всей системой.

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

Монолитное ядро старейший способ организации операционных систем. Примером систем с монолитным ядром является большинство Unix-систем.

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

АРХИТЕКТУРНЫЕ ОСОБЕННОСТИ ОС

МНОГОУРОВНЕВЫЕ СИСТЕМЫ

Продолжая структуризацию, можно разбить всю вычислительную систему на ряд более мелких уровней с хорошо определенными связями между ними, так чтобы объекты уровня N могли вызывать только объекты из уровня N-1. Нижним уровнем в таких системах обычно является hardware, верхним уровнем интерфейс пользователя. Чем ниже уровень, тем более привилегированные команды и действия может выполнять модуль, находящийся на этом уровне. Впервые такой подход был применен при создании системы THE (Technishe Hogeschool Eindhoven) Дейкстрой и его студентами в 1968 г. Эта система имела следующие уровни:

1.Планирование задач и процес.

2.Упр. памятью

3.Драйвер у-ва связи оператора и консоли

4.Управление вводом-выводом

5.Интерфейс пользователя

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

АРХИТЕКТУРНЫЕ ОСОБЕННОСТИ ОС

ВИРТУАЛЬНАЯ МАШИНА

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

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

АРХИТЕКТУРНЫЕ ОСОБЕННОСТИ ОС

МИКРОЯДЕРНАЯ АРХ.

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

АРХИТЕКТУРНЫЕ ОСОБЕННОСТИ ОС

СМЕШАННЫЕ СИСТЕМЫ

Все рассмотренные подходы к построению операционных систем имеют свои преимущества и недостатки. В большинстве случаев современные операционные системы используют различные комбинации этих подходов.

Примером смешанного подхода может служить возможность запуска операционной системы с монолитным ядром под управлением микроядра. Так устроены 4.4BSD и MkLinux, основанные на микроядре Mach. Микроядро обеспечивает управление виртуальной памятью и работу низкоуровневых драйверов. Все остальные функции, в том числе взаимодействие с прикладными программами, осуществляется монолитным ядром. Данный подход возник в результате попыток использовать преимущества микроядерной архитектуры, сохраняя по возможности хорошо отлаженный код монолитного ядра.

Таким образом, Windows NT можно с полным правом назвать гибридной операционной системой.

КЛАССИФИКАЦИЯ ОС

Существует несколько схем классификации операционных систем. Ниже приведена классификация по некоторым признакам с точки зрения пользователя.

Реализация многозадачности

По числу одновременно выполняемых задач операционные системы могут быть разделены на два класса:

многозадачные (Unix, OS/2, Windows).

однозадачные (например, MS-DOS) и

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

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

Поддержка многопользовательского режима.

По числу одновременно работающих пользователей ОС можно разделить на:

однопользовательские (MS-DOS, Windows 3.x);

многопользовательские (Windows NT, Unix).

Наиболее существенно отличие заключается в наличии у многопользовательских систем механизмов защиты персональных данных каждого пользователя.

Многопроцессорная обработка

Многопроцессорные системы состоят из двух или более центральных процессоров, осуществляющих параллельное выполнение команд. Поддержка мультипроцессирования является важным свойством ОС и приводит к усложнению всех алгоритмов управления ресурсами. Многопроцессорная обработка реализована в таких ОС, как Linux, Solaris, Windows NT и в ряде других.

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

Системы реального времени.

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

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

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

ПОНЯТИЕ ПРОЦЕССА

Слово “задание” в пользовательском смысле не может быть использовано для описания происходящего в вычислительной системе.

Это происходит потому, что термины “программа” и “задание” предназначены для описания статических, неактивных объектов. Программа же в процессе исполнения является динамическим, активным объектом. По ходу ее работы компьютер обрабатывает различные команды и преобразует значения переменных. Для ее выполнения операционная система должна выделить определенное количество оперативной памяти, закрепить за ней определенные устройства ввода-вывода или файлы (откуда должны поступать входные данные и куда нужно доставить полученные результаты), то есть зарезервировать определенные ресурсы из общего числа ресурсов всей вычислительной системы. Их количество и конфигурация могут изменяться с течением времени. Для описания таких активных объектов внутри компьютерной системы вместо терминов “программа” и “задание” мы будем использовать новый термин “процесс”.

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

СОСТОЯНИЯ ПРОЦЕССА

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

Как видим, каждый процесс может находиться как минимум в двух состояниях: процесс исполняется и процесс не исполняется.

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

Такая модель является очень грубой. Она не учитывает, в частности то, что процесс, выбранный для исполнения, может все еще ждать события, из-за которого он был приостановлен, и реально к выполнению не готов. Для того чтобы избежать такой ситуации, разобьем состояние процесс не исполняется на два новых состояния: готовность и ожидание (см. рисунок 2.2).

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

либо он заканчивает свою деятельность;

либо он не может продолжать свою работу, пока не произойдет некоторое событие, и операционная система переводит его в состояние ожидание;

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

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

Найди готовую курсовую работу выполненное домашнее задание решённую задачу готовую лабораторную работу написанный реферат подготовленный доклад готовую ВКР готовую диссертацию готовую НИР готовый отчёт по практике готовые ответы полные лекции полные семинары заполненную рабочую тетрадь подготовленную презентацию переведённый текст написанное изложение написанное сочинение готовую статью

Сделан в Word, графики в электронном виде с ссылками. Курсовая работа. Вариант 33. Гидравлический расчет гидросистемы стенда для испытания центробежных насосов.

3.1. Архитектурные особенности ОС

Архитектурные особенности ОС

3.1.1. Монолитное ядро

Монолитное ядро

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

· каждая процедура может вызвать каждую;

· все процедуры работают в привилегированном режиме;

Рекомендуемые материалы

· все части монолитного ядра работают в одном адресном пространстве;

· сборка (компиляция) ядра осуществляется отдельно для каждого компьютера, при установке, добавлении или исключении отдельных компонент требуется перекомпиляция;

· старейший способ организации ОС.

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

Примером систем с монолитным ядром служит большинство Unix–подобных систем, таких как BSD или Linux.

3.1.2. Микроядерная архитектура

Микроядерная архитектура

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

Рисунок 2 – Микроядерная архитектура операционной системы

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

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

К преимуществам построения ОС в данной архитектуре относят:

· упрощенное добавление и отладка компонентов ОС без необходимости перезапуска системы за счет высокой степени модульности ядра;

· возможность без прерывания работы системы, загружать и выгружать новые драйверы, файловые системы и т.д.

· возможность отладки компонентов ядра с помощью обычных программных средств;

· повышенная надежность системы (ошибка на уровне непривилегированной программы менее опасна, чем отказ на уровне режима ядра).

К недостаткам построения ОС в данной архитектуре относят:

3.1.3. Многоуровневые системы

Многоуровневые системы

Обеспечивая строгую структуризацию, можно представить всю вычислительную систему в виде ряда уровней с хорошо определенными связями между ними. При этом объекты уровня N могут вызывать только объекты уровня N-1. Чем ниже уровень, тем более привилегированные команды и действия может выполнять модуль, находящийся на этом уровне. Впервые такой подход был применен при создании системы THE (Technishe Hogeschool Eindhoven) в 1968 г. Дейкстрой (Dijkstra) и его студентами (рис. 3).

Рисунок 3 – Структура системы THE

Вычислительные системы, реализованные в подобной архитектуре, называют многоуровневыми системами (англ. layered systems).

В качестве достоинства многоуровневых систем отмечают:

· простоту реализации (за счет того, что при использовании операций нижнего слоя не нужно знать, как они реализованы, нужно лишь понимать, что они делают);

· простоту тестирования (отладка осуществляется послойно и при возникновении ошибки всегда легко локализовать ошибку);

· простоту модификации (при необходимости можно заменить лишь один слой, не трогая остальные).

К недостаткам относят:

· сложность разработки (непросто верно определить порядок и состав каждого из слоев);

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

3.1.4. Виртуальные машины

Виртуальные машины

Виртуальной машиной (англ. virtual machine) называют программную или аппаратную среду, исполняющую некоторый код (например, байт-код или машинный код реального процессора). Зачастую виртуальная машина эмулирует работу реального компьютера. На виртуальную машину, так же как и на реальный компьютер можно инсталлировать ОС, у виртуальной машины может быть BIOS, оперативная память, жёсткий диск (выделенное место на жёстком диске реального компьютера), могут эмулироваться периферийные устройства. На одном компьютере может функционировать несколько виртуальных машин. На рис. 4 представлена обобщенная структура некоторой виртуальной машины с тремя различными ОС.

Рисунок 4 – Обобщенная структура некоторой виртуальной машины

Недостатками реализации ОС в подобных архитектурах является снижение эффективности виртуальных машин по сравнению с реальным компьютером, и, как правило, их громоздкость. Преимуществом является использование в рамках одной вычислительной системы программ, созданных для разных ОС. Примерами ОС, реализованных в подобной архитектуре, являются CP/CMS (VM/370) для семейства машин IBM/370, VMWare Workstation компании VMWare.

3.1.5. Смешанные системы

Смешанные системы

В большинстве случаев современные ОС используют различные комбинации подходов, рассмотренных в пп. 2.1.1-2.1.4, реализуя смешанные (гибридные) ОС. Например, ядро ОС Linux представляет собой монолитную систему с элементами микроядерной архитектуры. Системы 4.4BSD и MkLinux – монолитные ОС, работающие на микроядре Mach (микроядро обеспечивает управление виртуальной памятью и работу низкоуровневых драйверов; остальные функции, в том числе взаимодействие с прикладными программами, осуществляется монолитным ядром). Совместно элементы микроядерной архитектуры и элементы монолитного ядра используются в ядре Windows NT:

· все компоненты ядра работают в одном адресном пространстве и активно используют общие структуры данных.

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

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

Моноли?тное ядро? — классическая и, на сегодняшний день, наиболее распространённая архитектура ядер операционных систем. Монолитные ядра предоставляют богатый набор абстракций оборудования. Все части монолитного ядра работают в одном адресном пространстве.

Старые монолитные ядра требовали перекомпиляции при любом изменении состава оборудования. Большинство современных ядер, такие как OpenVMS, Linux, FreeBSD, NetBSD и Solaris, позволяют во время работы динамически (по необходимости) подгружать и выгружать модули, выполняющие часть функций ядра. Модульность ядра осуществляется на уровне бинарного образа, а не на архитектурном уровне ядра, так как динамически подгружаемые модули загружаются в адресное пространство ядра и в дальнейшем работают как интегральная часть ядра. Модульные монолитные ядра не следует путать с архитектурным уровнем модульности, присущим микроядрам и гибридным ядрам. Практически, динамическая загрузка модулей — это просто более гибкий способ изменения образа ядра во время выполнения — в отличие от перезагрузки с другим ядром. Модули позволяют легко расширить возможности ядра по мере необходимости. Динамическая подгрузка модулей помогает сократить размер кода, работающего в пространстве ядра, до минимума, например, свести к минимуму отпечаток ядра для встраиваемых устройств с ограниченными аппаратными ресурсами.

Многоуровневые системы (Layered systems)

Продолжая структуризацию, можно разбить всю вычислительную систему на ряд более мелких уровней с хорошо определенными связями между ними, так чтобы объекты уровня N могли вызывать только объекты уровня N-1. Нижним уровнем в таких системах обычно является hardware, верхним уровнем – интерфейс пользователя. Чем ниже уровень, тем более привилегированные команды и действия может выполнять модуль, находящийся на этом уровне. Впервые такой подход был применен при создании системы THE (Technishe Hogeschool Eindhoven) Дейкстрой (Dijkstra) и его студентами в 1968 г. Эта система имела следующие уровни:

Рис. 1.2. Слоеная система THE

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

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

Рис. 1.3. Вариант виртуальной машины

Первой реальной системой такого рода была система CP/CMS, или VM/370, как ее называют сейчас, для семейства машин IBM/370.

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

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

Рис. 1.4. Микроядерная архитектура операционной системы

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

Классическим примером микроядерной ОС является Symbian OS. Это пример распространенной и отработанной микроядерной (a начиная c версии Symbian OS v8.1, и наноядерной) операционной системы.

Создателям Symbian OS удалось совместить эффективность и концептуальную стройность, несмотря на то, что современные версии этой системы предоставляют обширные возможности, в том числе средства для работы c потоковыми данными, стеками протоколов, критичными к латентности ядра, графикой и видео высокого разрешения. Разработчики Symbian вынесли практически все прикладные (т. e. выходящие за пределы компетенции ядра) задачи в модули-серверы, функционирующие в пользовательском адресном пространстве.

В ОС Windows NT версий 3.х микроядерная архитектура с сервисным процессом использовалась для подсистемы графики и пользовательского интерфейса. В частности, драйвер графической аппаратуры загружался в контекст сервисного процесса, а не ядра. Начиная с версии 4, от этого отказались, сервисный процесс сохранился только для управления консольными окнами командной строки, а собственно графическая подсистема вместе с драйвером аппаратуры (в том числе трёхмерной графики) переместилась в специально обособленный регион ядра ОС.

ОС Windows CE (и созданные на её основе сборки, такие, как Windows Mobile), будучи практически полностью совместимой (как подмножество) с Windows NT по вызовам и методам программирования приложений, тем не менее полностью отличается от Windows NT по внутренней архитектуре и является микроядерной ОС с выносом всех драйверов устройств, сетевых стеков и графической подсистемы в сервисные процессы.

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

Другим примером смешанного подхода может служить возможность запуска операционной системы с монолитным ядром под управлением микроядра. Так устроены 4.4BSD и MkLinux, основанные на микроядре Mach. Микроядро обеспечивает управление виртуальной памятью и работу низкоуровневых драйверов. Все остальные функции, в том числе взаимодействие с прикладными программами, осуществляется монолитным ядром. Данный подход сформировался в результате попыток использовать преимущества микроядерной архитектуры, сохраняя по возможности хорошо отлаженный код монолитного ядра.

Таким образом, Windows NT можно с полным правом назвать гибридной операционной системой.

Существует несколько схем классификации операционных систем. Ниже приведена классификация по некоторым признакам с точки зрения пользователя.

Статьи к прочтению:

Лекция 1: Особенности ОС MeeGo


Похожие статьи:

Операционная система Microsoft Windows XP, создана на основе технологии NT и является прямой наследницей системы Windows 2000. Вместе с тем, все лучшие…

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

Читайте также: