Почему Windows NT является гибридным ядром

Обновлено: 07.07.2024

Гибридное ядро – это архитектура ядра операционной системы, которая пытается объединить аспекты и преимущества архитектуры микроядра и монолитного ядра, используемых в компьютерных операционных системах.

Обзор

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

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

Примеры

Ядро NT

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

Ярким примером гибридного ядра является ядро ​​Microsoft NT, на котором работают все операционные системы семейства Windows NT, включая Windows 10 и Windows Server 2012, а также на Windows Phone 8, Windows Phone 8.1 и Xbox One. . Windows на базе NT классифицируется как гибридное ядро ​​(или макроядро [2]), а не как монолитное ядро, поскольку подсистемы эмуляции работают в серверных процессах пользовательского режима, а не в режиме ядра, как в монолитном ядре, и, кроме того, из-за большое количество целей проектирования, которые напоминают цели проектирования Mach (в частности, отделение личностей ОС от общего дизайна ядра). И наоборот, причина, по которой NT не является микроядерной системой, заключается в том, что большинство системных компонентов работают в том же адресном пространстве, что и ядро, как это было бы в случае с монолитной архитектурой (в традиционной монолитной архитектуре не было бы микроядра для каждого ядра). se, но в ядре будет реализована функциональность, в целом аналогичная микроядру NT и подсистемам режима ядра).

Описание

Дизайн Windows NT включает в себя многие из тех же целей, что и Mach, архетипическая микроядерная система, одной из наиболее важных является ее структура как набор модулей, которые взаимодействуют через известные интерфейсы, с небольшим микроядром, ограниченным основными функциями. такие как обработка прерываний первого уровня, планирование потоков и примитивы синхронизации. Это позволяет использовать либо прямые вызовы процедур, либо межпроцессное взаимодействие (IPC) для связи между модулями и, следовательно, для потенциального размещения модулей в разных адресных пространствах (например, либо в пространстве ядра, либо в серверных процессах). Другие цели проектирования, общие с Mach, включали поддержку различных архитектур, ядро ​​​​с абстракциями, достаточно общими, чтобы позволить реализовать несколько личностей операционных систем поверх него, и объектно-ориентированную организацию. [2] [3]

Причина, по которой NT не является микроядерной системой, заключается в том, что почти все подсистемы, обеспечивающие системные службы, включая всю исполнительную систему, работают в режиме ядра, в том же адресном пространстве, что и само микроядро, а не в серверных процессах пользовательского режима. , как в случае с микроядерным дизайном. Это свойство NT разделяет с ранними версиями Mach, а также со всеми коммерческими системами, основанными на Mach, и проистекает из превосходной производительности, обеспечиваемой использованием прямых вызовов процедур в едином пространстве памяти, а не IPC, для связи между подсистемами. Подсистемы пользовательского режима в NT включают одну или несколько подсистем эмуляции, каждая из которых предоставляет приложениям индивидуальность операционной системы, подсистему диспетчера сеансов (smss.exe), которая запускает подсистемы эмуляции при запуске системы, и службу подсистемы локального администратора безопасности. (lsass.exe), обеспечивающий безопасность системы. Подсистемы записываются не для конкретной ОС, а для собственного API NT (или Native API).

Основной особенностью операционной системы Windows является Windows API, который присутствует всегда. Подсистема эмуляции, которая реализует индивидуальность Windows, называется подсистемой времени выполнения клиент/сервер (csrss.exe). В версиях NT до 4.0 этот процесс подсистемы также содержал оконный менеджер, интерфейс графического устройства и драйверы графического устройства. Однако из соображений производительности в версии 4.0 и более поздних версиях эти модули (которые часто реализуются в пользовательском режиме даже в монолитных системах, особенно в тех, которые разработаны без внутренней поддержки графики) работают как подсистема режима ядра. [2]

Начиная с 2007 г., еще одна индивидуальная операционная система, UNIX, предлагается в качестве необязательно устанавливаемого системного компонента в некоторых версиях Windows Vista и Windows Server 2003 R2. Связанный процесс подсистемы — это подсистема для приложений на основе UNIX (psxss.exe), которая ранее была частью надстройки Windows под названием «Службы Windows для UNIX». Подсистема OS/2 (os2ss.exe) поддерживалась в более старых версиях Windows NT, как и очень ограниченная подсистема POSIX (psxss.exe). Подсистема POSIX была заменена подсистемой UNIX, отсюда и такое же имя исполняемого файла. [4]

