Концепция ОС на основе микроядра

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

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

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

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

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

Достоинства концепции микроядра.

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

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

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

4. Переносимость. Программный код, который взаимодействует с аппаратными средствами, или большая его часть, находится в микроядре. Поэтому уменьшаются объёмы работ, связанных с переносом ОС на новую аппаратную платформу (процессор).

5. Надёжность. Чем больший код имеет программа, тем труднее её протестировать. Однако небольшое ядро ОС можно тщательно проверить. А небольшое число интерфейсов прикладного программирования позволяет реализовать подсистемы, работающие вне ядра, с достаточно качественным программным кодом. Имея стандартизованный набор интерфейсов, разработчик отдельного приложения не может повлиять на другие системные компоненты.

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

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

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

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

Есть мнения и взгляды на то, чтобы сделать микроядро не больше, а наоборот – меньше. При этом повышается его гибкость и надёжность.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: