Монолитное ядро
Материал из Википедии — свободной энциклопедии
| В этой статье не хватает ссылок на источники информации.
Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена.
Вы можете отредактировать эту статью, добавив ссылки на авторитетные источники. |
Моноли́тное ядро́ — классическая и, на сегодняшний день, наиболее распространённая архитектура ядер операционных систем. Монолитные ядра предоставляют богатый набор абстракций оборудования. Все части монолитного ядра работают в одном адресном пространстве.
Монолитные ядра имеют долгую историю развития и усовершенствования и, на данный момент, являются наиболее архитектурно зрелыми и пригодными к эксплуатации. Вместе с тем, монолитность ядер усложняет их отладку, понимание кода ядра, добавление новых функций и возможностей, удаление «мёртвого», ненужного, унаследованного от предыдущих версий, кода. «Разбухание» кода монолитных ядер также повышает требования к объёму оперативной памяти, требуемому для функционирования ядра ОС. Это делает монолитные ядерные архитектуры мало пригодными к эксплуатации в системах, сильно ограниченных по объёму ОЗУ, например, встраиваемых системах, производственных микроконтроллерах и т. д.
Альтернативой монолитным ядрам считаются архитектуры, основанные на микроядрах.
[править] Подгружаемые модули
Старые монолитные ядра требовали перекомпиляции при любом изменении состава оборудования. Большинство современных ядер, такие, как OpenVMS, Linux, FreeBSD, NetBSD и Solaris позволяют во время работы динамически (по необходимости) подгружать и выгружать модули, выполняющие части функций ядра. Модульность ядра осуществляется на уровне бинарного образа, а не на архитектурном уровне ядра, так как динамически подгружаемые модули загружаются в адресное пространство ядра и в дальнейшем работают как интегральная часть ядра. Модульные монолитные ядра не следует путать с архитектурным уровнем модульности, присущий микроядрам и гибридным ядрам. Практически, динамичная загрузка модулей, это просто более гибкий способ изменения образа ядра во время выполнения — в отличие от перезагрузки с другим ядром. Модули позволяют легко расширить возможности ядра по мере необходимости. Динамическая подгрузка модулей помогает сохранить размер кода работающего в пространстве ядра до минимума, например, свести к минимуму отпечаток ядра для встраиваемых устройств с ограниченными аппаратными ресурсами.
|
|
|
|---|---|
| Ядро |
Гибридное • Микро • Модульное • Монолитное • Нано • Экзо • Драйвер • Пространство пользователя • Область пользователя |
| Управление процессом |
Режимы (супервизора • реальный • защищённый) • Прерывание • Кольца защиты • Переключение контекста (англ.) • Многозадачность (вытесняющая • кооперативная • мультипрограммирование) • Процесс • Управление процессом • Планировщик задач • Многопоточность |
| Управление памятью |
|
| Примеры |
AmigaOS • BSD • GNU • Linux • Mac OS • Microsoft Windows • MS-DOS • OpenSolaris • OS/2 • UNIX |
| Прочее | |