Архитектура операционных систем кратко

Обновлено: 05.07.2024

Наиболее общим подходом к структуризации операционной системы является разделение всех ее модулей на две группы: ядро и вспомогательные модули . Ядро выполняет все основные функции ОС и работает в особом – привилегированном – режиме.

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

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

Архитектура ОС, основанная на привилегированном ядре и приложениях пользователя, считается классической. Она используется, в частности, в большинстве вариантов ОС Unix и с определенными модификациями (см. п. 2.2) – в ОС Windows NT.

1.2. Ядро и вспомогательные модули ОС

 Ядро включает модули, выполняющие основные функции ОС:

управление вводом-выводом и файловая система;

интерфейс прикладного программирования API (Application Program Interface) для поддержки обращений к ядру из приложений.

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

 Вспомогательные модули по выполняемым функциям обычно подразделяются на следующие группы:

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

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

библиотеки процедур различного назначения для разработки приложений (математические функции, функции ввода-вывода и т.д.);

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

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

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

 Решение о том, является ли какая-либо программа частью ОС или нет, принимает производитель ОС. Так, самостоятельное приложение, имеющее спрос, может быть включено в состав ОС (например, Веб-браузер Internet Explorer), или, наоборот, модуль ОС может превратиться в отдельное приложение.

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

Рис. 5.1. Взаимодействие между ядром и другими модулями

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

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

пользовательский режим ( user mode ) – для работы приложений;

привилегированный режим , он же – режим ядра ( kernel mode ), или режим супервизора ( supervisor mode ) – для работы ОС или ее частей.

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

переключением процессора с задачи на задачу;

управлением устройствами ввода-вывода;

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

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

Если аппаратура (процессор) поддерживает хотя бы два уровня привилегий, то ОС может на этой основе создать программным способом сколь угодно развитую систему защиты и соответствующих прав доступа. Прямого соответствия между числом аппаратно реализуемых и программно реализуемых уровней привилегий нет. Так, на базе четырех уровней процессоров архитектуры х86 OS/2 строит трехуровневую, а Windows NT и Unix – двухуровневую систему привилегий.

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

1.4. Многослойная структура ОС

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

Система представляется как иерархия слоев.

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

Взаимодействие слоев осуществляется через посредство функций межслойного интерфейса .

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

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

 Многослойная структура ОС

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

Рис. 5.2. Трехслойная структура вычислительной системы

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

 Многослойная структура ядра

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

Рис. 5.3. Многослойная структура ядра ОС

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

Машино-зависимые модули – программные модули, в которых отображается специфика аппаратной платформы компьютера. В идеале этот слой полностью экранирует вышележащие слои от особенностей аппаратуры, т.е. позволяет делать модули вышележащих слоев машинно-независимыми (пригодными для всех типов платформ, поддерживаемых данной ОС). Примером может служить слой HAL (Hardware Abstraction Layer) в Windows NT/2000. На уровне HAL работа с устройством определенного типа (накопитель, видеоплата, мышь и т.п.) всегда описывается при помощи одного и того же заранее определенного набора функций. В случае, если устройство имеет иной набор функций (например, устаревший 3d-ускоритель может не поддерживать многих современных функций), драйвер обязан эмулировать стандартные функции с тем, чтобы ОС могла не заботиться о том, какое конкретно устройство установлено.

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

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

Интерфейс системных вызовов . Взаимодействует непосредственно с приложениями и систем-ными утилитами, образуя прикладной программный интерфейс ОС (API).

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

2.1. Концепция архитектуры

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

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

Рис. 5.4. Перенос функций ядра в пользовательское пространство:
а – классическая архитектура, б – микроядерная архитектура

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

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

Рис. 5.5. Реализация системного вызова в ОС с микроядерной архитектурой

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

Микроядерная архитектура используется, в частности, в некоторых вариантах ОС Unix и частично – в ОС Windows NT.

2.2. Преимущества и недостатки микроядерной архитектуры

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

3. Переносимость ОС

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

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

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

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

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

В итоге реально говорить не о переносимости вообще, а о переносимости в рамках нескольких аппаратных платформ.

 Принципы обеспечения переносимости

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

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

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

 Аппаратно-зависимый код должен быть сосредоточен (локализован) в нескольких модулях, а не распределен по всей системе.

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

Рис. 5.6. Иллюстрация переносимости ОС

Похожие документы:

Тема: Архитектура компьютеров. Основные характеристики компьютеров

"Архитектура эвм"

Тема: "Архитектура ЭВМ" Разделы учебника: § 7, 8, 9. Основные цели: . устройстве, о функциях основных узлов. Заложить ос­нову для будущего более подробного . дисков, закрепленных на об­щей оси. Соответственно, число магнитных поверхно­стей .

Архитектура аппаратно-программных средств распределенной обработки информации для интранет-технологии

. по предмету системное программное обеспечение Тема: Архитектура аппаратно-программных средств распределенной обработки . UNIX. Фирмам-поставщикам различных вариантов ОС UNIX в результате длительной работы удалось .

Лабораторная работа №4. Системная архитектура и строение ядра ос windows 9 X и Windows nt. Ядро Windows 9 X

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

2. Классификация ос эволюция ос

. ОС (как защитник и ядро). ОС как система управления ресурсами. Тема 2. Классификация ОС Эволюция ОС. Классификация ОС . времени. 5. Многопроцессорный режим работы 7. Модульная архитектура ОС Windows и Linux 1. Модульная структура построения .

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

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

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

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

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

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

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

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

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

Недостатки:

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

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

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

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

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

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

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

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

На архитектуру ранних операционных систем обращалось мало внимания: во-первых, ни у кого не было опыта в разработке больших программных систем, а во-вторых, проблема взаимозависимости и взаимодействия модулей недооценивалась. В подобных монолитных ОС почти все процедуры могли вызывать одна другую. Такое отсутствие структуры было несовместимо с расширением операционных систем. Первая версия ОС OS/360 была создана коллективом из 5000 человек за 5 лет и содержала более 1 млн строк кода. Разработанная несколько позже операционная система Mastics содержала к 1975 году уже 20 млн строк [17]. Стало ясно, что разработка таких систем должна вестись на основе модульного программирования.

Большинство современных ОС представляют собой хорошо структурированные модульные системы, способные к развитию, расширению и переносу на новые платформы. Какой-либо единой унифицированной архитектуры ОС не существует, но известны универсальные подходы к структурированию ОС. Принципиально важными универсальными подходами к разработке архитектуры ОС являются [5, 10, 13, 17]:

  • модульная организация;
  • функциональная избыточность;
  • функциональная избирательность;
  • параметрическая универсальность;
  • концепция многоуровневой иерархической вычислительной системы, по которой ОС представляется многослойной структурой;
  • разделение модулей на две группы по функциям: ядро – модули, выполняющие основные функции ОС, и модули, выполняющие вспомогательные функции ОС;
  • разделение модулей ОС на две группы по размещению в памяти вычислительной системы: резидентные, постоянно находящиеся в оперативной памяти, и транзитные, загружаемые в оперативную память только на время выполнения своих функций;
  • реализация двух режимов работы вычислительной системы: привилегированного режима (режима ядра – Kernel mode), или режима супервизора (supervisor mode), и пользовательского режима (user mode), или режима задачи (task mode);
  • ограничение функций ядра (а следовательно, и количества модулей ядра) до минимального количества необходимых самых важных функций.

Первые ОС разрабатывались как монолитные системы без четко выраженной структуры (рис. 1.2).

Для построения монолитной системы необходимо скомпилировать все отдельные процедуры, а затем связать их вместе в единый объектный файл с помощью компоновщика (примерами могут служить ранние версии ядра UNIX или Novell NetWare). Каждая процедура видит любую другую процедуру (в отличие от структуры, содержащей модули, в которой большая часть информации является локальной для модуля, и процедуры модуля можно вызвать только через специально определенные точки входа).

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


Рис. 1.2.Монолитная архитектура

Такая организация ОС предполагает следующую структуру [13]:

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

В этой модели для каждого системного вызова имеется одна сервисная процедура. Утилиты выполняют функции, которые нужны нескольким сервисным процедурам. Это деление процедур на три слоя показано на рис. 1.3.

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


Рис. 1.3.Структурированная архитектура

Особый класс функций ядра служит для поддержки приложений, создавая для них так называемую прикладную программную среду. Приложения могут обращаться к ядру с запросами – системными вызовами – для выполнения тех или иных действий, например, открытие и чтение файла, получение системного времени, вывода информации на дисплей и т.д. Функции ядра, которые могут вызываться приложениями, образуют интерфейс прикладного программирования – API (Application Programming Interface).

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

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

Вспомогательные модули обычно подразделяются на группы:

  • утилиты – программы, выполняющие отдельные задачи управления и сопровождения вычислительной системы;
  • системные обрабатывающие программы – текстовые и графические редакторы (Paint, Imaging в Windows 2000), компиляторы и др.;
  • программы предоставления пользователю дополнительных услуг (специальный вариант пользовательского интерфейса, калькулятор, игры, средства мультимедиа Windows 2000);
  • библиотеки процедур различного назначения, упрощения разработки приложений, например, библиотека функций ввода-вывода, библиотека математических функций и т.п.

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

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

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


Рис. 1.4.Многослойная структура ОС

В данной схеме выделены следующие слои.

1. Средства аппаратной поддержки ОС. Значительная часть функций ОС может выполняться аппаратными средствами [10]. Чисто программные ОС сейчас не существуют. Как правило, в современных системах всегда есть средства аппаратной поддержки ОС, которые прямо участвуют в организации вычислительных процессов. К ним относятся: система прерываний, средства поддержки привилегированного режима, средства поддержки виртуальной памяти, системный таймер, средства переключения контекстов процессов (информация о состоянии процесса в момент его приостановки), средства защиты памяти и др.

2. Машинно-зависимые модули ОС. Этот слой образует модули, в которых отражается специфика аппаратной платформы компьютера. Назначение этого слоя – экранирование вышележащих слоев ОС от особенностей аппаратуры (например, Windows 2000 – это слой HAL (Hardware Abstraction Layer), уровень аппаратных абстракций).

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

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

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

Повышение устойчивости ОС обеспечивается переходом ядра в привилегированный режим. При этом происходит некоторое замедление выполнения системных вызовов. Системный вызов привилегированного ядра инициирует переключение процессора из пользовательского режима в привилегированный, а при возврате к приложению – обратное переключение. За счет этого возникает дополнительная задержка в обработке системного вызова (рис. 1.5). Однако такое решение стало классическим и используется во многих ОС (UNIX, VAX, VMS, IBM OS/390, OS/2 и др.).


Рис. 1.5.Обработка системного вызова

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

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


Рис. 1.6.Переход к микроядерной архитектуре

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


Рис. 1.7.Клиент-серверная архитектура

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


Рис. 1.8.Обработка системного вызова в микроядерной архитектуре

В то же время признаны следующие достоинства микроядерной архитектуры [17]:

  • единообразные интерфейсы;
  • простота расширяемости;
  • высокая гибкость;
  • возможность переносимости;
  • высокая надежность;
  • поддержка распределенных систем;
  • поддержка объектно-ориентированных ОС.

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

Может быть, это покажется парадоксальным, но есть и такой подход к микроядерной ОС, как уменьшение микроядра.

Для возможности представления о размерах микроядер операционных систем в ряде источников [17] приводятся такие данные:

  • типичное микроядро первого поколения – 300 Кбайт кода и 140 интерфейсов системных вызовов;
  • микроядро ОС L4 (второе поколение) – 12 Кбайт кода и 7 интерфейсов системных вызовов.

