Монолитное ядро

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 16:19, 24 августа 2017.
Схема монолитного ядра, выполняющего код ядра целиком в режиме супервизора

Моноли́тное ядро́ — классическая и, на сегодняшний день, наиболее распространённая архитектура ядер операционных систем. Монолитные ядра предоставляют богатый набор абстракций оборудования. Все части монолитного ядра работают в одном адресном пространстве.

Монолитные ядра имеют долгую историю развития и усовершенствования и, на данный момент, являются наиболее архитектурно зрелыми и пригодными к эксплуатации. Вместе с тем, монолитность ядер усложняет их отладку, понимание кода ядра, добавление новых функций и возможностей, удаление «мёртвого», ненужного, унаследованного от предыдущих версий кода. «Разбухание» кода монолитных ядер также повышает требования к объёму оперативной памяти, требуемому для функционирования ядра ОС. Это делает монолитные ядерные архитектуры малопригодными к эксплуатации в системах, сильно ограниченных по объёму ОЗУ, например, встраиваемых системах, производственных микроконтроллерах и т. д.

Архитектура

Первый слой - аппаратные средства поддержки ядра(микропрограммы записанные в чипсете материнской платы, например, для перехода в привилегированном режим ОС, защита памяти, системный таймер, механизм прерываний, смена контекста ( )). Именно из-за первого слоя не на все железо можно поставить определенные ОС (если на первом слое это не реализовано, то невозможно). Второй слой (первый программный слой) - машинно-зависимые модули (слой абстракции железа HAL)- фактически драйвера для железа (чтобы ОС не зависима от конкретной аппаратной платформы). Третий слой - базовые механизмы ядра - на нем реализуется все основные функции ОС (открытие/закрытие файлов, подкачка и тд). Однако данный уровень является только исполнительным, принятие решений здесь не происходит. Четвертый слой - Менеджеры ресурсов (слой принятия решения) - реализованы все алгоритмы принятия решений (какой процесс будет выполняться следующим, какие файлы открыть).Последний слой - системные вызовы (интерфейс API) - слой отвечает за взаимодействие ПО и ОС (ПО знает о существовании только этого слоя). В таком режиме все слои резиденты в оперативной памяти. Преимущества: реорганизация ядра становится легче (изменение требуется только на одном слое), процессорная производительность довольно высока (на переключение между режимами ядра и приложения время минимально 2дельтаТ(туда-обратно)). Недостатки: большие накладные расходы по оперативной памяти.

Альтернативой монолитным ядрам считаются архитектуры, основанные на микроядрах.

Подгружаемые модули

Старые монолитные ядра требовали перекомпиляции при любом изменении состава оборудования. Большинство современных ядер, такие как OpenVMS, Linux, FreeBSD, NetBSD и Solaris, позволяют во время работы динамически (по необходимости) подгружать и выгружать модули, выполняющие часть функций ядра. Модульность ядра осуществляется на уровне бинарного образа, а не на архитектурном уровне ядра, так как динамически подгружаемые модули загружаются в адресное пространство ядра и в дальнейшем работают как интегральная часть ядра. Модульные монолитные ядра не следует путать с архитектурным уровнем модульности, присущим микроядрам и гибридным ядрам. Практически, динамическая загрузка модулей - это просто более гибкий способ изменения образа ядра во время выполнения — в отличие от перезагрузки с другим ядром. Модули позволяют легко расширить возможности ядра по мере необходимости. Динамическая подгрузка модулей помогает сократить размер кода, работающего в пространстве ядра, до минимума, например, свести к минимуму отпечаток ядра для встраиваемых устройств с ограниченными аппаратными ресурсами.

Достоинства

  • Высокая скорость работы
  • Простая разработка модулей
  • Производительность

Недостатки

  • Ошибка работы одного из компонентов ядра нарушает работу всей системы.
  • ПО не может выполняться на нескольких аппаратных средствах (ядра не взаимодействует друг с другом)

Примеры

  • Традиционные ядра UNIX (такие как BSD)
  • Linux
  • ядро MS-DOS
  • ядро KolibriOS.

Ссылки

Источники

  • Монолитное ядро [Электронный ресурс]: Общая информация — материал из Википедии — свободной энциклопедии: Версия, сохранённая в 03:20, 13 марта 2013. / Авторы Википедии // Википедия, свободная энциклопедия. — Электрон. дан. — Сан-Франциско: Фонд Викимедиа, 2016. — Режим доступа: https://ru.wikipedia.org/wiki/Монолитное_ядро