stringtranslate.com

Гибридное ядро

Структура операционных систем на основе монолитного ядра, микроядра и гибридного ядра.

Гибридное ядро ​​— это архитектура ядра операционной системы , которая пытается объединить аспекты и преимущества микроядерной и монолитной архитектуры ядра, используемой в операционных системах. [1] [2] [ ненадежный источник? ]

Обзор

Традиционными категориями ядер являются монолитные ядра и микроядра (при этом наноядра и экзоядра рассматриваются как более крайние версии микроядер). Категория «гибридные» спорна из-за сходства гибридных ядер и обычных монолитных ядер; Линус Торвальдс отверг этот термин как простой маркетинг. [3]

Идея гибридного ядра состоит в том, чтобы иметь структуру ядра, аналогичную структуре микроядра, но реализовать эту структуру в виде монолитного ядра. В отличие от микроядра, все (или почти все) службы операционной системы в гибридном ядре все еще находятся в пространстве ядра . Наличие сервисов в пользовательском пространстве не дает никаких преимуществ в плане надежности , как в случае с микроядром . Однако, как и в случае с обычным монолитным ядром , здесь нет никаких затрат на производительность при передаче сообщений и переключении контекста между режимом ядра и пользовательским режимом, которые обычно возникают в микроядре.

Примеры

ядро NT

Архитектура семейства операционных систем Windows NT состоит из двух уровней ( пользовательский режим и режим ядра ) со множеством различных модулей внутри обоих этих уровней.

Одним из ярких примеров гибридного ядра является ядро ​​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

Ядро XNU

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 представляет собой гибрид, содержащий функции как монолитного , так и микроядра , пытаясь наилучшим образом использовать обе технологии, такие как возможность передачи сообщений микроядер, обеспечивающая большую модульность и большие части ОС. чтобы извлечь выгоду из защищенной памяти , [ нужна ссылка ] , а также сохранить скорость монолитных ядер для некоторых критически важных задач.

Другие

Смотрите также

Примечания

  1. ^ "Гибридное ядро ​​- OSDev Wiki" . wiki.osdev.org . Проверено 11 января 2021 г.
  2. ^ «Что такое гибридное ядро? - Определение из Techopedia» . Techopedia.com . 22 августа 2011 года . Проверено 11 января 2021 г.
  3. ^ "Линус Торвальдс". Что касается всего этого «гибридного ядра» — это просто маркетинг. Это: «О, у этих микроядер был хороший пиар, как мы можем попытаться получить хороший пиар для нашего рабочего ядра? О, я знаю, давайте использовать крутое имя и попытаться дать понять, что у него есть все PR-преимущества, которые есть у другой системы.
  4. ^ ab «Пользователь в режиме ядра MS Windows NT и технический документ GDI» . Корпорация Майкрософт. 2007 . Проверено 24 августа 2022 г.
  5. ^ Проберт, Дэйв (2005). «Обзор архитектуры Windows». Использование проектов на основе внутренних API-интерфейсов NT для обучения принципам работы ОС . Microsoft Research/Азия – Пекин. Архивировано из оригинала 28 ноября 2007 г. Проверено 1 марта 2007 г.
  6. ^ «Портирование приложений UNIX/Linux на OS X: Глоссарий». Компьютер Apple. 2005 . Проверено 16 июня 2017 г.
  7. ^ аб Джим Маги. WWDC 2000, сеанс 106 — Mac OS X: ядро. 14 минут.
  8. ^ Дуглас М. Уэллс (1994). Надежная масштабируемая среда операционной системы реального времени (PDF) . 1994 г. Конференция IEEE по технологиям и приложениям двойного назначения. S2CID  5205380. Архивировано из оригинала (PDF) 22 августа 2017 г.
  9. ^ Дрю ​​Мейджор; Грег Миншалл; Кайл Пауэлл. «Обзор операционной системы NetWare».
  10. ^ «Ядро OS/2» . Проверено 4 сентября 2020 г.

Рекомендации