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