Что такое микроядро и в чем особенности архитектуры микроядра?

Большинство операционных систем, таких как Windows, macOS и многочисленные варианты Linux используют гибридные или монолитные ядра. Кто может популярно рассказать, в чем особенность микроядра и зачем оно нужно?

Интересный вопрос - спасибо что его задали. Обычно здесь не интересуются теоретической частью, а только "как что нибудь починить ли установить".

Перед тем как перейти к предметному рассмотрению микроядра, давайте дадим определение "ядру операционной системы". Итак, что же такое ядро?

### **Что такое ядро?**

Ядро - важная часть ОС, которая управляет системными ресурсами. Оно также действует как мост между программным и аппаратным обеспечением компьютера. Это одна из первых программ, которая загружается при запуске после загрузчика. Ядро также отвечает за обеспечение безопасного доступа к аппаратному обеспечению машины для различных программ. Оно также решает, когда и как долго определенное приложение использует определенное оборудование. 

### **Что такое микроядро?**

Микроядро - это программное обеспечение или код, который содержит необходимый минимальный объем функций, данных и возможностей для реализации операционной системы. Он предоставляет минимальное количество механизмов, которого достаточно для выполнения большинства основных функций операционной системы. Оно позволяет реализовать другие части операционной системы, поскольку не требует применения множества политик. Микроядра и их пользовательские среды обычно реализуются на языках программирования C ++ или C с небольшим количеством ассемблера. 

### **Преимущества микроядра**

Вот плюсы / преимущества использования Microkernel 

* Архитектура микроядра мала и изолирована, поэтому может работать лучше (меньше кода = меньше ошибок)
* Микроядра  более безопасны, потому что включены только те компоненты, которые представляют "необходимый минимум".
* Добавление функционала для операционной системы более доступно, потому что можно добавить загружаемые модули, не мешая работе самого ядра. Микроядра имеют модульную структуру, и различные модули можно заменять, перезагружать, модифицировать, даже не касаясь ядра.
* Меньше сбоев системы по сравнению с монолитными системами. Интерфейс микроядра помогает обеспечить более модульную структуру системы. Без перекомпиляции добавить новые функции
* Неисправность сервера также изолирована, как и неисправность любой другой пользовательской программы.
* Система микроядра является гибкой, поэтому разные стратегии и API, реализованные на разных серверах, могут сосуществовать в системе.
* Повышенная безопасность и стабильность приведут к уменьшению количества кода, который работает в режиме ядра.

### **Недостатки микроядра**

* Работа различных программ и сервисов в системе с микроядром более накладна с точки зрения ресурсов по сравнению с обычной монолитной системой (больше переключений контекста)
* Переключение контекста сказывается на общей производительности системы. Поэтому системы с микроядром хороши для выполнения какого то ограниченного набора задач, где не требуется взаимодействие с внешними средами, программами и так далее.