По сути дела, операционная система – это обычная программа, поэтому
было бы логично и организовать ее так же, как устроено большинство
программ, то есть составить из процедур и функций. В этом случае
компоненты операционной системы являются не самостоятельными
модулями, а составными частями одной большой программы. Такая
структура операционной системы называется монолитным ядром
(monolithic kernel). Монолитное ядро представляет собой набор
процедур, каждая из которых может вызвать каждую. Все процедуры
работают в привилегированном режиме. Таким образом, монолитное ядро
– это такая схема операционной системы, при которой все ее
компоненты являются составными частями одной программы, используют
общие структуры данных и взаимодействуют друг с другом путем
непосредственного вызова процедур. Для монолитной операционной
системы ядро совпадает со всей системой.
Во многих операционных системах с монолитным ядром сборка ядра, то
есть его компиляция, осуществляется отдельно для каждого
компьютера, на который устанавливается операционная система. При
этом можно выбрать список оборудования и программных протоколов,
поддержка которых будет включена в ядро. Так как ядро является
единой программой, перекомпиляция – это единственный способ
добавить в него новые компоненты или исключить неиспользуемые.
Следует отметить, что присутствие в ядре лишних компонентов крайне
нежелательно, так как ядро всегда полностью располагается в
оперативной памяти. Кроме того, исключение ненужных компонентов
повышает надежность операционной системы в целом.
Монолитное ядро – старейший способ организации операционных систем.
Примером систем с монолитным ядром является большинство
Unix-систем.
Даже в монолитных системах можно выделить некоторую структуру. Как
в бетонной глыбе можно различить вкрапления щебенки, так и в
монолитном ядре выделяются вкрапления сервисных процедур,
соответствующих системным вызовам.
Сервисные процедуры выполняются
в привилегированном режиме, тогда как пользовательские программы –
в непривилегированном. Для перехода с одного уровня привилегий на
другой иногда может использоваться главная сервисная программа,
определяющая, какой именно системный вызов был сделан, корректность
входных данных для этого вызова и передающая управление
соответствующей сервисной процедуре с переходом в привилегированный
режим работы. Иногда выделяют также набор программных утилит,
которые помогают выполнять сервисные процедуры.
Многоуровневые системы (Layered systems)
Продолжая структуризацию, можно разбить всю вычислительную систему
на ряд более мелких уровней с хорошо определенными связями между
ними, так чтобы объекты уровня N могли вызывать только объекты
уровня N-1. Нижним уровнем в таких системах обычно является
hardware, верхним уровнем – интерфейс пользователя. Чем ниже
уровень, тем более привилегированные команды и действия может
выполнять модуль, находящийся на этом уровне. Впервые такой подход
был применен при создании системы THE (Technishe Hogeschool
Eindhoven) Дейкстрой (Dijkstra) и его студентами в 1968 г. Эта
система имела следующие уровни:
Рис. 1.2. Слоеная система THE
Слоеные системы хорошо реализуются. При использовании операций
нижнего слоя не нужно знать, как они реализованы, нужно лишь
понимать, что они делают. Слоеные системы хорошо тестируются.
Отладка начинается с нижнего слоя и проводится послойно. При
возникновении ошибки мы можем быть уверены, что она находится в
тестируемом слое. Слоеные системы хорошо модифицируются. При
необходимости можно заменить лишь один слой, не трогая остальные.
Но слоеные системы сложны для разработки: тяжело правильно
определить порядок слоев и что к какому слою относится. Слоеные
системы менее эффективны, чем монолитные. Так, например, для
выполнения операций ввода-вывода программе пользователя придется
последовательно проходить все слои от верхнего до нижнего.
Монолитное ядро
188
0
2 минуты
Темы:
Понравилась работу? Лайкни ее и оставь свой комментарий!
Для автора это очень важно, это стимулирует его на новое творчество!