Классическая архитектура ос
Архитектура ос
Наиболее общим подходом к структуризации операционной системы является разделение всех ее модулей на две группы:
— базовые функции ОС (управление процессами, памятью, устройствами ввода/вывода;
— функции, решающие внутрисистемные задачи организации вычислительного процесса, (переключение контекстов, загрузка/выгрузка страниц, обработка прерываний). Эти функции недоступны для приложений;
— функции для поддержки приложений, создающие для них прикладную программную среду. Приложения могут обращаться к ядру с запросами (Системными вызовами) для выполнения тех или иных действий. Функции ядра, которые могут вызываться приложениями, образуют интерфейс прикладного программирования – API.
Для обеспечения высокой скорости работы все модули ядра или большая их часть постоянно находятся в оперативной памяти, то есть являются резидентными. Кроме того, одним из определяющих свойств ядра является работа в привилегированном режиме.
— утилиты – программы, решающие отдельные задачи управления и сопровождения компьютерной системы, например, программы сжатия диска, архивирования и т. д.
— системные обрабатывающие программы – текстовые и графические редакторы, компиляторы, компоновщики, отладчики;
— программы дополнительных услуг – специальный вариант пользовательского интерфейса, калькулятор, игры;
— библиотеки процедур – библиотека математических функций, функций ввода/вывода и т. д.
Вспомогательные модули ОС являются транзитными программами.
Повышение устойчивости ОС, обеспечиваемое переходом ядра в привилегированный режим, достигается за счет замедления выполнения системных вызовов. Системный вызов привилегированного ядра инициирует переключение процессора из пользовательского режима в привилегированный, а при возврате к приложению – обратное переключение. Во всех типах процессоров из-за дополнительной двукратной задержки переключения переход на процедуру со сменой режима выполняется медленнее, чем вызов процедуры без смены режима.
Монолитное ядро представляет собой набор процедур, каждая из которых может вызвать каждую. Все процедуры работают в привилегированном режиме. Таким образом, монолитное ядро — это такая схема организации операционной системы, при которой все ее компоненты являются составными частями одной программы, используют общие структуры данных и взаимодействуют друг с другом путем непосредственного вызова процедур. Для монолитной операционной системы ядро совпадает со всей системой. Монолитное ядро — старейший способ организации операционных систем. Примером систем с монолитным ядром является большинство ранних версий Unix-систем и Novell
Рис. 1.1. Монолитная структура ОС
Для построения монолитной системы необходимо скомпилировать все отдельные процедуры, а затем связать их вместе в единый объектный файл с помощью компоновщика. Монолитные системы могут быть немного структурированными. Такая организация ОС предполагает следующую структуру:
1. Главная программа, которая вызывает требуемые сервисные процедуры.
2. Набор сервисных процедур, реализующих системные вызовы.
3. Набор утилит, обслуживающих сервисные процедуры.
В этой модели для каждого системного вызова имеется одна сервисная процедура. Утилиты выполняют функции, которые нужны нескольким сервисным процедурам. Это деление процедур на три слоя показано на рисунке 1.2.
Рис.1 .2. Простая структуризация монолитной ОС
Обобщением предыдущего подхода является организация ОС как иерархии уровней с хорошо определенными связями между ними, так чтобы объекты уровня N могли вызывать только объекты из уровня N-1. Нижним уровнем в таких системах обычно является аппаратура, верхним уровнем интерфейс пользователя. Чем ниже уровень, тем более привилегированные команды и действия может выполнять модуль, находящийся на этом уровне. Уровни образуются группами функций операционной системы — файловая система, управление процессами и устройствами и т. п. Каждый уровень может взаимодействовать только со своим непосредственным соседом — выше — или нижележащим уровнем. Прикладные программы или модули самой операционной системы передают запросы вверх и вниз по этим уровням. Впервые такой подход был применен при создании системы THE (Technishe Hogeschool Eindhoven) Дейкстрой и его студентами в 1968 г.
Многоуровневые системы хорошо реализуются. При использовании операций нижнего слоя не нужно знать, как они реализованы, нужно знать лишь, что они делают. Многоуровневые системы хорошо тестируются. Отладка начинается с нижнего слоя и проводится послойно. При возникновении ошибки есть уверенность, что она находится в тестируемом слое. Слоеные системы хорошо модифицируются. При необходимости можно заменить лишь один слой, не внося изменения в остальные. Но многоуровневые системы сложны для разработки: тяжело правильно определить порядок слоев, и что, к какому слою относится. Эти системы менее эффективны, чем монолитные. Так, например, для выполнения операций ввода-вывода программе пользователя придется последовательно проходить все слои.
Многослойная модель ядра
Поскольку ядро ОС представляет собой сложный многофункциональный комплекс, то многоуровневый поход обычно распространяется и на структуру ядра. Ядро может состоять из следующих слоев:
— средства аппаратной поддержки (система прерываний, средства переключения контекстов процессов, средства поддержки привилегированного режима, средства защиты областей памяти и т. д.);
— машинно-зависимые компоненты ОС; в идеале этот слой полностью экранирует вышележащие слои ядра от особенностей аппаратуры (пример – слой HAL ОС Windows NT);
— базовые механизмы ядра, этот слой выполняет наиболее примитивные операции ядра, реализует решения о распределении ресурсов, принятые на более высоком уровне;
— менеджеры ресурсов; слой состоит из мощных функциональных модулей, реализующих стратегические задачи по управлению основными ресурсами ОС;
— интерфейс системных вызовов является самым верхним слоем ядра и взаимодействует непосредственно с приложениями и системными утилитами, образуя прикладной программный интерфейс ОС.
Примеры многоуровневых ОС
Многоуровневый подход был использован при реализации следующих ОС:
Рис. 1.4. Структура ОС UNIX
Рис. 1.5. Ядро ОС UNIX
Пример реализации многоуровневой Windows
Рис. 1.6. СтруктураWindows 2000
На сегодняшний момент такой структурный подход все больше воспринимается монолитным. В системах, имеющих многоуровневую структуру, нелегко удалить один слой и заменить его другим в силу множественности и размытости интерфейсов между слоями. Добавление новых функций и изменение существующих требовало хорошего знания операционной системы и массы времени. Когда стало ясно, что операционные системы живут долго и должны иметь возможности развития и расширения, на смену монолитным ОС пришла модель клиент-сервер и тесно связанная с ней концепция микроядра.
Микроядерная архитектура (модель клиент-сервер)
Современная тенденция в разработке операционных систем — это перенесение значительной части системного кода на уровень пользователя и, следовательно, минимизация ядра. Такой подход к построению ядра называется микроядерной архитектурой операционной системы или моделью клиент-сервер. Суть микроядерной архитектуры — в привилегированном режиме остается работать только очень небольшая часть ОС, называемая микроядром. Микроядро защищено от остальных частей ОС и приложений. В состав микроядра обычно входят машинно-зависимые модули, а также модули, выполняющие базовые функции ядра по управлению процессами, обработке прерываний, управлению виртуальной памятью, пересылке сообщений и управлению устройствами ввода/вывода, которые практически невозможно выполнить в пользовательском режиме. Все остальные функции ядра оформляются в виде приложений, работающих в пользовательском режиме, которые теперь называются серверами ОС. Клиент, которым может быть либо другой компонент ОС, либо прикладная программа, запрашивает сервис, посылая сообщение на сервер. Микроядро, работающее в привилегированном режиме, доставляет сообщение нужному серверу, сервер выполняет операцию, после чего ядро возвращает результаты клиенту с помощью другого сообщения
Поддержка этого механизма является одной из главных задач микроядра.
Рис. 1.4 Микроядерная архитектура операционной системы
Основное достоинство микроядерной архитектуры – высокая степень модульности ядра ОС. Это существенно упрощает добавление в него новых компонентов. В микроядерной операционной системе можно, не прерывая ее работы, загружать и выгружать новые драйверы, файловые системы и т. д. Существенно упрощается процесс отладки компонентов ядра, так как новая версия драйвера может загружаться без перезапуска всей операционной системы. Компоненты ядра операционной системы ничем принципиально не отличаются от пользовательских программ, поэтому для их отладки можно применять обычные средства. Микроядерная архитектура повышает надежность системы, поскольку ошибка на уровне непривилегированной программы менее опасна, чем отказ на уровне режима ядра. В то же время, микроядерная архитектура существенно снижает производительность операционной системы.
Одна из проблем, возникающих при разработке микроядерной ОС – какие функции включать в микроядро, а какие выносить в пользовательское пространство. В идеальном случае микроядро может состоять только из средств передачи сообщений и аппаратно-зависимых модулей (так называемая модель экзоядра). Для повышения производительности ОС в состав микроядра могут входить и другие часто используемые функции. В результате реализации ОС образуют некоторый спектр, на одном краю этого спектра находится операционные системы Workplace OS, 4.4BSD и MkLinux, разработанные на основе микроядра Mach и придерживающиеся чистой микроядерной доктрины. Микроядро обеспечивает управление виртуальной памятью и работу низкоуровневых драйверов. Все остальные функции, в том числе взаимодействие с прикладными программами, осуществляется монолитным ядром. Этот подход возник в результате попыток использовать преимущества микроядерной архитектуры, сохраняя по возможности хорошо отлаженный код монолитного ядра.
На другом краю спектра — Windows NT, в составе которой имеется исполняющая система (NT executive), работающая в режиме ядра и выполняющая функции обеспечения безопасности, ввода-вывода и другие. Компоненты ядра Windows NT располагаются в вытесняемой памяти и взаимодействуют друг с другом путем передачи сообщений, как и положено в микроядерных операционных системах. В тоже время все компоненты ядра работают в одном адресном пространстве и активно используют общие структуры данных, что свойственно операционным системам с монолитным ядром. Кроме того, в Windows NT существует разделение между режимом ядра и режимом пользователя — еще одна черта монолитного ядра.
В настоящее время именно операционные системы, построенные с использованием модели клиент-сервер и концепции микроядра, в наибольшей степени удовлетворяют требованиям, предъявляемым к современным ОС.
Классификация архитектур ОС
3. Микроядерная (или архитектура «клиент-сервер»)
Монолитная архитектура
В состав монолитной ОС:
• Основная программа, которая может вызывать требуемую служебную процедуру.
• Набор служебных процедур, для выполнения какой-либо операции (управление памятью, файлами и т.д.)
• Набор вспомогательных процедур, содействующих работе служебных процедур.
• При использовании этой технологии каждая процедура(программа) может свободно вызвать любую другую процедуру(программу), если та выполняет для неё какое-нибудь полезное действие.
Достоинства монолитного ядра:
· упрощённая разработка модулей;
· богатство предоставляемых возможностей и функций;
· поддержка большого количества разнообразного оборудования.
Недостатки монолитного ядра:
· поскольку всё ядро работает в одном адресном пространстве, сбой в одном из компонентов может нарушить работоспособность всей системы;
· присутствие в ядре лишних компонентов крайне нежелательно, так как ядро всегда полностью располагается в оперативной памяти.
Уровневая архитектура
Прикладное ПО имеет возможность получить доступ к аппаратуре не только через ядро системы и её сервисы, но и напрямую.
Достоинства: по сравнению с монолитной такая архитектура обеспечивает значительно большую степень предсказуемости реакций системы, а также позволяет осуществлять быстрый доступ прикладных приложений к аппаратуре.
· Интерфейс уровня с остальными уровнями становится громоздким. Поэтому заменить уровень новым или нарастить его функциональность становится сложной задачей;
· Если потребуется ввести новые функции в уровень, то необходимо вносить изменения и в соседние уровни для возможности обращения к этим функциям;
· Проблема безопасности, т. к. между уровнями много точек обмена.
12. Классификация архитектур ОС. Микроядерная и гибридные архитектуры. Достоинства и недостатки
Классификация архитектур ОС
3. Микроядерная (или архитектура «клиент-сервер»)
Микроядерная архитектура (или архитектура «клиент-сервер»)
все компоненты операционной системы разделяются на:
• Программы-серверы – поставщики услуг (выполняющие определенные действия по запросам других программ)
• Программы-клиенты – потребители услуг (программы клиенты, обращающиеся к серверам для выполнения определенных действий).
• Одна и та же программа может быть одновременно сервером по отношению к одному виду услуг и клиентом по отношению к другому виду услуг.
- Серверы постоянно находится в состоянии ожидания клиентских запросов.
- В случае необходимости, клиенты посылают серверам запросы (например, запрос на чтение файла, запрос на выделение памяти, запрос на вывод результатов на экран)
- Получив запрос от клиента, сервер выполняет его, при этом он сам может обратиться за услугами к другим серверам.
- После выполнения запроса сервер отсылает клиенту сообщение о завершении задания и результаты работы.
- Клиенты и серверы никогда не общаются напрямую, а через микроядро.
- При этом микроядро само является сервером по отношению к запросам, связанным с управлением аппаратурой и клиентом при обращении к аппаратуре.
Достоинства: устойчивость к сбоям оборудования, ошибкам в компонентах системы, расширяемость, переносимость и совместимость.
Недостаток: производительность микроядерной операционной системы заметно ниже производительности многоуровневых и монолитных операционных систем из- за частых переключений из режима ядра в режим пользователя.
Гибридные архитектуры
Гибридные ядра — это модифицированные микроядра, позволяющие для ускорения работы запускать «несущественные» части в пространстве ядра.
- Гибридное ядро ОС кроме функций посредника (микроядра)выполняет следующие дополнительные функции как в монолитных ОС:
• низкоуровневое управление памятью;
• взаимодействие между процессами (программами);
Достоинства: возможно добавлять драйвера устройств двумя способами: и внутрь ядра, и в пользовательское пространство.
· производительность микроядерной операционной системы заметно ниже производительности многоуровневых и монолитных операционных систем из- за частых переключений из режима ядра в режим пользователя;
· поскольку всё ядро работает в одном адресном пространстве, сбой в одном из компонентов может нарушить работоспособность всей системы;
· присутствие в ядре лишних компонентов крайне нежелательно, так как ядро всегда полностью располагается в оперативной памяти.
13. Понятие ресурса. Назначение основных таблиц ОС по управлению ресурсами.
Ресурс – средство вычислительной системы, которое может быть выделено процессу на определенный интервал времени.
Ресурсы могут быть:
§ делимыми, когда несколько процессов используют их одновременно (в один и тот же момент времени) или параллельно (попеременно в течение некоторого интервала времени) – пример – файл;
§ неделимыми, используемыми программой единолично – пример – выделяемая процессу память.
ОС управляет следующими основными ресурсами;
- — процессором (процессорами, ядрами);
- — программами (процессами);
- — памятью (физическая и виртуальная);
- — устройствами ввода-вывода;
- — файлами;
- — таймерами;
- — и др.
Что хранится в таблицах памяти?
Эти таблицы включают следующую информацию:
1) объем основной (физической) памяти, отведенной процессу;
2) объем вторичной или виртуальной памяти, отведенной процессу;
3) все атрибуты защиты блоков основной и виртуальной памяти;
4) всю информацию, необходимую для управления виртуальной памятью.
Что хранится в таблицах ввода – вывода?
1. Используются для управления устройствами ввода-вывода.
2. В каждый момент времени устройство ввода-вывода может быть либо свободным, либо отданным в распоряжение какому-либо процессу.
3. Если выполняется операция ввода-вывода, то должна быть информация о состоянии этой операции.
Что хранится в таблицах файлов?
В них находится информация о существующих файлах, их расположение на носителях, текущем состоянии, атрибутах доступа, других атрибутах.
14. Понятие процессора. Модель процессора. Переход процессора из одного состояния в другое по диаграмме процесса.
Процесс – это система действий, реализующая выполнение программы в компьютерной системе («Процесс – это домик в котором живет программа»).
1. Новый процесс. Только что созданный процесс, информация о процессе помещена ОС во множество (таблицу) процессов, но процесс не загружен в оперативную память.
2. Готовый к выполнению. Процесс загружен в память и будет запущен, как только представится возможность.
3. Выполняющийся. Процесс, выполняющийся процессором в данный момент.
4. Блокированный. Процесс, который ожидает некоторого события.
5. Завершающийся. Процесс, удаленный из множества запущенных процессов.
АрхитектураОС. 1.«Классическая» архитектура ОС 2. Многослойная архитектура ОС 3.Микроядерная архитектура ОС 4.Основные положения микроядерной архитектуры. — презентация
Презентация была опубликована 4 года назад пользователемПётр Щеглов
Похожие презентации
Презентация на тему: » АрхитектураОС. 1.«Классическая» архитектура ОС 2. Многослойная архитектура ОС 3.Микроядерная архитектура ОС 4.Основные положения микроядерной архитектуры.» — Транскрипт:
2 1.«Классическая» архитектура ОС 2. Многослойная архитектура ОС 3. Микроядерная архитектура ОС 4. Основные положения микроядерной архитектуры 5. Преимущества и недостатки микроядерной архитектуры.
3 1.«Классическая» архитектура ОС Компоненты ОС являются не самостоятельными модулями, а составными частями одной большой программы. Такая структура операционной системы называется монолитным ядром (monolithic kernel). Монолитное ядро представляет собой набор процедур, каждая из которых может вызвать каждую.
4 1.«Классическая» архитектура ОС Все процедуры работают в привилегированном режиме. Монолитное ядро – это такая схема ОС, при которой все ее компоненты являются составными частями одной программы, используют общие структуры данных и взаимодействуют друг с другом путем непосредственного вызова процедур. Для монолитной ОС ядро совпадает со всей системой.
5 1.«Классическая» архитектура ОС Во многих с монолитным ядром сборка ядра (то есть его компиляция) осуществляется отдельно для каждого компьютера, на который устанавливается ОС. При этом можно выбрать список оборудования и программных протоколов, поддержка которых будет включена в ядро.
6 1.«Классическая» архитектура ОС Так как ядро является единой программой, перекомпиляция – это единственный способ добавить в него новые компоненты или исключить неиспользуемые. Присутствие в ядре лишних компонентов нежелательно, так как ядро всегда полностью располагается в ОЗУ. Исключение ненужных компонентов повышает надежность ОС в целом.
7 1.«Классическая» архитектура ОС Монолитное ядро – старейший способ организации операционных систем. Примером систем с монолитным ядром является большинство Unix-систем.
8 1.«Классическая» архитектура ОС Структура. В монолитном ядре выделяются сервисные процедуры, соответствующие системным вызовам. Сервисные процедуры выполняются в привилегированном режиме, тогда как пользовательские программы – в непривилегированном.
9 2. Многослойная архитектура ОС Можно разбить всю вычислительную систему на ряд более мелких уровней с хорошо определенными связями между ними (многоуровневые системы (Layered systems)), так чтобы объекты уровня N могли вызывать только объекты уровня N-1.
10 2. Многослойная архитектура ОС Нижним уровнем в таких системах обычно является hardware, верхним уровнем – интерфейс пользователя. Чем ниже уровень, тем более привилегированные команды и действия может выполнять модуль, находящийся на этом уровне.
11 2. Многослойная архитектура ОС Слоеные системы хорошо реализуются. При использовании операций нижнего слоя не нужно знать, как они реализованы, нужно лишь понимать, что они делают. Слоеные системы хорошо тестируются. Отладка начинается с нижнего слоя и проводится послойно. При возникновении ошибки мы можем быть уверены, что она находится в тестируемом слое.
12 2. Многослойная архитектура ОС При использовании операций нижнего слоя не нужно знать, как они реализованы, нужно лишь понимать, что они делают. Слоеные системы хорошо тестируются. Отладка начинается с нижнего слоя и проводится послойно. При возникновении ошибки мы можем быть уверены, что она находится в тестируемом слое.
13 2. Многослойная архитектура ОС Слоеные системы хорошо модифицируются. При необходимости можно заменить лишь один слой, не трогая остальные. Но слоеные системы сложны для разработки: тяжело правильно определить порядок слоев и что к какому слою относится. Слоеные системы менее эффективны, чем монолитные.
14 3. Микроядерная архитектура ОС Главной особенностью подхода архитектуры построения ОС с микроядром является то, что в привилегированном режиме остается работать только очень малая часть ОС, называемая соответственно микроядром. Микроядро защищено от остальных частей ОС и пользовательских приложений.
15 3. Микроядерная архитектура ОС Набор входящих в состав микроядра функций соответствует слою базовых механизмов обычного ядра, хотя в состав микроядра включаются далеко не все базовые функции ядра, а только функции управления процессами, обработки прерываний, управления виртуальной памятью, пересылки сообщений, управления устройствами ввода-вывода.
16 3. Микроядерная архитектура ОС Выполнение таких функций ОС практически невозможно реализовать в пользовательском режиме. Все машинно-зависимые модули ОС также включаются в микроядро.
17 3. Микроядерная архитектура ОС Не вошедшие в состав микроядра высокоуровневые функции и модули ядра оформляются в виде обычных приложений, работающих в пользовательском режиме. На рисунке ниже можно видеть основные различия в построении ОС с монолитным ядром (рис.1 а) и архитектурой с микроядром (рис. 1 б).
18 Рисунок 1. Строение ОС с монолитным ядром и с архитектурой микроядром.
19 4. Основные положения микроядерной архитектуры Непосредственная передача сообщений между приложениями невозможна, поскольку их адресные пространства изолированы друг от друга.
20 4. Основные положения микроядерной архитектуры Микроядро ОС, выполняющееся в привилегированном режиме, имеет доступ к адресным пространствам каждого из этих приложений и поэтому может выступать в качестве посредника при передаче сообщений.
21 4. Основные положения микроядерной архитектуры Микроядро сначала передает сообщение, содержащее имя и параметры вызываемой процедуры соответствующему серверу, затем сервер выполняет запрошенную операцию, после чего микроядро возвращает результаты клиенту посредством другого сообщения.
22 4. Основные положения микроядерной архитектуры Таким образом, работа микроядерной ОС соответствует известной модели клиент-сервер, в которой роль транспортных средств выполняет микроядро.
23 4. Основные положения микроядерной архитектуры Стандартизованные протоколы предоставления сервиса или ресурсов позволяют серверу обслуживать клиента независимо от деталей их реализации, что открывает перед разработчиками широкие возможности для построения распределенных систем.
24 4. Основные положения микроядерной архитектуры Инициатором обмена обычно является клиент, который посылает запрос на обслуживание серверу, находящемуся в состоянии ожидания. Один и тот же процесс может быть клиентом по отношению к одним ресурсам и сервером для других.
25 4. Основные положения микроядерной архитектуры Данная модель успешно применяется не только при построении ОС, но и при создании программного обеспечения любого уровня.
26 5. Преимущества и недостатки микроядерной архитектуры. ОС с микроядром во многом удовлетворяют требованиям, предъявляемым к современным ОС, обладая переносимость ю, расширяемостью, надежностью, и создают хорошие предпосылки для поддержки распределенных приложений. Но все эти достоинства ОС приобретает в ущерб производительности.
27 5. Преимущества и недостатки микроядерной архитектуры. Микроядерной ОС присуща изолированность всего машинно-зависимого кода в микроядре, вследствие чего для переноса системы на новую аппаратную платформу требуется min количество изменений, причём все они логически сгруппированы. Эта особенность ОС с микроядром является их несомненным достоинством.
28 5. Преимущества и недостатки микроядерной архитектуры. Особенности архитектуры микроядерных ОС обеспечивают их высокую степень расширяемости по сравнению с другими ОС. Добавление очередной подсистемы требует только лишь разработки нового приложения и никоим образом не затрагивает целостность микроядра.
29 5. Преимущества и недостатки микроядерной архитектуры. Микроядерная структура позволяет не только увеличивать, но и сокращать число компонентов ОС, что также бывает необходимо.
30 5. Преимущества и недостатки микроядерной архитектуры. При микро ядерном подходе конфигурируемость не вызывает никаких проблем и не требует особых мер, достаточно изменить файл с настройками начальной конфигурации системы или же остановить ненужные больше серверы в ходе работы обычными для остановки приложений средствами.
31 5. Преимущества и недостатки микроядерной архитектуры. Использование микроядерной модели повышает надежность ОС. Каждый сервер выполняется в виде отдельного процесса в своей собственной области памяти и таким образом защищен от других серверов ОС, чего не наблюдается а традиционной ОС, где все модули ядра влияют друг на друга.
32 5. Преимущества и недостатки микроядерной архитектуры. И если отдельный сервер терпит крах, то он может быть перезапущен без останова или повреждения остальных серверов ОС.
33 5. Преимущества и недостатки микроядерной архитектуры. Другим потенциальным источником повышения надежности ОС является уменьшенный объем кода микроядра по сравнению с классическим ядром — это снижает вероятность появления ошибок программирования.
34 5. Преимущества и недостатки микроядерной архитектуры. Модель с микроядром хорошо подходит для поддержки распределенных вычислений, так как использует механизмы, аналогичные сетевым, — взаимодействие клиентов и серверов путем обмена сообщениями. Серверы микроядерной ОС могут работать как на одном, так и на разных компьютерах.
35 5. Преимущества и недостатки микроядерной архитектуры. Все рассмотренные ранее свойства ОС с микроядерной архитектурой свидетельствовали о предпочтительности ее использования разработчиками. Однако, как уже говорилось, все эти качества приобретаются за счет снижения производительности ОС.
36 5. Преимущества и недостатки микроядерной архитектуры. Дело в том, что при классической организации ОС выполнение системного вызова сопровождается двумя переключениями режимов, а при микроядерной организации — четырьмя.
37 5. Преимущества и недостатки микроядерной архитектуры. Таким образом, ОС на основе микроядра при прочих равных условиях всегда будет менее производительной, чем ОС с классическим ядром. Именно поэтому микроядерный подход не получил такого широкого распространения, которое ему предрекали.
38 5. Преимущества и недостатки микроядерной архитектуры. Все рассмотренные подходы к построению операционных систем имеют свои достоинства и недостатки. В большинстве случаев современные операционные системы используют различные комбинации этих подходов. Так, например, ядро операционной системы Linux представляет собой монолитную систему с элементами микроядерной архитектуры.
39 5. Преимущества и недостатки микроядерной архитектуры. При компиляции ядра можно разрешить динамическую загрузку и выгрузку очень многих компонентов ядра – так называемых модулей. В момент загрузки модуля его код загружается на уровне системы и связывается с остальной частью ядра. Внутри модуля могут использоваться любые экспортируемые ядром функции.
Архитектура (структура) операционной системы
Напомним, необходимые основные моменты.
Микропроцессоры Intel x 86/ 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 , системные утилиты и приложения.
Þ Приложения вполне могут разрушать основные модули ОС.
Достоинства рассмотренной нами структурной организации ОС (архитектуры ОС) в виде привилегированного ядра и вспомогательных модулей-приложений заключаются в следующем:
ü Легкая расширяемость ОС. (Для добавления новой функции достаточно разработать новое приложение, при этом не требуется модифицировать важные функции ядра ОС. Внесение изменений в функции ядра — сложнее, но зависит от структурной организации самого ядра.)
ü Экономия ОП. (Постоянно в ОП располагаются только самые необходимые коды.)
ü Возможность защиты кодов и данных ОС от несанкционированного доступа за счет выполнения функций ядра в привилегированном режиме.
РЕЗЮМЕ по простейшей структурной организации ОС
Þ Все компоненты ОС разделяются на модули, выполняющие основные функции ОС (ядро), и модули, выполняющие вспомогательные функции ОС.
Þ Вспомогательные модули оформляются либо в виде приложений, либо в виде библиотек процедур и функций.
Þ Вспомогательные модули являются транзитными. Модули ядра — резидентными.
Þ Устойчивость ОС повышается путем выполнения функций ядра в привилегированном режиме, а вспомогательных модулей ОС и пользовательских приложений — в пользовательском.
Является альтернативой классическому способу построения ОС.
Суть микроядерной архитектуры состоит в следующем.
В привилегированном режиме остается работать только очень небольшая часть ОС, называемая МИКРОЯДРОМ. Все остальные более высокоуровневые функции ядра оформляются в виде приложений, работающих в пользовательском режиме.
Микроядро защищено от остальных частей ОС и приложений.
В состав микроядра входят обычно
§ машинно-зависимые модули (те, в которых отражается специфика аппаратной платформы компьютера);
§ модули, выполняющие базовые функции ядра:
— управление процессами (только код для переключения процессора с процесса на процесс);
— обработка прерываний (перехват аппаратных прерываний);
— управление виртуальной памятью (установка регистров блока управления памятью);
— управление устройствами ввода-вывода (загрузка или чтение регистров устройств);
§ код, преобразующий вызовы пользовательских модулей ОС в системные вызовы и возвращающий результаты.
Заметим, что однозначного решения, какие функции следует включать в микроядро, а какие выполнять в пользовательском режиме, не существует.
(Напомним, что в этом заключается принцип функциональной избирательности)
Архитектура ос
Наиболее общим подходом к структуризации операционной системы является разделение всех ее модулей на две группы:
— базовые функции ОС (управление процессами, памятью, устройствами ввода/вывода;
— функции, решающие внутрисистемные задачи организации вычислительного процесса, (переключение контекстов, загрузка/выгрузка страниц, обработка прерываний). Эти функции недоступны для приложений;
— функции для поддержки приложений, создающие для них прикладную программную среду. Приложения могут обращаться к ядру с запросами (Системными вызовами) для выполнения тех или иных действий. Функции ядра, которые могут вызываться приложениями, образуют интерфейс прикладного программирования – API.
Для обеспечения высокой скорости работы все модули ядра или большая их часть постоянно находятся в оперативной памяти, то есть являются резидентными. Кроме того, одним из определяющих свойств ядра является работа в привилегированном режиме.
— утилиты – программы, решающие отдельные задачи управления и сопровождения компьютерной системы, например, программы сжатия диска, архивирования и т. д.
— системные обрабатывающие программы – текстовые и графические редакторы, компиляторы, компоновщики, отладчики;
— программы дополнительных услуг – специальный вариант пользовательского интерфейса, калькулятор, игры;
— библиотеки процедур – библиотека математических функций, функций ввода/вывода и т. д.
Вспомогательные модули ОС являются транзитными программами.
Повышение устойчивости ОС, обеспечиваемое переходом ядра в привилегированный режим, достигается за счет замедления выполнения системных вызовов. Системный вызов привилегированного ядра инициирует переключение процессора из пользовательского режима в привилегированный, а при возврате к приложению – обратное переключение. Во всех типах процессоров из-за дополнительной двукратной задержки переключения переход на процедуру со сменой режима выполняется медленнее, чем вызов процедуры без смены режима.
Монолитное ядро представляет собой набор процедур, каждая из которых может вызвать каждую. Все процедуры работают в привилегированном режиме. Таким образом, монолитное ядро — это такая схема организации операционной системы, при которой все ее компоненты являются составными частями одной программы, используют общие структуры данных и взаимодействуют друг с другом путем непосредственного вызова процедур. Для монолитной операционной системы ядро совпадает со всей системой. Монолитное ядро — старейший способ организации операционных систем. Примером систем с монолитным ядром является большинство ранних версий Unix-систем и Novell
Рис. 1.1. Монолитная структура ОС
Для построения монолитной системы необходимо скомпилировать все отдельные процедуры, а затем связать их вместе в единый объектный файл с помощью компоновщика. Монолитные системы могут быть немного структурированными. Такая организация ОС предполагает следующую структуру:
1. Главная программа, которая вызывает требуемые сервисные процедуры.
2. Набор сервисных процедур, реализующих системные вызовы.
3. Набор утилит, обслуживающих сервисные процедуры.
В этой модели для каждого системного вызова имеется одна сервисная процедура. Утилиты выполняют функции, которые нужны нескольким сервисным процедурам. Это деление процедур на три слоя показано на рисунке 1.2.
Рис.1 .2. Простая структуризация монолитной ОС
Обобщением предыдущего подхода является организация ОС как иерархии уровней с хорошо определенными связями между ними, так чтобы объекты уровня N могли вызывать только объекты из уровня N-1. Нижним уровнем в таких системах обычно является аппаратура, верхним уровнем интерфейс пользователя. Чем ниже уровень, тем более привилегированные команды и действия может выполнять модуль, находящийся на этом уровне. Уровни образуются группами функций операционной системы — файловая система, управление процессами и устройствами и т. п. Каждый уровень может взаимодействовать только со своим непосредственным соседом — выше — или нижележащим уровнем. Прикладные программы или модули самой операционной системы передают запросы вверх и вниз по этим уровням. Впервые такой подход был применен при создании системы THE (Technishe Hogeschool Eindhoven) Дейкстрой и его студентами в 1968 г.
Многоуровневые системы хорошо реализуются. При использовании операций нижнего слоя не нужно знать, как они реализованы, нужно знать лишь, что они делают. Многоуровневые системы хорошо тестируются. Отладка начинается с нижнего слоя и проводится послойно. При возникновении ошибки есть уверенность, что она находится в тестируемом слое. Слоеные системы хорошо модифицируются. При необходимости можно заменить лишь один слой, не внося изменения в остальные. Но многоуровневые системы сложны для разработки: тяжело правильно определить порядок слоев, и что, к какому слою относится. Эти системы менее эффективны, чем монолитные. Так, например, для выполнения операций ввода-вывода программе пользователя придется последовательно проходить все слои.
Многослойная модель ядра
Поскольку ядро ОС представляет собой сложный многофункциональный комплекс, то многоуровневый поход обычно распространяется и на структуру ядра. Ядро может состоять из следующих слоев:
— средства аппаратной поддержки (система прерываний, средства переключения контекстов процессов, средства поддержки привилегированного режима, средства защиты областей памяти и т. д.);
— машинно-зависимые компоненты ОС; в идеале этот слой полностью экранирует вышележащие слои ядра от особенностей аппаратуры (пример – слой HAL ОС Windows NT);
— базовые механизмы ядра, этот слой выполняет наиболее примитивные операции ядра, реализует решения о распределении ресурсов, принятые на более высоком уровне;
— менеджеры ресурсов; слой состоит из мощных функциональных модулей, реализующих стратегические задачи по управлению основными ресурсами ОС;
— интерфейс системных вызовов является самым верхним слоем ядра и взаимодействует непосредственно с приложениями и системными утилитами, образуя прикладной программный интерфейс ОС.
Примеры многоуровневых ОС
Многоуровневый подход был использован при реализации следующих ОС:
Рис. 1.4. Структура ОС UNIX
Рис. 1.5. Ядро ОС UNIX
Пример реализации многоуровневой Windows
Рис. 1.6. СтруктураWindows 2000
На сегодняшний момент такой структурный подход все больше воспринимается монолитным. В системах, имеющих многоуровневую структуру, нелегко удалить один слой и заменить его другим в силу множественности и размытости интерфейсов между слоями. Добавление новых функций и изменение существующих требовало хорошего знания операционной системы и массы времени. Когда стало ясно, что операционные системы живут долго и должны иметь возможности развития и расширения, на смену монолитным ОС пришла модель клиент-сервер и тесно связанная с ней концепция микроядра.
Микроядерная архитектура (модель клиент-сервер)
Современная тенденция в разработке операционных систем — это перенесение значительной части системного кода на уровень пользователя и, следовательно, минимизация ядра. Такой подход к построению ядра называется микроядерной архитектурой операционной системы или моделью клиент-сервер. Суть микроядерной архитектуры — в привилегированном режиме остается работать только очень небольшая часть ОС, называемая микроядром. Микроядро защищено от остальных частей ОС и приложений. В состав микроядра обычно входят машинно-зависимые модули, а также модули, выполняющие базовые функции ядра по управлению процессами, обработке прерываний, управлению виртуальной памятью, пересылке сообщений и управлению устройствами ввода/вывода, которые практически невозможно выполнить в пользовательском режиме. Все остальные функции ядра оформляются в виде приложений, работающих в пользовательском режиме, которые теперь называются серверами ОС. Клиент, которым может быть либо другой компонент ОС, либо прикладная программа, запрашивает сервис, посылая сообщение на сервер. Микроядро, работающее в привилегированном режиме, доставляет сообщение нужному серверу, сервер выполняет операцию, после чего ядро возвращает результаты клиенту с помощью другого сообщения
Поддержка этого механизма является одной из главных задач микроядра.
Рис. 1.4 Микроядерная архитектура операционной системы
Основное достоинство микроядерной архитектуры – высокая степень модульности ядра ОС. Это существенно упрощает добавление в него новых компонентов. В микроядерной операционной системе можно, не прерывая ее работы, загружать и выгружать новые драйверы, файловые системы и т. д. Существенно упрощается процесс отладки компонентов ядра, так как новая версия драйвера может загружаться без перезапуска всей операционной системы. Компоненты ядра операционной системы ничем принципиально не отличаются от пользовательских программ, поэтому для их отладки можно применять обычные средства. Микроядерная архитектура повышает надежность системы, поскольку ошибка на уровне непривилегированной программы менее опасна, чем отказ на уровне режима ядра. В то же время, микроядерная архитектура существенно снижает производительность операционной системы.
Одна из проблем, возникающих при разработке микроядерной ОС – какие функции включать в микроядро, а какие выносить в пользовательское пространство. В идеальном случае микроядро может состоять только из средств передачи сообщений и аппаратно-зависимых модулей (так называемая модель экзоядра). Для повышения производительности ОС в состав микроядра могут входить и другие часто используемые функции. В результате реализации ОС образуют некоторый спектр, на одном краю этого спектра находится операционные системы Workplace OS, 4.4BSD и MkLinux, разработанные на основе микроядра Mach и придерживающиеся чистой микроядерной доктрины. Микроядро обеспечивает управление виртуальной памятью и работу низкоуровневых драйверов. Все остальные функции, в том числе взаимодействие с прикладными программами, осуществляется монолитным ядром. Этот подход возник в результате попыток использовать преимущества микроядерной архитектуры, сохраняя по возможности хорошо отлаженный код монолитного ядра.
На другом краю спектра — Windows NT, в составе которой имеется исполняющая система (NT executive), работающая в режиме ядра и выполняющая функции обеспечения безопасности, ввода-вывода и другие. Компоненты ядра Windows NT располагаются в вытесняемой памяти и взаимодействуют друг с другом путем передачи сообщений, как и положено в микроядерных операционных системах. В тоже время все компоненты ядра работают в одном адресном пространстве и активно используют общие структуры данных, что свойственно операционным системам с монолитным ядром. Кроме того, в Windows NT существует разделение между режимом ядра и режимом пользователя — еще одна черта монолитного ядра.
В настоящее время именно операционные системы, построенные с использованием модели клиент-сервер и концепции микроядра, в наибольшей степени удовлетворяют требованиям, предъявляемым к современным ОС.