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


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

6 90

6 ответов:

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

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

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-го поколения плохо реализован МПК так медленно на переключение контекста.

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

монолитное ядро

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

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

* более быстрая обработка

недостатки

•Аварии Небезопасно * Портирование Негибкости * Размер Ядра взрыв

примеры * MS-DOS, Unix, Linux

микро-ядра

только очень важные части, такие как IPC(Inter process Communication), базовый планировщик, базовая обработка памяти, основные примитивы ввода/вывода и т. д. введены в ядро. Связь происходит через передачу сообщений. Другие поддерживаются как серверные процессы в пользовательском пространстве

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

* Ударопрочный, Портативный, Меньший Размер

недостатки

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

примеры * Windows NT

1.Монолитное Ядро (Чисто Монолитное):all

  • все службы ядра из одного компонента

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

    (+) межкомпонентная связь лучше

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

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

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

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

    (+)гибкий для изменений/вверх-градаций

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

например:QNX etc.

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

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

  • коллекция модулей -- модули могут быть -- > статические + динамические

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

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

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

в спектре конструкций ядра два крайних точки представляют собой монолитные ядра и микроядра.

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

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

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

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