Лекция

по курсу «Системное программное обеспечение»

доцента кафедры ИВТ Гродненского госуниверситета

канд. техн. наук Ливак Елены Николаевны

 

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

 

Напомним, необходимые основные моменты.

 

          Микропроцессоры Intel x86/Pentium аппаратно поддерживают 4 уровня привилегий (режима): 0..3.

Большинство ОС поддерживают двухуровневую систему привилегий: привилегированный режим (режим ядра, пространство ядра) и пользовательский режим (пространство пользователя). (Например, Windows NT, UNIX)

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

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

________________________________________________________________________________

 

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

________________________________________________________________________________

 

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

________________________________________________________________________________

 

Уточним перечисленные моменты.

 

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

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

Единой архитектуры ОС не существует, но существуют универсальные подходы к структурированию ОС.

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

Þ    модули, выполняющие основные функции ОС - ядро ОС;

Þ    модули, выполняющие вспомогательные функции ОС.

 

Модули ядра выполняют базовые функции ОС

·        управление процессами,

·        управление памятью,

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

 

Функции, входящие в состав ядра можно разделить на два класса.

 

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

 

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

 

Функции модулей ядра - наиболее часто используемые функции ОС

Þ Скорость выполнения этих функций определяет производительность всей системы в целом

Þ Все (большинство) модули ядра являются резидентными.

 

Вспомогательные модули ОС

 

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

 

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

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

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

·        программы предоставления пользователю дополнительных услуг - специальный вариант пользовательского интерфейса, калькулятор, некоторые игры (какие, например, поставляются в составе ОС???);

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

(Замечание. Чаще эти программы являются частью систем программирования).

 

!

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

 

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

 

Обратим внимание на то, что многие модули ОС оформлены как обычные приложения.Решение о том, является ли какая-либо программа частью ОС или нет, принимает производитель ОС. Некоторая программа может существовать определенное время как пользовательское приложение, а потом стать частью ОС (например, Web-браузер компании Microsoft - сначала поставлялся как отдельное приложение, затем стал частью ОС Windows, затем по решению суда снова превратился (уже?) в самостоятельное приложение).

________________________________________________________________________________

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

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

 

!

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

 

Вспомогательные модули ОС

 

Приложения пользователей

 
 

 

 

 

 

Привилегированный режим

 
 

 

 

 


!

 

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

 

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

 

Необходимо обратить внимание, на то, что работа системы с привилегированным ядром замедляется за счет замедления выполнения системных вызовов.

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

Продемонстрируем это ни рисунке.

приложение

 

приложение

 
 

 

 

 

 

 

 

 

 


t - время переключения режимов

***

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

Ее используют многие популярные ОС (UNIX, VAX VMS, IBM OS/390, OS/2, Windows NT (c модификациями)).

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

Þ ??? что лучше, если, например, в ОС NetWare ядро и специфические загружаемые модули NLM работают в привилегированном режиме, а что хуже???

Очевидно, что в одном режиме работа идет и в ОС, разработанных для процессоров, не поддерживающих привилегированный режим. Например, Intel 8088/86. ОС MS-DOS состоит из двух модулей msdos.sys и io.sys (по сути это ядро системы, хотя так никогда не называлось). К ним с системными вызовами обращаются командный интерпретатор command.com, системные утилиты и приложения.

Þ Приложения вполне могут разрушать основные модули ОС.

 

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

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

ü      Экономия ОП. (Постоянно в ОП располагаются только самые необходимые коды.)

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

 

 

РЕЗЮМЕ по простейшей структурной организации ОС

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

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

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

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

 

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

 

Является альтернативой классическому способу построения ОС.

Суть микроядерной архитектуры состоит в следующем.

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

 

Микроядро защищено от остальных частей ОС и приложений.

В состав микроядра входят обычно

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

§         модули, выполняющие базовые функции ядра:

-         управление процессами (только код для переключения процессора с процесса на процесс);

-         обработка прерываний (перехват аппаратных прерываний);

-         управление виртуальной памятью (установка регистров блока управления памятью);

-         управление устройствами ввода-вывода (загрузка или чтение регистров устройств);

-         пересылка сообщений;

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

 

!

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

(Напомним, что в этом заключается принцип функциональной избирательности)

 

 

 

 

 

 

 

 

 

 

 

 

 

 


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

Они также оформлены в виде приложений.

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

 

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

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

!

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

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

 

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

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


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

 

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

ü      обладают переносимостью

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

ü      высокая степень расширяемости

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

ü      достаточная надежность

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

ü      поддержка распределенных вычислений

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

 

!

Основной (и по сути единственный) недостаток микроядерной архитектуры -

снижение производительности.

 

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

приложение

 

приложение

 
 

 

 

 

 

 

 

 

 


А при микроядерной организации - четырьмя:

 

приложение

 

Сервер ОС

 

приложение

 
 

 

 

 

 

 

 

 

 


Однако, при современных скоростях процессоров снижение производительности в 20% не считается фатальным.

 

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

 

 

РЕЗЮМЕ по микроядерной архитектуре ОС

Þ    Микроядерная архитектура является альтернативой классическому способу построения ОС.

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

Þ    Микроядерные ОС обладают переносимостью, расширяемостью, надежностью, поддерживают распределенные приложения. За эти достоинства приходится платить снижением производительности.

 

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

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

 

Тенденции развития ОС

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

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

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