Занятие 4. Базовые понятия архитектуры операционных систем

План занятия:

· Механизм и политика

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

· Системное программное обеспечение

· Монолитные системы

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

· Системы с микроядром

 

Механизм и политика

В ОС прежде необходимо выделить набор фундаментальных возможностей, которые предоставляют ее компоненты; эти базовые возможности составляют механизм (mechanism) работы ОС.

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

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

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

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

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

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

Основным характерным признаком ядра является то, что оно выполняется в привилегированном режиме. Рассмотрим особенности этого режима.

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

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

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

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

Системное программное обеспечение

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

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

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

Монолитные системы

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

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

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

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

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

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

Системы с микроядром

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

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

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

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

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