Может ли кто-нибудь объяснить разницу в примерах между монолитным и микроядро? Другие классификации ядра?
В чем разница между монолитным и микроядро?
Ответ 1
Монолитное ядро - это один большой процесс, полностью работающий в одном адресном пространстве. Это один статический двоичный файл. Все службы ядра существуют и выполняются в адресном пространстве ядра. Ядро может вызывать функции напрямую. Примеры монолитных ядровых ОС: Unix, Linux.
В микроядрах ядро разбивается на отдельные процессы, известные как серверы. Некоторые из серверов работают в пространстве ядра, а некоторые запускаются в пространстве пользователя. Все серверы хранятся отдельно и выполняются в разных адресных пространствах. Серверы вызывают "сервисы" друг от друга, отправляя сообщения через IPC (Interprocess Communication). Такое разделение имеет то преимущество, что если один сервер выходит из строя, другие серверы могут работать эффективно. Примеры основанных на микроядрах ОС: Mac OS X и Windows NT.
Ответ 2
1) Монолитное ядро намного старше Microkernel, идея была задумана в конце 1980-х годов.
2) Монолитные ядра используются в Unix и Linux. Микроядра используются в QNX, L4 и HURD. Первоначально он использовался в Mach (не Mac OS X), но позже преобразован в гибридное ядро. Даже Minix не является чистым ядром, потому что драйверы устройств скомпилированы как часть ядра.
3) Монолитные ядра быстрее, чем микроядра. Первый микроядро Mach было на 50% медленнее, чем монолитное ядро, а более поздняя версия, такая как L4, была только на 2% или на 4% медленнее, чем монолитное ядро.
4) Монолитные ядра обычно громоздки. Чистый Microkernel должен быть небольшого размера, чтобы вписаться в кеш процессора L1 (микроядро первого поколения).
5). В монолитных ядрах драйверы устройств находятся в пространстве ядра, а в Microkernel драйверы устройств находятся в пользовательском пространстве.
6). Поскольку драйвер устройства находится в пространстве ядра, он делает монолитное ядро менее безопасным, чем микроядро, а сбой в драйвере может привести к сбою. Микроядра более безопасны, чем монолитные ядра, поэтому используются в некоторых военных устройствах.
7). Монолитные ядра используют сигналы и сокеты для обеспечения IPC, микроядерный подход использует очереди сообщений. Микроядра первого поколения, плохо реализованные IPC, были медленными при переключении контекста.
8) Добавление новой функции в монолитную систему означает перекомпиляцию всего ядра, тогда как с помощью микроядер вы можете добавлять новые функции или патчи без перекомпиляции.
Ответ 3
Монолитическое ядро
Все части ядра, такие как Планировщик, Файловая система, Управление памятью, Сетевые стеки, Драйверы устройств и т.д., поддерживаются в одной единице внутри ядра в Монолитное ядро
<сильные > Преимущества
• Более быстрая обработка
Недостатки
• Ошибка безопасности • Негибкость портирования • Взрыв размера ядра
<сильные > Примеры • MS-DOS, Unix, Linux
Микроядро
В ядро помещаются только очень важные компоненты, такие как IPC (Inter process Communication), базовый планировщик, базовая обработка памяти, базовые примитивы ввода-вывода и т.д. Общение происходит через передачу сообщений. Другие поддерживаются как серверные процессы в пользовательском пространстве.
<сильные > Преимущества
• Устойчивость к сбоям, перенос, меньший размер
Недостатки
• Более медленная обработка из-за дополнительного пропуска сообщений
<сильные > Примеры • Windows NT
Ответ 4
1. Монолитическое ядро (чисто монолитное): all
-
Все службы ядра с одного компонента
(-) дополнение/снятие невозможно, нет /Zero гибкий
(+) inter Компонент Коммуникация лучше
например.: - Традиционный Unix
Ядро 2.Micro: few
-
несколько служб (управление памятью, управление ЦП, IPC и т.д.) из основного ядра, другие службы (управление файлами, управление вводом-выводом и т.д.) из разных слоев/компонентов
-
Сплит-подход [Некоторые службы находятся в режиме привилегированных (ядро), а некоторые из них находятся в обычном (пользовательском) режиме]
(+), гибкий для изменений/повышающих градаций
(-) служебные данные связи
например: - QNX и т.д.
3.Модулярное ядро (модульное монолитическое): most
-
Комбинация микро- и монолитного ядра
-
Коллекция модулей - модули могут быть → Статические + Динамические
-
Драйверы поставляются в виде модулей
например.: - Современная ОС Linux
Ответ 5
В спектре конструкций ядра два крайних точками являются монолитные ядра и микроядра.
(классический) Linux Ядро, например, является монолитным ядром (и, следовательно, каждая коммерческая ОС на сегодняшний день, хотя они могут требовать иного);
В том, что его код является
один файл C, дающий начало одному процессу, который реализует все вышеперечисленное
Сервисы.
Чтобы проиллюстрировать инкапсуляцию ядра Linux, отметим, что
ядро Linux даже не имеет доступа ни к одной из стандартных библиотек C.
В самом деле, ядро Linux не может использовать рудиментарные функции библиотеки C, такие как
Printf. Вместо этого он реализует собственную функцию печати (называемую печатью).
Это уединение ядра Linux и самоконденсация обеспечивают ядро Linux
с его основным преимуществом: ядро находится в одном адресном пространстве1
что позволяет
все возможности для общения самым быстрым способом, не прибегая к
любой тип передачи сообщений.
В частности, монолитное ядро реализует все драйверы устройств
системы.
Это, однако, является основным недостатком монолитного ядра:
Внедрение любого нового неподдерживаемого оборудования требует перезаписи
ядра (в соответствующих частях), перекомпиляции его и повторной установки всего
OS.
Что еще более важно, если какой-либо драйвер устройства сбой, все ядро страдает
в результате.
Этот немодульный подход к аппаратным дополнениям и аппаратным сбоям
является основным аргументом в поддержку другого экстремального подхода к дизайну
для ядер. Микроядро в некотором смысле является минималистским ядром,
только самые основные сервисы ОС (например, управление процессами и файловая система
управление). В микроядре драйверы устройства лежат вне ядра
позволяя добавлять и удалять драйверы устройств во время работы ОС
и не требуют никаких изменений ядра.
Ответ 6
Монолитное ядро имеет все сервисы ядра вместе с основной частью ядра, поэтому они тяжелы и оказывают негативное влияние на скорость и производительность. С другой стороны, микроядро является легким, что приводит к увеличению производительности и скорости. Я ответил на один и тот же вопрос на сайте wordpress. Для разницы между монолитными, микроядрами и exokernel в табличной форме вы можете посетить здесь