Монолитное ядро – большая и сложная программа, включающая все функции. Каждый слой ядра включен в программу и работает в режиме ядра.
Рисунок 1.2 - Структура монолитного ядра операционной системы
В отличие от этого, микроядерные ОС реализуют лишь очень небольшого набора функций в ядре (примитивы синхронизации, примитивный планировщик, механизмы межпроцессного взаимодействия). Несколько системных процессов, работающих поверх ядра, реализуют другие функции: выделение памяти, основной планировщик, драйверы устройств, обработчики системных вызовов.
В микроядерных архитектурах вертикальное распределение функций операционной системы заменяется на горизонтальное.
Рисунок 1.3 - Структура операционной системы с микроядром
Версии микроядер
Mach. (планировщик процессов размещен вне микроядра)
Chorus
Версии микроядерных Ос
Apple Mac OS.
GNU Hurd
OSF-1 компании Open Software Foundation на микроядре Mach
В микроядро помещаются драйверы устройств
MiX компании Chorus Systems
Преимущества
- Облегчение переносимости
- упрощает расширение.
- Освобождение ОП от ненужных системных процессов
- Компактный интерфейс Микроядра увеличивает шансы получения качественных программ (наличие множества интерфейсов прикладного программирования, не все из которых хорошо документированы, приводит к тому, что невозможно гарантировать правильность программ). Микроядро OSF обеспечивает около 200 системных вызовов, а крохотное микроядро QNS - всего лишь 14.
Однако, микроядра обычно медленнее монолитных из-за явного обмена сообщениями между различными слоями.
Чтобы добиться теоретических преимуществ микроядер без понижения производительности, используют модульную организацию ядра. Модуль – объектный файл, код которого может быть скомпонован с ядром (или отсоединен) на этапе выполнения. В отличие от внешних слоев микроядерных систем, модуль не является отдельным процессом, а работает в режиме ядра от имени текущего процесса, как любая другая статически скомпанованная функция.