it-swarm.com.ru

В чем разница между монолитным и микроядром?

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

98
Renjith G

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

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

102
sariful islam

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

61
Rahul Bhadana

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

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

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

• Быстрая обработка

Недостатки

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

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

Микро ядро ​​

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

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

• Ударопрочный, портативный, меньший размер

Недостатки

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

Примеры • Windows NT

20
user2018144

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

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

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

    (+) Inter Component Communication лучше

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

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

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

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

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

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

например :: QNX и т. д.

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

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

  • Коллекция модулей - модули могут быть -> Static + Dynamic

  • Драйверы бывают в виде модулей

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

13
Naman Vaishnav

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

1
Yogesh Jilhawar

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

Например, (классическое) ядро ​​Linux Является монолитным ядром (как и все коммерческие ОС до настоящего времени - хотя они могут утверждать иное);

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

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

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

0
TheLogicGuy