Minix 3 - это микроядерная ОС. Ее ядро обслуживает прерывания, диспетчиризацию процессов, межпроцессное взаимодействие и все. Все! Всего около 4000 строк кода на C, и 800 на ассемблере. Все остальное, включая драйверы устройств работает в пользовательском пространстве памяти, и ни один из этих процессов не имеет привилегий суперпользователя…

Бурные дискуссии о том, что же лучше, микроядерная или модульно-монолитная архитектура операционных систем, не утихают и по сей день. Различия между ними таковы: ядра ОС на основе монолитной архитектуры содержат в себе все необходимое для работы системы. Применительно к ОС с монолитными ядрами можно сказать, что ядро системы и является самой системой. В то время как ядра микроядерных ОС представляют собой скорее набор абстракций, которые не составляют ОС сами по себе, но позволяют реализовать ОС в виде серверов, которые будут использовать предоставляемые микроядром сервисы. Самые популярные из современных операционных систем, такие как Linux, *BSD и, отчасти, Windows NT/2k,/XP основаны на модульно-монолитной архитектуре.

У Minix 3 есть интересная особенность. Один из процессов, работающих в пользовательском пространстве называется сервером реинкарнаций. Он хранит в памяти таблицу процессов, и постоянно отслеживает их состояние. Если один из процессов станет работать некорректно, он просто перезапустит его, решив тем самым, как надеются разработчики, проблему. Но скорее всего все будет не совсем так. Как сказал один товарищ: - Вы увидите только бесконечные сообщения о реинкарнации, скажем, сбойного драйвера диска, но работать этот драйвер по прежнему не будет :-)

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

Э. Таненбаум, в дискуссиях по поводу микроядра, очень любит оперировать статистикой, говоря что в среднем, на 1000 строк кода приходится от 6 до 16 ошибок, следовательно количество ошибок в ядре Linux составляет около 15000, а в Windows XP - вдвое больше. Однако, существует ложь, большая ложь, и статистика, как третья, самая большая разновидность лжи :-) Честно говоря, в утверждение о наличие в ядре Linux пятнадцати тысяч (!) багов после всех отладок, верится с трудом. Разумеется легко найти ошибки в 4000 тысячах строк кода ядра в Minix, но самое главное в микроядерных ОС - это реализация межпроцессного взаимодействия (IPC), вот что действительно становится головной болью для программистов. По словам одного из разработчиков коммерческой микроядерной ОС (вероятно QNX), - Ядра ОС, по большей части, вызывают отказы из-за взаимоблокировки процессов, а в случае микроядерной архитектуры проблема становится гораздо более сложной.

Не всегда красивые теории, которые мы слышим с кафедры университета, подтверждаются в реальном мире. А еще говорят, что удел дилетантов - учить других.