Гибридное ядро — это ядро операционной системы , архитектура которого пытается объединить аспекты и преимущества микроядерной и монолитной архитектур ядра, используемых в операционных системах. [1] [2] [ ненадежный источник? ]
Традиционные категории ядер — это монолитные ядра и микроядра (при этом наноядра и экзоядра рассматриваются как более экстремальные версии микроядер). Категория «гибрид» является спорной из-за сходства гибридных ядер и обычных монолитных ядер; этот термин был отвергнут Линусом Торвальдсом как простой маркетинг. [3]
Идея гибридного ядра заключается в том, чтобы иметь структуру ядра, похожую на структуру микроядра, но реализовать эту структуру в виде монолитного ядра. В отличие от микроядра, все (или почти все) службы операционной системы в гибридном ядре по-прежнему находятся в пространстве ядра . Нет никаких преимуществ надежности, которые дает наличие служб в пространстве пользователя , как в случае с микроядром . Однако, как и в случае с обычным монолитным ядром , нет никаких накладных расходов на передачу сообщений и переключение контекста между режимом ядра и пользовательским режимом, которые обычно присущи микроядру.
Ярким примером гибридного ядра является ядро Microsoft Windows NT , которое лежит в основе всех операционных систем семейства Windows NT , вплоть до Windows 11 и Windows Server 2022 , а также Windows Phone 8 , Windows Phone 8.1 , а также консолей Xbox One и Xbox Series .
Windows NT была первой операционной системой Windows, основанной на гибридном ядре [ требуется ссылка ] . Гибридное ядро было разработано как модифицированное микроядро , на которое повлияло микроядро Mach, разработанное Ричардом Рашидом в Университете Карнеги-Меллона, но не отвечающее всем критериям чистого микроядра. Windows на базе NT классифицируется как гибридное ядро (или макроядро [4] ), а не монолитное ядро, поскольку подсистемы эмуляции работают в серверных процессах пользовательского режима, а не в режиме ядра, как в монолитном ядре, и, кроме того, из-за большого количества целей проектирования, которые напоминают цели проектирования Mach (в частности, отделение личностей ОС от общего дизайна ядра). Напротив, причина, по которой NT не является системой микроядра, заключается в том, что большинство компонентов системы работают в том же адресном пространстве , что и ядро, как это было бы в случае монолитной архитектуры (в традиционной монолитной архитектуре не было бы микроядра как такового, но ядро реализовывало бы в целом схожую функциональность с микроядром NT и подсистемами режима ядра).
Основная личность операционной системы в Windows — это Windows API , который всегда присутствует. Подсистема эмуляции, которая реализует личность Windows, называется Client/Server Runtime Subsystem (csrss.exe). В версиях NT до 4.0 этот процесс подсистемы также содержал оконный менеджер, интерфейс графического устройства и драйверы графических устройств. Однако по соображениям производительности в версии 4.0 и более поздних эти модули (которые часто реализуются в пользовательском режиме даже в монолитных системах, особенно тех, которые разработаны без внутренней поддержки графики) работают как подсистема режима ядра. [4]
Приложения, работающие на NT, написаны для одной из персонализаций ОС (обычно Windows API), а не для собственного API NT, для которого документация не является общедоступной (за исключением процедур, используемых при разработке драйверов устройств). Персонализация ОС реализуется с помощью набора DLL пользовательского режима (см. Библиотека динамической компоновки ), которые отображаются в адресные пространства процессов приложений по мере необходимости, вместе с серверным процессом подсистемы эмуляции (как описано ранее). Приложения получают доступ к системным службам, вызывая DLL персонализации ОС, отображенные в их адресные пространства, которые, в свою очередь, вызывают библиотеку времени выполнения NT (ntdll.dll), также отображенную в адресное пространство процесса. Библиотека времени выполнения NT обслуживает эти запросы, перехватывая режим ядра, чтобы либо вызвать процедуры ядра-режима Executive, либо выполнить локальные вызовы процедур (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 , а комплект драйверов был заменен на API C++ для написания драйверов, называемый I/O Kit [ требуется ссылка ] .
Как и некоторые другие современные ядра , XNU представляет собой гибрид, содержащий функции как монолитных , так и микроядер , и пытающийся наилучшим образом использовать обе технологии, такие как возможность передачи сообщений микроядер, что обеспечивает большую модульность [ требуется ссылка ] и позволяет большим частям ОС использовать защищенную память [ требуется ссылка ], а также сохраняет скорость монолитных ядер для некоторых критических задач.
Что касается всего этого "гибридного ядра" - это просто маркетинг. Это "О, у этих микроядер был хороший PR, как мы можем попытаться получить хороший PR для нашего рабочего ядра? О, я знаю, давайте используем крутое название и попытаемся намекнуть, что у него есть все преимущества PR, как и у той другой системы.