Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Модульное ядро операционной системы

Введение

Под ядром операционной системы понимается главная составляющая часть операционной системы, которая обеспечивает прикладным программам согласованную доступность к компьютерным ресурсам, таким как время работы процессора, ресурсы памяти, внешняя аппаратура, устройства ввода-вывода информационных данных. Ядро выполняет все эти процедуры путём транслирования команд языка прикладных программ в двоичный код, понятный компьютеру. Кроме того, ядро может предоставить сервисы файловых систем и протоколов сети. В качестве главного компонента операционной системы, ядро является самым низким уровнем абстракции, который обеспечивает прикладным программам возможность доступа к ресурсным возможностям системы, требуемым для их нормального функционирования. Чаще всего, ядро обеспечивает этот доступ работающим процессам прикладных программ путём применения метода взаимодействия между процессами и требования прикладными программами системных вызовов операционной системы.

Архитектура модульного ядра операционной системы, ее достоинства и недостатки

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

  1. В динамическом режиме. То есть она выполняется при запущенной операционной системе без её перезагрузки.
  2. В статическом режиме. Выполняется с перезагрузкой операционной системы после того, как изменена конфигурация для загрузки нужных модулей.

Достоинства модульной архитектуры ядра:

  • Более удобно проектирование ядра, так как нет необходимости многократно выполнять перекомпиляцию при разработке подсистем или драйверов.
  • Облегчены процессы обнаружения, выявления причины, отладки и ликвидации ошибок.
« Модульное ядро операционной системы» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ

К недостаткам следует отнести:

  • Не каждая программа может стать модулем ядра.
  • Модульные программы ядра имеют некоторые ограничения в сфере применения отдельных возможностей (к примеру, нельзя использовать стандартную библиотеку C/C++, вместо неё надо иметь специальные аналогичные программы). Как пример можно привести операционные системы семейства GNU/Linux.

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

Замечание 1

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

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

Основными направлениями сегодняшнего развития модульных ядер считается дальнейшее внедрение модулей в коды ядра, совершенствование методов динамического режима подзагрузки и выгрузки, постепенный отказ от существующих ручных способов загрузки модулей или изменения конфигурации ядра при обновлении аппаратного обеспечения за счёт применения автоматических методов идентификации оборудования и загрузки необходимых модулей в автоматическом режиме. Коды ядра должны становиться всё более универсальными и ядро должно оснащаться абстрактными механизмами, которые предназначены для работы с большим количеством модулей. Примером такого направления развития может служить виртуальная файловая система VFS, которую могут использовать рад модулей файловой системы в ядре Linux.

Совместимость бинарных кодов

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

Дата написания статьи: 17.06.2019
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot