Виды архитектур ОС, преимущества и недостатки.
Функциональная сложность ОС неизбежно приводит к сложности ее архитектуры, под которой понимают структурную организацию ОС. Большинство современных ОС представляют собой хорошо структурированные модульные системы, способные к развитию, расширению и переносу на новые платформы. Наиболее общим подходом к структурированной ОС является разделение всех ее модулей на две группы:
- ядро – модули, выполняющие основные функции ОС;
- модули, выполняющие вспомогательные функции ОС.
Модули ядра обеспечивают управление процессами, памятью, устройствами ввода – вывода, и т.п. Все функции ядра можно разделить на два класса: функции, решающие внутрисистемные задачи организации вычислительного процесса; функции, создающие прикладную программную среду, то есть поддерживающие запросы приложений (функции API).
Функции, выполняемые ядром, являются наиболее часто используемыми, поэтому скорость их выполнения определяет производительность всей системы в целом. Для обеспечения высокой скорости работы ОС все модули ядра или большая их часть постоянно находятся в оперативной памяти, то есть являются резидентными.
Вспомогательные модули ОС обычно подразделяются на следующие группы:
- утилиты – программы, решающие отдельные задачи управления и сопровождения компьютера, такие, например как программы сжатия дисков;
- системные обрабатывающие программы – текстовые или графические редакторы, компиляторы, компоновщики, отладчики;
- программы предоставления пользователю дополнительных услуг – специальный вариант пользовательского интерфейса, калькулятор и т.д.
- библиотеки процедур различного назначения, упрощающие разработку приложений, например, библиотека функций ввода-вывода и т.д.
Методологии проектирования ОС.
Существует много подходов к проектированию ОС, рассматриваемые два из них являются классическими, они применялись при разработке реальных ОС. Первый подход – это иерархическая абстрактная машина, разработанная Дейкстрой (1968), второй - метод ядра Хансена (1971).
Методология, основанная на ядре, была разработана и использована для ОС на ЭВМ RC4000 (Хансен 1971). Суть подхода состоит в проектировании универсального ядра ОС, на основе которого конструируются и модифицируются множество ОС.
Аргументом в пользу такого подхода является то, что стратегии организации и распределения ресурсов в системах непрерывно должны расширяться и модифицироваться в ответ на ввод изменений и требования новых способов работы. Бринч Хансен был первым, кто разработал и внедрил подход к ядру “снизу вверх”.
Одной из первых современных ОС, основанной на методологии ядра была ОС MS DOS. ОС MS DOS состоит из двух модулей msdos.sys и io.sys, составляющих ядро системы, к которым с системными вызовами обращаются командный интерпретатор command.com, системные утилиты и приложения. Некорректно написанные приложения могут разрушить основные модули ОС, поэтому в большинстве современных ОС методология ядра предполагает, что ОС должна иметь по отношению к приложениям привилегии.
Обеспечить привилегии ОС невозможно без специальных средств аппаратной поддержки. Аппаратура компьютера должна поддерживать как минимум два режима работы – пользовательский режим (user mode) и привилегированный режим, который называют также режимом ядра (kernel mode), или режимом супервизора (supervisor mode). Обычно в привилегированном режиме работает ядро ОС, что иногда является основой для определения понятия ядра.
Приложениям, работающим в пользовательском режиме, запрещено выполнение команд, переключающих задачи, управляющих устройствами ввода-вывода, доступом к механизмам распределения и защиты памяти.
Архитектура ОС, основанная на привилегированном ядре и приложениях, используется в многочисленных версиях UNIX, VAX VMS, OS/2, и с определенными модификациями – Windows NT.
Другим распространенным подходом к моделированию ОС является многослойная структура. Первым эту идею реализовал Э.Дейкстра.
Основной идеей Э.Дейкстры является размещение модулей ОС (процессов ОС) в иерархию, где каждый уровень определяет последовательно более абстрактную виртуальную машину. Чем дальше вверх осуществляется движение по иерархии, тем больше выполняется задач управления ресурсами; другими словами, определённые классы ресурсов могут быть проигнорированы на каждом уровне.
Эта методология привлекательна до сих пор, так как при изолировании функции ОС на различных уровнях иерархии и установлении ясных каналов связей между уровнями, можно значительно снизить сложность проекта и отладки. Самой сложной задачей при таком подходе является определение структуры уровня и функций каждого уровня. Каждый слой обслуживает вышележащий слой, выполняя для него некоторый набор функций, которые образуют межслойный интерфейс. На основе функций нижележащего слоя следующий (вверх по иерархии) слой строит свои функции, которые в свою очередь оказываются примитивами для создания более мощных функций вышележащих слоев. Такая организация существенно упрощает разработку и модификацию системы, так как позволяет сначала определить функции слоев и межслойные интерфейсы, а затем реализовать слои, двигаясь «снизу вверх».
Обычно многослойный подход распространяется и на структуру ядра.
Модели современных ОС
Современные ОС упрощают использование аппаратных средств ПК. Создаваемая ими “виртуальная” машина заметно отличается от реальной. Основной функцией современных ОС по-прежнему остаётся функция распределения ресурсов, среди которых наиболее важным является время процессора. В многозадачных ОС, таких как Windows 95 и Windows NT, выполняемая работа подразделяется на процессы, каждому из которых предоставляется память, системные ресурсы и по крайней мере один поток управления – исполняемая единица внутри процесса .
Кроме обеспечения совместного использования процессора, ОС распределяет память и управляет доступом к файлам и устройствам. ОС различаются по способам, которыми они представляют виртуальную машину пользователю и распределяют ресурсы.
Модель ОС – способ описания системы, связывающий все программно-аппаратные и сервисные функции ОС и задачи, которые она должна выполнять. Современные ОС базируются, как правило на следующих основных моделях:
- Монолитная модель.
- Многослойная модель.
- Модель клиент – сервер.
- Объектная модель.
- Мультипроцессорная модель.