В современных операционных системах различают следующие виды ядер.

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

2. Микроядро (МЯ) предоставляет только элементарные функции управления процессами и минимальный набор абстракций для работы с оборудованием. Большая часть работы осуществляется с помощью специальных пользовательских процессов, называемых сервисами. В микроядерной операционной системе можно, не прерывая ее работы, загружать и выгружать новые драйверы, файловые системы и т. д. Микроядерными являются ядра ОС Minix и GNU Hurd и ядро систем семейства BSD. Классическим примером микроядерной системы является Symbian OS. Это пример распространенной и отработанной микроядерной (a начиная c версии Symbian OS v8.1, и наноядерной) операционной системы.

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

4. Монолитное ядро (МнЯ) предоставляет широкий набор абстракций оборудования. Все части ядра работают в одном адресном пространстве. МнЯ требуют перекомпиляции при изменении состава оборудования. Компоненты операционной системы являются не самостоятельными модулями, а составными частями одной программы. МнЯ более производительно, чем микроядро, поскольку работает как один большой процесс. МнЯ является большинство Unix-систем и Linux. Монолитность ядер усложняет отладку, понимание кода ядра, добавление новых функций и возможностей, удаление ненужного, унаследованного от предыдущих версий кода. Разбухание кода монолитных ядер также повышает требования к объёму оперативной памяти.

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

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

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

003. Архитектура операционной системы — Виктор Ашик


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

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

Любая сложная система должна иметь понятную и рациональную структуру, то есть разделяться на части — модули, имеющие вполне законченное функциональное…

Наиболее общим подходом к структуризации операционной системы является разделение всех ее модулей на две группы:

— базовые функции ОС (управление процессами, памятью, устройствами ввода/вывода;

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

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

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

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

— системные обрабатывающие программы – текстовые и графические редакторы, компиляторы, компоновщики, отладчики;

— программы дополнительных услуг – специальный вариант пользовательского интерфейса, калькулятор, игры;

— библиотеки процедур – библиотека математических функций, функций ввода/вывода и т. д.

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

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

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

⌨⌰ø

Рис. 1.1. Монолитная структура ОС

Для построения монолитной системы необходимо скомпилировать все отдельные процедуры, а затем связать их вместе в единый объектный файл с помощью компоновщика. Монолитные системы могут быть немного структурированными. Такая организация ОС предполагает следующую структуру:

1. Главная программа, которая вызывает требуемые сервисные процедуры.

2. Набор сервисных процедур, реализующих системные вызовы.

3. Набор утилит, обслуживающих сервисные процедуры.

В этой модели для каждого системного вызова имеется одна сервисная процедура. Утилиты выполняют функции, которые нужны нескольким сервисным процедурам. Это деление процедур на три слоя показано на рисунке 1.2.

img00069

Рис.1 .2. Простая структуризация монолитной ОС

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

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

Многослойная модель ядра

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

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

— машинно-зависимые компоненты ОС; в идеале этот слой полностью экранирует вышележащие слои ядра от особенностей аппаратуры (пример – слой HAL ОС Windows NT);

— базовые механизмы ядра, этот слой выполняет наиболее примитивные операции ядра, реализует решения о распределении ресурсов, принятые на более высоком уровне;

— менеджеры ресурсов; слой состоит из мощных функциональных модулей, реализующих стратегические задачи по управлению основными ресурсами ОС;

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

Примеры многоуровневых ОС

Многоуровневый подход был использован при реализации следующих ОС:

1-4

Рис. 1.4. Структура ОС UNIX

1-5

Рис. 1.5. Ядро ОС UNIX

Пример реализации многоуровневой Windows

1-6

Рис. 1.6. СтруктураWindows 2000

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

Микроядерная архитектура (модель клиент-сервер)

Поддержка этого механизма является одной из главных задач микроядра.

image004

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

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

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

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