2.1.3 Микроядра

Предыдущая  Содержание  Следующая V*D*V

Такие ядра подвергались многочисленным исследованиям, особенно в конце 1980-х, и считались наилучшими по отношению к принципам разработки ОС. Тем не менее, переход от теории к практике привёл к слишком большому числу узких мест; очень немногие из таких ядер были успешными на рынке. Микроядро использует небольшую ОС, которая предоставляет только основной сервис (планирование, обработка прерываний, передача сообщений), а остальная часть ядра (файловая система, драйверы устройств, сетевой стек) работает в качестве приложений. По отношению к использованию MMU, ядра реального времени формируют одну крайность, работая без использования MMU, в то время как микроядра находятся на другом конце, предоставляя подсистемам ядра индивидуальное адресное пространство. Ключевым принципом микроядра является придумать чётко определённые интерфейсы для взаимодействия с ОС, а также надёжные схемы передачи сообщений.

Рисунок 2.3 показывает архитектуру микроядра, где подсистемы ядра, такие как сетевой стек и файловые системы, имеют отдельное адресное пространство, аналогично приложениям. Микроядра требуют надёжных схем передачи сообщений. Работа в режиме реального времени и модульность обеспечиваются только в случае передачи сообщений должным образом. Микроядра активно обсуждались, особенно по отношению к монолитным ядрам. Одна из таких широко известных дискуссий была между создателем Linux, Линусом Торвальдсом и Эндрю Танненбаумом, который был создателем Minix ОС (микроядро). Дискуссия, возможно, не представляет очень большого интереса для читателя, который хочет разобраться во встраиваемом Linux.

 

Рисунок 2.3 Архитектура микроядра.

Рисунок 2.3 Архитектура микроядра.

 

Как видно, эти три типа ОС основаны на совершенно разных философиях. На одном конце спектра находятся ядра реального времени, которые не предоставляют защиты памяти; это сделано для того, чтобы система была более быстрой, но за счёт надежности. На другом конце микроядро, обеспечивающее защиту памяти для отдельных подсистем ядра за счёт сложности. Linux - это средний путь монолитных ядер, где всё ядро целиком работает в едином пространстве памяти. Является ли единое пространство памяти для ядра проблемой? Чтобы убедиться в том, что внедрение нового программное обеспечение ядра не вызывает никаких проблем с надёжностью, любое добавление проходит через большую проверку с точки зрения функциональности, дизайна и производительности прежде, чем оно принимается в основную ветку ядра. Этот процесс экспертизы, который каждый раз может быть очень утомительным, сделал ядро Linux одним из самых стабильных частей программного обеспечения. Это позволило ядру быть использованным в целом ряде разнообразных систем, таких как настольные компьютеры, КПК, и большие серверы.

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

Следующие два раздела представляют высокоуровневый обзор ядра Linux и пользовательского пространства.

 

Предыдущая  Содержание  Следующая