Гибридное ядро — это архитектура ядра операционной системы , которая пытается объединить аспекты и преимущества микроядерной и монолитной архитектуры ядра, используемой в операционных системах. [1] [2] [ ненадежный источник? ]
Традиционными категориями ядер являются монолитные ядра и микроядра (при этом наноядра и экзоядра рассматриваются как более крайние версии микроядер). Категория «гибридные» спорна из-за сходства гибридных ядер и обычных монолитных ядер; Линус Торвальдс отверг этот термин как простой маркетинг. [3]
Идея гибридного ядра состоит в том, чтобы иметь структуру ядра, аналогичную структуре микроядра, но реализовать эту структуру в виде монолитного ядра. В отличие от микроядра, все (или почти все) службы операционной системы в гибридном ядре все еще находятся в пространстве ядра . Наличие сервисов в пользовательском пространстве не дает никаких преимуществ в плане надежности , как в случае с микроядром . Однако, как и в случае с обычным монолитным ядром , здесь нет никаких затрат на производительность при передаче сообщений и переключении контекста между режимом ядра и пользовательским режимом, которые обычно возникают в микроядре.
Одним из ярких примеров гибридного ядра является ядро Microsoft Windows NT , которое работает во всех операционных системах семейства Windows NT , вплоть до Windows 11 и Windows Server 2022 включительно , а также работает на Windows Phone 8 , Windows Phone 8.1 и Xbox One .
Windows NT была первой операционной системой Windows, основанной на гибридном ядре . Гибридное ядро было разработано как модифицированное микроядро под влиянием микроядра Маха, разработанного Ричардом Рашидом в Университете Карнеги-Меллон, но не отвечающее всем критериям чистого микроядра. Windows на базе NT классифицируется как гибридное ядро (или макроядро [4] ), а не монолитное ядро, поскольку подсистемы эмуляции выполняются в серверных процессах пользовательского режима, а не в режиме ядра, как в монолитном ядре, и, кроме того, из-за большое количество целей проектирования, которые напоминают цели проектирования Маха (в частности, отделение особенностей ОС от общего дизайна ядра). И наоборот, причина, по которой NT не является системой микроядра, заключается в том, что большинство компонентов системы работают в том же адресном пространстве , что и ядро, как и в случае с монолитной архитектурой (в традиционной монолитной архитектуре не было бы микроядра для каждой системы). так, но ядро будет реализовывать во многом аналогичную функциональность микроядру и подсистемам режима ядра NT).
Основной особенностью операционной системы Windows является Windows API , который всегда присутствует. Подсистема эмуляции, реализующая особенности Windows, называется подсистемой выполнения клиент/сервер (csrss.exe). В версиях NT до 4.0 этот процесс подсистемы также содержал оконный менеджер, интерфейс графического устройства и драйверы графического устройства. Однако из соображений производительности в версии 4.0 и более поздних эти модули (которые часто реализуются в пользовательском режиме даже в монолитных системах, особенно в тех, которые разработаны без внутренней графической поддержки) работают как подсистема режима ядра. [4]
Приложения, работающие в NT, записываются на одну из особенностей ОС (обычно Windows API), а не на собственный NT API, документация по которому не является общедоступной (за исключением подпрограмм, используемых при разработке драйверов устройств). Личность ОС реализуется через набор библиотек DLL пользовательского режима (см. Библиотеку динамической компоновки ), которые по мере необходимости отображаются в адресные пространства процессов приложений вместе с серверным процессом подсистемы эмуляции (как описано ранее). Приложения получают доступ к системным службам, вызывая библиотеки DLL ОС, сопоставленные с их адресными пространствами, которые, в свою очередь, вызывают библиотеку времени выполнения NT (ntdll.dll), также отображаемую в адресном пространстве процесса. Библиотека времени выполнения NT обслуживает эти запросы, перехватывая их в режим ядра, чтобы либо вызвать исполнительные процедуры режима ядра, либо выполнить вызовы локальных процедур (LPC) соответствующим серверным процессам подсистемы пользовательского режима, которые, в свою очередь, используют API NT для связи с процессы приложений, подсистемы режима ядра и друг друга. [5]
XNU — это ядро , которое компания Apple Inc. приобрела и разработала для использования в операционных системах macOS , iOS , watchOS и tvOS и выпустила как бесплатное программное обеспечение с открытым исходным кодом как часть операционной системы Darwin . XNU — это аббревиатура от X is Not Unix . [6]
Первоначально разработанное NeXT для операционной системы NeXTSTEP , XNU представляло собой гибридное ядро, сочетающее версию 2.5 ядра Mach с компонентами из 4.3BSD и объектно-ориентированный API для написания драйверов, называемый Driver Kit.
После того, как Apple приобрела NeXT, компонент Mach был обновлен до OSFMK 7.3, [7] который представляет собой микроядро. [8] Apple использует сильно модифицированную версию OSFMK 7.3, функционирующую как гибридное ядро с включенными частями FreeBSD. [7] (OSFMK 7.3 включает применимый код из ядра Mach 4 Университета Юты и применимый код из многих вариантов Mach 3.0, которые произошли от исходного ядра Mach 3.0 Университета Карнеги-Меллона.) Компоненты BSD были обновлены с помощью кода из FreeBSD . проект , а Driver Kit был заменен C++ API для написания драйверов под названием I/ O Kit .
Как и некоторые другие современные ядра , XNU представляет собой гибрид, содержащий функции как монолитного , так и микроядра , пытаясь наилучшим образом использовать обе технологии, такие как возможность передачи сообщений микроядер, обеспечивающая большую модульность и большие части ОС. чтобы извлечь выгоду из защищенной памяти , [ нужна ссылка ] , а также сохранить скорость монолитных ядер для некоторых критически важных задач.
Что касается всего этого «гибридного ядра» — это просто маркетинг. Это: «О, у этих микроядер был хороший пиар, как мы можем попытаться получить хороший пиар для нашего рабочего ядра? О, я знаю, давайте использовать крутое имя и попытаться дать понять, что у него есть все PR-преимущества, которые есть у другой системы.