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 и 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

Ядро 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 , а комплект драйверов был заменен на API C++ для написания драйверов, называемый I/O Kit [ требуется ссылка ] .

Описание

Как и некоторые другие современные ядра , XNU представляет собой гибрид, содержащий функции как монолитных , так и микроядер , и пытающийся наилучшим образом использовать обе технологии, такие как возможность передачи сообщений микроядер, что обеспечивает большую модульность [ требуется ссылка ] и позволяет большим частям ОС использовать защищенную память [ требуется ссылка ], а также сохраняет скорость монолитных ядер для некоторых критических задач.

Другие

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

Примечания

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

Ссылки