Классическая архитектура операционной системы

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

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

- пользовательский режим (user mode);

- привилегированный режим ядра (kernel mode).

Рис. 3.7. Ядро ОС в привилегированном режиме

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

Рис. 3.8. Смена режимов при выполнении системного вызова к привилегированному ядру

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

Микроядерная архитектура ОС

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

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

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

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

Рис. 3.9. Взаимодействие клиента и сервера

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

Однако подход с использованием микроядра имеет и существенные достоинства:

- облегчает разработку качественного и надежного программного обеспечения;

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

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

- имеет механизмы поддержки распределенных вычислений.

Рис. 3.10. Смена режимов при выполнении системного вызова

Наиболее ярким представителем микроядерной ОС является ОСРВ QNX, микроядро которой в разных версиях занимало объем от 8К до 46К, т.е. могло целиком разместиться во внутреннем кэше процессора.

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

Наши рекомендации