Приложения, работающие в NT, пишутся для одной из личностей ОС (обычно Windows API), а не для родного NT API, документация по которому не является общедоступной (за исключением подпрограмм, используемых при разработке драйверов устройств). Индивидуальность ОС реализуется с помощью набора библиотек DLL пользовательского режима (см. Библиотека динамической компоновки), которые при необходимости отображаются в адресные пространства процессов приложений вместе с серверным процессом подсистемы эмуляции (как описано ранее). Приложения получают доступ к системным службам, вызывая библиотеки DLL индивидуальности ОС, сопоставленные с их адресными пространствами, которые, в свою очередь, вызывают библиотеку времени выполнения NT (ntdll.dll), также сопоставленную с адресным пространством процесса. Библиотека времени выполнения NT обслуживает эти запросы, перехватывая режим ядра, чтобы либо вызывать исполнительные подпрограммы режима ядра, либо выполнять локальные вызовы процедур (LPC) для соответствующих серверных процессов подсистемы пользовательского режима, которые, в свою очередь, используют API NT для связи с процессы приложения, подсистемы режима ядра и друг друга. [4]

Ядро XNU

XNU — это ядро, которое Apple Inc. приобрела и разработала для использования в операционных системах OS X и iOS и выпустила как бесплатное программное обеспечение с открытым исходным кодом как часть операционной системы Darwin. XNU — это аббревиатура от X is Not Unix. [5]

Первоначально разработанный NeXT для операционной системы NeXTSTEP, XNU представлял собой гибридное ядро, объединяющее версию 2.5 ядра Mach, разработанного в Университете Карнеги-Меллона, с компонентами из 4.3BSD и объектно-ориентированным API для написания драйверов под названием Driver Kit.

После того, как Apple приобрела NeXT, компонент Mach был обновлен до версии 3.0, компоненты BSD были обновлены кодом из проекта FreeBSD, а набор драйверов был заменен API-интерфейсом C++ для написания драйверов под названием I/O Kit.

Описание

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

Многие операционные системы не основаны на одной модели операционной системы. Они могут содержать несколько операционных систем с разными подходами к производительности, безопасности, удобству использования и т. д. Это называется гибридной операционной системой.

Гибридная операционная система может позволять одной операционной системе выполнять один набор требований, а другой — остальным. Например, одна из операционных систем может предоставлять пользовательский интерфейс, мониторинг приложений и т. д., тогда как другая операционная система может быть высокопроизводительной операционной системой, которая не предоставляет те же услуги, что и первая операционная система.

Возможности гибридной операционной системы

Некоторые из важных особенностей гибридной операционной системы заключаются в следующем:

  • В гибридной операционной системе две операционные системы могут выполняться на одном устройстве. Это можно сделать, разделив память и процессор между операционными системами. Все системные ресурсы будут разделены между ними.
  • Две операционные системы в компьютерной системе могут включать полнофункциональную операционную систему и упрощенную операционную систему. Обе эти операционные системы будут выполнять разные наборы задач в зависимости от их возможностей.
  • Один из способов установки двух операционных систем – загрузить первую операционную систему со всеми системными ресурсами. Затем половина системных ресурсов выделяется первой операционной системе, а вторая операционная система загружается с оставшимися системными ресурсами.
  • Еще один способ работы с двумя операционными системами на одном устройстве — использование гипервизоров. Это программный уровень между оборудованием и гостевой операционной системой, который предоставляет гостевой операционной системе виртуализированное оборудование.
  • Обе операционные системы в гибридной среде могут знать о другой операционной системе и совместно использовать ресурсы друг с другом.Например, обе операционные системы могут иметь прямой доступ к аппаратным компонентам, таким как память, процессор, BIOS и т. д., и операционные системы могут выполняться в системе одновременно.

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

Ядро — это основная часть операционной системы, поскольку оно управляет работой компьютера и аппаратного обеспечения. Гибридное ядро ​​пытается объединить функции и аспекты микроядра и монолитного ядра. Это означает, что структура ядра должна быть аналогична микроядру, но структура должна быть реализована как монолитное ядро.

Хорошо известным примером гибридного ядра является ядро ​​Microsoft Windows NT. Это ядро ​​поддерживает все операционные системы семейства Windows NT. Оно называется гибридным ядром, а не монолитным ядром, поскольку подсистемы эмуляции работают в пользовательском режиме, а не в режиме ядра, в отличие от монолитного ядра.

Ядро NT также нельзя назвать микроядром. Это связано с тем, что почти все системные компоненты работают в том же адресном пространстве, что и ядро, что является особенностью монолитного ядра.

Рисунок, иллюстрирующий структуру ядра Microsoft Windows NT, выглядит следующим образом:

Hybrid Kernel

В основном в архитектуре операционной системы Windows NT есть два уровня: пользовательский режим и режим ядра. Пользовательский режим содержит интегральные подсистемы и экологические подсистемы с различными модулями в каждой из них.

Исполнительная часть режима ядра содержит исполнительные службы и диспетчер объектов. Исполнительные службы включают диспетчер ввода-вывода, диспетчер IPC, диспетчер процессов и т. д.

Помимо исполнительного режима, режим ядра содержит драйверы режима ядра, микроядро и уровень аппаратной абстракции. Уровень аппаратной абстракции связан с аппаратным обеспечением.

Гибридное ядро ​​— это архитектура ядра, основанная на сочетании аспектов архитектуры микроядра и монолитного ядра, используемых в компьютерных операционных системах. Категория вызывает споры из-за сходства с монолитным ядром; некоторые отвергают этот термин как просто маркетинг. Обычно принятыми категориями являются монолитные ядра и микроядра (при этом наноядра и экзоядра считаются более экстремальными версиями микроядер).

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

Полемика

Как упоминалось выше, гибридное ядро ​​похоже на монолитное ядро ​​в том смысле, что микроядро не влияет на производительность, а наличие служб в пользовательском пространстве не дает никаких преимуществ.

Это приводит к разногласиям: имеет ли структура, подобная микроядру, в монолитном ядре такое явное отличие, что необходима другая категория ядер?

Сторонники

Microsoft обычно использует термин "микроядро", а иногда и "модифицированное микроядро", "модифицированное микроядро или макроядро" cite web | title = Пользователь в режиме ядра MS Windows NT и технический документ GDI | издатель = корпорация Microsoft | дата = 2007 | url = http://www.microsoft.com/technet/archive/ntwrkstn/evaluate/featfunc/kernelwp.mspx?mfr=true | accessdate = 2007-03-01] при описании ядерной части архитектуры строки операционной системы Windows NT. Говорят, что вся архитектура состоит из «модифицированного микроядра», драйверов, исполнительной системы, HAL и GDI/GDI+ — все в пространстве ядра. Существуют API пользовательского пространства, поддерживающие различные среды ОС.

Противники

Многие эксперты по операционным системам и ядру считают этот ярлык бессмысленным и просто маркетинговым:

Примеры гибридного ядра

Ядро NT

Описание

Причина, по которой NT не является микроядерной системой, заключается в том, что почти все подсистемы, предоставляющие системные службы, включая всю исполнительную систему, работают в режиме ядра (в том же адресном пространстве, что и само микроядро), а не в пользовательском режиме сервера. процессов, как это было бы в случае с микроядерной конструкцией. Это свойство NT разделяет с ранними версиями Mach, а также со всеми коммерческими системами, основанными на Mach, и проистекает из превосходной производительности, обеспечиваемой использованием прямых вызовов процедур в едином пространстве памяти, а не IPC, для связи между подсистемами.< /p>

При описании NT список подсистем, которые не работают в режиме ядра, намного короче, чем список тех, которые работают.Подсистемы пользовательского режима в NT включают одну или несколько подсистем эмуляции, каждая из которых предоставляет приложениям индивидуальность операционной системы, подсистему диспетчера сеансов (smss.exe), которая запускает подсистемы эмуляции при запуске системы, и службу подсистемы локального администратора безопасности. (lsass.exe), обеспечивающий безопасность системы. Подсистемы записываются не для конкретной ОС, а для собственного API NT (или Native API ).

Ядро Plan 9

Описание

Классификация

Из-за широкого использования файловых серверов пользовательского режима вместе с некоторыми системами в ядре это более простой кандидат для включения в качестве гибридного ядра.

См. также

* Экзокернел
* Наноядро
* Операционная система с единым адресным пространством


Стоит упомянуть, что это ветка примерно 2008 года, и с тех пор многое изменилось как в ядрах Linux, так и в NT.

