Почему Linux называют монолитным ядром?

Шрифты TrueType (TTF) будут обычно работать над Windows, Mac и платформами Linux.

http://en.wikipedia.org/wiki/TrueType

191
задан Peter Mortensen 19 September 2011 в 19:19
поделиться

4 ответа

Монолитное ядро ​​- это ядро, в котором все службы (файловая система, VFS, драйверы устройств и т. Д.), А также основные функции (планирование, выделение памяти и т. Д.) Представляют собой сплоченную группу, разделяющую одно и то же пространство. Это прямо противоположно микроядру .

Микроядро предпочитает подход, при котором основные функции изолированы от системных служб и драйверов устройств (которые в основном являются просто системными службами). Например, VFS (виртуальная файловая система) и файловые системы блочных устройств (то есть minixfs) - это отдельные процессы, которые выполняются вне пространства ядра, используя IPC для связи с ядром, другими службами и пользовательскими процессами. Короче говоря, если это модуль в Linux, то это служба в микроядре, указывающая на изолированный процесс.

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

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

Недостатком микроядра является то, что асинхронный обмен сообщениями IPC может стать очень трудным для отладки, особенно если реализованы фибриллы . Кроме того, простое отслеживание проблемы FS / записи означает изучение процесса пользовательского пространства, службы блочного устройства, службы VFS, службы файловой системы и (возможно) службы PCI. Если у вас ничего не получилось, самое время взглянуть на службу IPC. В монолитном ядре это часто бывает проще. GNU Hurd страдает от этих проблем отладки ( ссылка ). Я даже не буду вдаваться в контрольные точки при работе со сложными очередями сообщений. Микроядра не для слабонервных.

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

Я использую Linux (монолитный) в производстве. Тем не менее, большая часть моего обучения, взлома или возни с разработкой ядра уходит в микроядро, в частности HelenOS .

Править

Если вы дошли до этого с помощью моего очень длинного ответа, вы, вероятно, повеселитесь, прочитав « Великие дебаты Торвальдса-Таненбаума о конструкции ядра ». Еще смешнее читать в 2013 году, спустя более 20 лет после того, как это выяснилось. Самым забавным была подпись Линуса в одном из последних сообщений:

Linus "my first, and hopefully last flamefest" Torvalds

Очевидно, это сбылось не больше, чем предсказание Таненбаума, что x86 скоро устареет.

NB:

Когда я говорю «Minix». , Я не имею в виду Minix 3. Кроме того, когда я упоминаю HURD, я имею в виду (в основном) микроядро Маха. Я не собираюсь принижать недавнюю работу других.

272
ответ дан 23 November 2019 в 05:34
поделиться

Из Википедия :

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

Последние версии Windows, с другой стороны, используют Гибридное ядро ​​.

Гибридное ядро ​​- это архитектура ядра, основанная на сочетании аспектов архитектуры микроядра и монолитного ядра, используемых в компьютере операционные системы. Категория неоднозначна из-за схожести с монолитным ядром; этот термин был отвергнут некоторыми как простой маркетинг. Традиционные категории ядер - это монолитные ядра и микроядра (с наноядрами и экзоядрами, рассматриваемыми как более экстремальные версии микроядер).

8
ответ дан 23 November 2019 в 05:34
поделиться

Монолитное ядро ​​означает, что вся операционная система работает в режиме ядра (т. Е. С высокими привилегиями со стороны оборудования). То есть никакая часть ОС не работает в пользовательском режиме (с более низкими привилегиями). В пользовательском режиме работают только приложения поверх ОС.

В операционных системах с немонолитным ядром, таких как Windows, большая часть самой ОС работает в пользовательском режиме.

В любом случае ОС может быть высокомодульный.

13
ответ дан 23 November 2019 в 05:34
поделиться

«Монолитные» в этом контексте не относятся к существованию единого большой исполняемый файл, и, как вы говорите, Linux поддерживает динамическую загрузку модулей ядра во время выполнения. Говоря о ядрах, «монолитный» означает, что вся операционная система работает в «привилегированном» или «супервизорном» режиме, в отличие от других типов операционных систем, которые используют такой тип ядра, как «микроядро», где только минимальное набор функций работает в привилегированном режиме, и большая часть операционной системы работает в пользовательском пространстве.

Сторонники микроядер говорят, что это лучше, потому что меньший размер кода означает меньше ошибок, а ошибки, запущенные в режиме супервизора, могут вызвать гораздо большие проблемы, чем в коде пользовательского пространства (например, большая вероятность наличия уязвимостей безопасности или полного сбоя системы в форма «паники ядра»). Некоторые микроядра достаточно минимальны, чтобы их можно было «формально проверить», что означает, что вы можете математически доказать, что ядро ​​«правильно» в соответствии со спецификацией. L4 является хорошим примером этого.

Некоторые микроядра достаточно минимальны, чтобы их можно было «формально проверить», что означает, что вы можете математически доказать, что ядро ​​«правильно» в соответствии со спецификацией. L4 является хорошим примером этого.

Некоторые микроядра достаточно минимальны, чтобы их можно было «формально проверить», что означает, что вы можете математически доказать, что ядро ​​«правильно» в соответствии со спецификацией. L4 является хорошим примером этого.

5
ответ дан 23 November 2019 в 05:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: