Микроядерная архитектура (модель клиент-сервер)

Структура операционной системы

Перед изучением структуры операционных систем следует рассмотреть режимы работы процессоров.

Современные процессоры имеют минимум два режима работы – привилегированный (supervisor mode) и пользовательский (user mode).

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

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

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

Основным компонентом операционной системы является ядро (kernel) (Рис.1). Функции ядра могут существенно отличаться в разных системах; но во всех системах ядро работает в привилегированном режиме (который часто называется режим ядра, kernel mode).

Рис. 1. Архитектура операционной системы с ядром в привилегированном режиме

 

Термин «ядро» также используется в разных смыслах. Например, в Windows термин «ядро» (NTOS kernel) обозначает совокупность двух компонентов – исполнительной системы (executive layer) и собственно ядра (kernel layer).

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

Ядра, которые занимают промежуточные положение между монолитными и микроядрами, называют гибридными (hybrid kernel).

Примеры различных типов ядер:

- монолитное ядро – MS-DOS, Linux, FreeBSD;

- микроядро – Mach, Symbian, MINIX 3;

- гибридное ядро – NetWare, BeOS, Syllable.

Кроме ядра в привилегированном режиме (в большинстве операционных систем) работают драйверы (driver) – программные модули, управляющие устройствами.

В состав операционной системы также входят:

- системные библиотеки (system DLL – Dynamic Link Library, динамически подключаемая библиотека), преобразующие системные вызовы приложений в системные вызовы ядра;

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

Пользовательские оболочки реализуют один из двух основных видов пользовательского интерфейса:

- текстовый интерфейс (Text User Interface, TUI), другие названия – консольный интерфейс (Console User Interface, CUI), интерфейс командной строки (Command Line Interface, CLI);

- графический интерфейс (Graphic User Interface, GUI).

Пример реализации текстового интерфейса в Windows – интерпретатор командной строки cmd.exe; пример графического интерфейса – Проводник Windows (explorer.exe).

Монолитная система состоит из:

1. Главная программа, которая вызывает требуемые сервисные процедуры.

2. Набор сервисных процедур, реализующих системные вызовы.

3. Набор утилит, обслуживающих сервисные процедуры.

Рисунок 2. Простая модель монолитной системы

 

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

Этапы обработки вызова:

- принимается вызов;

- выполняется переход из режима пользователя в режим ядра;

- ОС проверяет параметры вызова для того, чтобы определить, какой системный вызов должен быть выполнен;

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

Многоуровневая структура ОС

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

Уровни Функции

1 Обработчик системных вызовов

2 Файловая система 1 ... Файловая система n

3 Виртуальная память    

4 Драйвер 1 Драйвер 1 ... ... Драйвер n
5 Управление потоками        
6 Обработка прерываний, управление памятью        
7 Сокрытие низкоуровневой аппаратуры        

Рисунок 3. Пример структуры многоуровневой системы

Преимущества:

- высокая производительность.

Недостатки:

- большой код ядра, и как следствие большое содержание ошибок;

- ядро плохо защищено от вспомогательных процессов.

Пример реализации многоуровневой модели Windows

Рисунок 4. Структура Windows 2k (2000)

 

Модель экзоядра

Если предыдущие модели брали на себя максимум функций, принцип экзоядра – все отдать пользовательским программам. Например, зачем нужна файловая система? Почему не позволить пользователю просто читать и писать участки диска защищенным образом? Т. е. каждая пользовательская программа сможет иметь свою файловую систему. Такая операционная система должна обеспечить безопасное распределение ресурсов среди соревнующихся за них пользователей.

Микроядерная архитектура (модель клиент-сервер)

Эта модель является средним между двумя предыдущими моделями.

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

В этой модели вводятся два понятия:

1. серверный процесс (который обрабатывает запросы);

2. клиентский процесс (который посылает запросы).

В задачу ядра входит только управление связью между клиентами и серверами.

Рисунок 5. Модель клиент-сервер

 

Преимущества:

- малый код ядра и отдельных подсистем, и как следствие меньшее содержание ошибок.

- ядро лучше защищено от вспомогательных процессов.

- легко адаптируется к использованию в распределенной системе.

Недостатки:

- уменьшение производительности.

 


Дата добавления: 2021-11-30; просмотров: 14; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!