2.1.3 Микроядра |
Предыдущая Содержание Следующая |
![]() |
Такие ядра подвергались многочисленным исследованиям, особенно в конце 1980-х, и считались наилучшими по отношению к принципам разработки ОС. Тем не менее, переход от теории к практике привёл к слишком большому числу узких мест; очень немногие из таких ядер были успешными на рынке. Микроядро использует небольшую ОС, которая предоставляет только основной сервис (планирование, обработка прерываний, передача сообщений), а остальная часть ядра (файловая система, драйверы устройств, сетевой стек) работает в качестве приложений. По отношению к использованию MMU, ядра реального времени формируют одну крайность, работая без использования MMU, в то время как микроядра находятся на другом конце, предоставляя подсистемам ядра индивидуальное адресное пространство. Ключевым принципом микроядра является придумать чётко определённые интерфейсы для взаимодействия с ОС, а также надёжные схемы передачи сообщений. Рисунок 2.3 показывает архитектуру микроядра, где подсистемы ядра, такие как сетевой стек и файловые системы, имеют отдельное адресное пространство, аналогично приложениям. Микроядра требуют надёжных схем передачи сообщений. Работа в режиме реального времени и модульность обеспечиваются только в случае передачи сообщений должным образом. Микроядра активно обсуждались, особенно по отношению к монолитным ядрам. Одна из таких широко известных дискуссий была между создателем Linux, Линусом Торвальдсом и Эндрю Танненбаумом, который был создателем Minix ОС (микроядро). Дискуссия, возможно, не представляет очень большого интереса для читателя, который хочет разобраться во встраиваемом Linux.
![]() Рисунок 2.3 Архитектура микроядра.
Как видно, эти три типа ОС основаны на совершенно разных философиях. На одном конце спектра находятся ядра реального времени, которые не предоставляют защиты памяти; это сделано для того, чтобы система была более быстрой, но за счёт надежности. На другом конце микроядро, обеспечивающее защиту памяти для отдельных подсистем ядра за счёт сложности. Linux - это средний путь монолитных ядер, где всё ядро целиком работает в едином пространстве памяти. Является ли единое пространство памяти для ядра проблемой? Чтобы убедиться в том, что внедрение нового программное обеспечение ядра не вызывает никаких проблем с надёжностью, любое добавление проходит через большую проверку с точки зрения функциональности, дизайна и производительности прежде, чем оно принимается в основную ветку ядра. Этот процесс экспертизы, который каждый раз может быть очень утомительным, сделал ядро Linux одним из самых стабильных частей программного обеспечения. Это позволило ядру быть использованным в целом ряде разнообразных систем, таких как настольные компьютеры, КПК, и большие серверы. С введением динамически загружаемых модулей ядра были некоторые сомнения в отношении монолитной архитектуры Linux. Динамически загружаемые модули ядра являются кусками кода ядра, которые не скомпонованы (не включены) непосредственно в ядро. Они компилируются отдельно и их можно вставить и удалить из работающего ядра почти в любое время. Загружаемые модули ядра хранятся отдельно и загружаются в память только при необходимости, что позволяет экономить память. Следует также отметить, что повышение модульности ядра не делает его менее монолитным, поскольку ядро взаимодействует с драйверами используя вместо передачи сообщений прямые вызовы функций. Следующие два раздела представляют высокоуровневый обзор ядра Linux и пользовательского пространства.
|
Предыдущая Содержание Следующая |