Архитектура ОС. Ядро и вспомогательные модули. Микроядерная архитектура. Преимущества и недостатки.

 

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

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

 

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

 

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

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

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

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

 

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

 

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

 

c) Программа, предоставляющая пользователю дополнительные услуги. Например, программа пользовательского интерфейса называется оболочкой, например, Norton Commander.

 

d) Библиотеки процедур различного назначения. Например, библиотеки ввода/вывода или математические функции.

 

2) Ядро в привилегированном режиме. ОС должна иметь исключительные полномочия для того, чтобы быть арбитром в споре приложений за ресурсы компьютера. Привилегии ОС обеспечиваются при помощи средств аппаратной поддержки. Аппаратура компьютера поддерживает 2 режима: пользовательский и привилегированный. Последний также называется режимом ядра или режимом супер-визора. Приложения ставятся в подчиненное положение за счет запрета выполнения в пользовательском режиме некоторых критичных команд, связанных с переключением процесса с задачи на задачу, управлением ввода/вывода, доступом к механизмам распределения и защиты памяти. Переключения процессора из пользовательского режима в привилегированный и обратно осуществляется за счет дополнительной двукратной задержки. Для этого требуется двукратное время перехода из 1 режима в другой.

 

Приложения (пользовательский режим) – режим ядра + функции ядра – приложения (пользовательский режим).

3) Структура ядра. Многослойный подход является универсальным эффективным средством декомпозиций систем любого типа. Ядро состоит из следующих слоев:

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

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

4) Базовый механизм ядра. Этот слой выполняет наиболее примитивные операции ядра, такие как программное переключение контекстов в процессе, перемещение страницы с памяти на диск и т.д.

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

 

5) Менеджеры ресурсов. Этот слой состоит из модулей, реализующих основные задачи по управлению ресурсами.

На данном слое работают менеджеры процессов ввода/вывода, файловой системы и ОП.

Каждый из менеджеров ведет учет свободных и используемых ресурсов определенного типа и планирует распределение в соответствии с запросами приложений.

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

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

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

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

За эти достоинства необходимо платить снижением производительности. Это является

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

 

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

 

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

 

 

10. Программирование, управляемое событиями. Простейшее приложение Windows.

#include <windows.h>

INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPCSTR lpstrCmdLine, int CmdShow);

 

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

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

Второй параметр – идентификатор предыдущей запущенной копии приложения WINAPI, всегда равен 0.

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

Четвертый параметр – определяет способ отображения на экране.

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

 

MessageBox(NULL, “Hello World”, MB_OK); - функция программного интерфейса.

 

1 параметр – идентификатор родительского окна – главное окно приложения.

2 параметр – выводимыйwidth:980px;height:120px" data-ad-client="ca-pub-1201569435861782" data-ad-slot="2853903535">


Дата добавления: 2015-08-21; просмотров: 86; Опубликованный материал нарушает авторские права?.