Микроядро реализует все драйверы как программы пользовательского пространства и реализует основные функции, такие как IPC, в самом ядре. Однако монолитное ядро реализует драйверы как часть ядра (например, работает в режиме ядра).
Я читал некоторые утверждения, что микроядра работают медленнее, чем монолитные ядра, поскольку они должны обрабатывать передачу сообщений между драйверами в пространстве пользователя. Это правда?
В течение долгого времени большинство ядер были монолитными, потому что аппаратное обеспечение было слишком медленным для быстрой работы микроядер. Однако в настоящее время существует много микроядер и гибридных ядер, таких как GNU / Hurd, Mac OS X, линейка Windows NT и т. Д.
Итак, что-нибудь изменилось в производительности микроядра? Эта критика микроядра все еще актуальна сегодня?
источник
Я предпочитаю называть Windows NT и ядро Apple XNU монолитным, а не гибридным. Я не считаю, что классификация гибридов имеет большое значение на практике. На самом деле один из первых инженеров XNU называет его монолитным [1].
Что касается производительности, то единственное действительно глубокое сравнение монолитного и микроуровня, которое я могу найти, - это «Экстремальные высокопроизводительные вычисления или почему микрокереналы сосут» [2] и опровержение презентации «Микроядра сосут?» [3].
Модульность и настраиваемость - это больше вопросов проектирования, чем присущие монолитным ядрам ограничения. Например, размер ядра Linux может варьироваться от нескольких мегабайт до примерно одного мегабайта в зависимости от параметров времени компиляции и применения определенных исправлений. Подавляющее большинство из 15 миллионов строк кода Linux являются загружаемыми модулями ядра. Они компилируются отдельно от базового ядра и загружаются только при необходимости. Эти модули могут реализовывать драйверы и системные вызовы (даже переопределяя базовые системные вызовы).
Две области, в которых микроядра имеют неоспоримое преимущество, заключаются в малой памяти (<= 512 КБ оперативной памяти) или «жестких» операционных системах реального времени, таких как системы полетов авиакомпаний или системы управления ядерными реакторами.
Изменить: Говоря далее о преимуществах и недостатках любой архитектуры ядра, Gernot Heiser свободно признает в конце своей презентации [3], что монолитные ядра по своей природе более производительны, потому что микроядро всегда имеет некоторые дополнительные издержки. Тем не менее, эти дополнительные издержки приводят к повышению надежности, и, следовательно, доминированию микроядер в ОСРВ.
[1] Луи Дж. Гербарг, «Усовершенствованная синхронизация в Mac OS X: расширение Unix до SMP и реального времени», Материалы конференции BSDCon 2002, стр. 2
[2] Чистоф Ламетер, «Чрезвычайно высокопроизводительные вычисления или почему микроядра отстают», симпозиум Linux 2007, том первый
[3] Гернот Хайзер, «Неужели микроядра сосут?», 9-й Linux.conf.au, январь 2008 г.
источник