В чем разница между монолитным и микроядром? - PullRequest
105 голосов
/ 27 декабря 2010

Может ли кто-нибудь объяснить на примерах разницу между монолитным и микроядром?Также другие классификации ядра?

Ответы [ 6 ]

107 голосов
/ 04 марта 2011

Монолитное ядро ​​- это один большой процесс, работающий полностью в одном адресном пространстве. Это один статический двоичный файл. Все службы ядра существуют и выполняются в адресном пространстве ядра. Ядро может вызывать функции напрямую. Примеры ОС на основе монолитного ядра: Unix, Linux.

В микроядрах ядро ​​разбивается на отдельные процессы, известные как серверы. Некоторые из серверов работают в пространстве ядра, а некоторые - в пространстве пользователя. Все серверы хранятся отдельно и работают в разных адресных пространствах. Серверы вызывают «сервисы» друг от друга, отправляя сообщения через IPC (Interprocess Communication). Преимущество такого разделения заключается в том, что в случае отказа одного сервера другие серверы могут работать эффективно. Примеры ОС на базе микроядра: Mac OS X и Windows NT.

68 голосов
/ 02 февраля 2013

1 ) Монолитное ядро ​​намного старше Микроядра, идея была задумана в конце 1980-х годов.

2 ) Монолитные ядра используются в Unixи Linux.Микроядра используются в QNX, L4 и HURD.Первоначально он использовался в Mach (не Mac OS X), но позже был преобразован в гибридное ядро.Даже Minix не является чистым ядром, потому что драйверы устройств скомпилированы как часть ядра.

3 ) Монолитные ядра быстрее, чем микроядра.Первое микроядро Mach было на 50% медленнее, чем монолитное ядро, в то время как более поздняя версия, такая как L4, была всего на 2% или 4% медленнее, чем монолитное ядро.

4 ) Обычно монолитные ядра громоздкиЧистое микроядро должно быть небольшого размера, чтобы помещаться в кэш L1 процессора (микроядро первого поколения).

5 ) В монолитных ядрах драйверы устройств находятся в пространстве ядра, в то время какв микроядре драйверы устройств находятся в пользовательском пространстве.

6 ) Поскольку драйвер устройства находится в пространстве ядра, это делает монолитное ядро ​​менее безопасным, чем микроядро, и сбой в драйвереможет привести к аварии.Микроядра более безопасны, чем монолитное ядро, поэтому используются в некоторых военных устройствах.

7 ) Монолитные ядра используют сигналы и сокеты для обеспечения IPC, микроядерный подход использует очереди сообщений.Микроядра 1-го поколения плохо реализовали IPC, поэтому медленные переключатели контекста.

8 ) Добавление новой функции в монолитную систему означает перекомпиляцию всего ядра, тогда как с микроядрами вы можете добавлять новые функции илипатчи без перекомпиляции.

21 голосов
/ 22 июня 2013

Монолитное ядро ​​

Все части ядра, такие как планировщик, файловая система, управление памятью, сетевые стеки, драйверы устройств и т. Д., Хранятся в одном блоке в ядрев Монолитное ядро ​​

Преимущества

• Ускоренная обработка

Недостатки

• Небезопасный сбой • Гибкость переноса • Взрыв размера ядра

Примеры • MS-DOS, Unix, Linux

Микроядро

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

Преимущества

• Устойчивость к сбоям, переносная, меньший размер

Недостатки

• Более медленная обработка из-за дополнительной передачи сообщений

Примеры • Windows NT

13 голосов
/ 29 декабря 2014

1. Монолитное ядро ​​(чисто монолитное): all

  • Все услуги ядра из одного компонента

    (-) добавление /удаление невозможно, меньше / Ноль гибкий

    (+) Интер Компонент Связь лучше

Например: - Традиционный Unix

2.Микро ядро: few

  • несколько служб (управление памятью, управление процессором, IPC и т. Д.) Из ядра ядра, другие службы (управление файлами,Управление вводом / выводом и т. Д.) Из разных слоев / компонентов

  • Подход с разделением [Некоторые службы находятся в привилегированном (ядро) режиме, а некоторые - в обычном (пользовательском) режиме]

    (+) гибко для изменений / обновлений

    (-) накладные расходы на связь

например: - QNX и т. Д.

3.Модульное ядро ​​(модульное монолитное): most

  • Сочетание микро- и монолитного ядра

  • Коллекция модулей - модули can be -> Static + Dynamic

  • Драйверы выпускаются в виде модулей

, например: - Linux Modern OS

0 голосов
/ 15 декабря 2017

Монолитное ядро ​​имеет все службы ядра вместе с ядром, поэтому они тяжелые и отрицательно влияют на скорость и производительность. С другой стороны, микроядро имеет небольшой вес, что приводит к увеличению производительности и скорости.
Я ответил на тот же вопрос на сайте WordPress. Для разницы между монолитным, микроядерным и экзокерновым в табличной форме, вы можете посетить здесь

0 голосов
/ 06 июня 2017

В спектре конструкций ядра две крайние точки - это монолитные ядра и микроядра.

Например, (классическое) ядро ​​Linux - это монолитное ядро ​​(как и все коммерческие ОС на сегодняшний день - хотяони могут требовать иного);

В том смысле, что его код представляет собой один файл C, дающий начало одному процессу, который реализует все вышеперечисленные сервисы.
Чтобы проиллюстрировать инкапсуляцию ядра Linux, отметим, что ядро ​​Linux даже не имеет доступа ни к одной из стандартных библиотек C.Действительно, ядро ​​Linux не может использовать элементарные функции библиотеки C, такие как printf.Вместо этого он реализует свою собственную функцию печати (называемую печать).

Это изолированное ядро ​​Linux и самодостаточность дают ядру Linux главное преимущество: ядро ​​находится в едином адресном пространстве1, позволяя всем функциям взаимодействовать максимально быстро, не прибегая к какому-либо типу передачи сообщений.,В частности, монолитное ядро ​​реализует все драйверы устройств системы.

Это, однако, является основным недостатком монолитного ядра: внедрение любого нового неподдерживаемого оборудования требует переписывания ядра (в соответствующих частях), перекомпиляция и переустановка всей ОС.
Что еще более важно, в случае сбоя какого-либо драйвера устройства в результате страдает все ядро.Этот немодульный подход к аппаратным дополнениям и аппаратным сбоям является основным аргументом в поддержку другого экстремального подхода к проектированию для ядер.Микроядро в некотором смысле является минималистичным ядром, в котором размещены только самые базовые сервисы ОС (такие как управление процессами и управление файловой системой).В микроядре драйверы устройств находятся вне ядра, что позволяет добавлять и удалять драйверы устройств во время работы ОС и не требует изменений ядра.

...