Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Системное ПО.doc
Скачиваний:
3
Добавлен:
28.10.2018
Размер:
164.35 Кб
Скачать

11. Архитектура «монолитное ядро»

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

Классическое Монолитное ядро состоит из единственного загрузочного модуля, в котором реализованы все функции, возлагаемые на систему, и в частности, все сервисы, которые ядро предоставляет прикладным программам.

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

Такой способ организации определяет его плюсы:

  • взаимодействие компонентов ОС, так как они находятся в одном контексте может быть реализовано весьма просто (сравнимо с вызовом функций в обычном приложении);

  • все или большинство случаев взаимодействия прикладных программ не требует переключения между процессами, и как следствие «тяжеловесность» процессов некритична, и может быть весьма большой, что обеспечивает хорошую защищённость;

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

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

  • неправильное функционирование одного из компонентов может нанести ущерб всей системе, что — опять-таки теоретически — делает систему с монолитным ядром менее надёжной, чем микроядерная система и требует большей тщательности в разработке компонентов ОС;

  • большой объём кода, исполняемого в невытесняемом режиме негативно влияет время отклика приложений на внешние события, что нежелательно или недопустимо в системах работающих в реальном времени;

  • значительно затруднено расширение функций ОС, так как часто требует вмешательства в ядро (частично решается переходом на модульное ядро).

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

12 Архитектура «привилегированное ядро»

Для надежного управления ходом выполнения приложений операционная система должна иметь по отношению к приложениям определенные привилегии. Иначе некорректно работающее приложение может вмешаться в работу ОС и, например, разрушить часть ее кодов. Операционная система должна обладать исключительными полномочиями также для того, чтобы играть роль арбитра в споре приложений за ресурсы компьютера в мультипрограммном режиме.

Обеспечить привилегии операционной системе невозможно без специальных средств аппаратной поддержки. Аппаратура компьютера должна поддерживать как минимум два режима работы — пользовательский режим (usermode) и приви­легированный режим, который также называют режимом ядра (kernel mode), или режимом супервизора (supervisor mode). Подразумевается, что операционная сис­тема или некоторые ее части работают в привилегированном режиме, а приложе­ния — в пользовательском режиме.

Так как ядро выполняет все основные функции ОС, то чаще всего именно ядро становится той частью ОС, которая работает в привилегированном режиме. Иногда это свойство — работа в привилегированном режиме — служит основным определением понятия «ядро». Приложения ставятся в подчиненное положение за счет запрета выполнения в пользовательском режиме некоторых критичных команд, связанных с переклю­чением процессора с задачи на задачу, управлением устройствами ввода-вывода, доступом к механизмам распределения и защиты памяти. Выполнение некото­рых инструкций в пользовательском режиме запрещается безусловно (очевидно, что к таким инструкциям относится инструкция перехода в привилегированный режим), тогда как другие запрещается выполнять только при определенных ус­ловиях. Важно, что условия разрешения выполнения критичных инструкций нахо­дятся под полным контролем ОС и этот контроль обеспечивается за счет набора инструкций, безусловно запрещенных для пользовательского режима. Аналогичным образом обеспечиваются привилегии ОС при доступе к памяти.

Очень важно, что механизмы защиты памяти используются операционной сис­темой не только для защиты своих областей памяти от приложений, но и для защиты областей памяти, выделенных ОС какому-либо приложению, от остальных приложений. Говорят, что каждое приложение работает в своем адресном пространстве. Это свойство позволяет локализовать некорректно работающее приложение в собственной области памяти, так что его ошибки не оказывают влияния на остальные приложения и операционную систему.

Повышение устойчивости операционной системы, обеспечиваемое переходом ядра в привилегированный режим, достигается за счет некоторого замедления выполнения системных вызовов. Системный вызов привилегированного ядра инициирует переключение процессора из пользовательского режима в привиле­гированный, а при возврате к приложению — переключение из привилегирован­ного режима в пользовательский.