Для справки, у NT была довольно жесткая концепция того, каким может быть ее ядро/планировщик задач и что он может делать. Только «недавно» в последние несколько лет (и, предположительно, еще дальше с Win11? не уверен, я еще не читал никаких технических статей) начал становиться более гибким/динамичным, как это требуется для более продвинутых NUMA, big.LITTLE и т. д. .

По сути, NT никогда не была «микро» ядром, а Linux — «монолитным» ядром. Хотя было время, когда NT была более адаптивной, чем Linux, но по мере того, как Linux все больше и больше использовался как на больших серверах, так и на крошечных устройствах (особенно Android), произошла небольшая смена ролей.

По сути, NT никогда не была «микро» ядром, а Linux — «монолитным» ядром.

Ни один из этих терминов не имеет реального определения, и я столько раз видел, как они определялись и переопределялись в дебатах, чтобы доказать свою точку зрения.

Эндрю Таненбаум, по-видимому, считает, что NT была микроядром, и Эндрю Таненбаум также очень заинтересован в таком определении, чтобы доказать давние заявления об их успехе.

Еще один аспект — практика разработки. В Linux предполагается, что драйверы поддерживаются как часть ядра. У вас могут быть модули из дерева, но они являются гражданами второго сорта. В мире Windows драйверы разрабатываются сторонними организациями вне ядра, и существуют более стабильные интерфейсы. Я часто могу использовать драйверы для Windows 7 или, может быть, даже XP в текущей версии Windows 10. Таким образом, в некотором смысле можно сказать, что Linux разработан как монолитное ядро, а Windows — как гибридное ядро.

Меня удивил этот момент.

Так было давно. Вот откуда происходят случайные «утечки» исходного кода Windows.

Я немного сбит с толку. Страница, на которой вы бы запросили ядро, выдает «у вас ограничена скорость»

Эта статья 2008 года. Насколько она верна? Я сторонник Linux и не следил за NT с самого начала. Вносит ли Microsoft серьезные архитектурные изменения между версиями Windows?

Кроме того, поскольку я следил за ранними версиями Windows NT, я должен отметить, что Microsoft использовала NT как микроядро, за исключением случая, когда Дейв Катлер выступил с докладом на конференции Usenix по микроядрам, когда он сказал, что это не так. предмет. А именно: Microsoft говорит модные вещи о NT. Со временем неправда пропаганды становится очевидной, и все продолжают жить так, как будто их недавно не обманывали.

Кроме этого, это просто не имеет значения. Деловые люди должны иметь Word и Excel. Это означает, что они должны покупать Windows, чтобы запускать эти приложения. Windows NT не обязана быть сверхпроизводительной. Он должен достаточно быстро запускать Word, Excel и Outlook.

Я не следил за NT с самого начала. Вносит ли Microsoft серьезные архитектурные изменения между версиями Windows?

Аудио прошло через аналогичную историю на протяжении многих лет, и в современной Windows полностью обслуживается процессами пользовательского пространства (Windows даже добавила специальный режим суперзащиты целостности для процессов пользовательского пространства специально для защиты аудиосистемы пользовательского пространства от злобных пиратов).< /p>

В Windows 10 появилась новая архитектура пикопроцесса, которая использовалась для включения WSL 1 (вопреки распространенному заблуждению, WSL 1 не была подсистемой персонализации NT, такой как Win32 и подсистемы OS/2 и POSIX/Interix раньше).

В эпоху 7, 8, 10 под капотом была проделана значительная работа (хотя, по общему признанию, значительная ее часть была в пользовательском пространстве), чтобы включить Nano Server путем распутывания сложных зависимостей, необходимых системе, чтобы компоненты Windows могли быть аккуратно разделены и разобраны, чтобы обеспечить действительно минимальную установку. И, конечно же, в эту эпоху появился Hyper-V; а также встроенная поддержка контейнеризации в ядре.

В Windows 11 были внесены архитектурные изменения, изначально предназначенные для Windows 10X, которые более широко использовали преимущества встроенной поддержки контейнеров, чтобы сделать большую часть базовой системы горячей заменой во время выполнения, а не требовать перезагрузки.

Я также ожидаю, что прямо сейчас вносятся архитектурные изменения, чтобы продолжить интеграцию WSL 2 в систему как нечто большее, чем просто специальную виртуальную машину, а также продолжать углублять контейнеры и виртуализацию в аспекты Windows для дальнейшей изоляции. части системы друг от друга.

Читайте также: