Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

Обзор [ править ]

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

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

Примеры [ править ]

Ядро NT [ править ]

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

Одним из ярких примеров гибридного ядра является ядро Microsoft Windows NT, которое поддерживает все операционные системы в семействе Windows NT , вплоть до Windows 10 и Windows Server 2019 , а также Windows Phone 8 , Windows Phone 8.1 и Xbox One .

Windows NT была первой операционной системой Windows, основанной на гибридном ядре. Гибридное ядро ​​было спроектировано как модифицированное микроядро под влиянием микроядра Маха, разработанного Ричардом Рашидом из Университета Карнеги-Меллона, но не отвечающее всем критериям чистого микроядра. Windows на базе NT классифицируется как гибридное ядро ​​(или макроядро [4]), а не монолитное ядро, потому что подсистемы эмуляции работают в серверных процессах пользовательского режима, а не в режиме ядра, как в монолитном ядре, и, кроме того, из-за большого количества целей проектирования, которые напоминают цели проектирования в Mach (в частности, разделение личностей ОС из общего дизайна ядра). И наоборот, причина, по которой NT не является системой с микроядром, заключается в том, что большинство компонентов системы работают в том же адресном пространстве, что и ядро, как это было бы в случае с монолитным дизайном (в традиционном монолитном дизайне не было бы микроядра на каждый se, но ядро ​​будет реализовывать в целом схожие функции с микроядром 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) для соответствующих серверных процессов подсистемы пользовательского режима, которые, в свою очередь, используют NT API для связи с прикладные процессы, подсистемы режима ядра и друг друга. [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 является гибридом, содержащим функции как монолитного, так и микроядра , пытаясь наилучшим образом использовать обе технологии, например, возможность передачи сообщений микроядрами, обеспечивающую большую модульность [ необходима цитата ] и большие части ОС чтобы извлечь выгоду из защищенной памяти , [ править ] , а также сохраняя скорость монолитных ядер для определенных критических задач.

Другое [ править ]

  • BeOS
    • Хайку
  • Слог
  • На основе BSD
    • DragonFly BSD (первая ОС BSD, отличная от Mach, использующая гибридное ядро)
  • NetWare [9]
  • План 9 от Bell Labs
    • Inferno
  • OS / 2 [10]
    • eComStation
    • ArcaOS
    • OS / 4
  • ReactOS
  • Tru64 UNIX (ранее Digital UNIX )

См. Также [ править ]

  • Микроядро
  • Exokernel
  • Наноядро
  • Монолитное ядро
  • Операционная система с единым адресным пространством
  • Архитектура Windows NT
  • XNU

Примечания [ править ]

[11]

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

Ссылки [ править ]

  • Марк Руссинович (23 ноября 2004 г.). «Внутри собственного API» . Sysinternals . Архивировано из оригинала 15 марта 2006 года . Проверено 24 июля 2006 года .