
- •Структура монолитной системы.
- •С монолитными операционными системами связан ряд проблем, свойственных их архитектуре.
- •Вопрос № 2 «Микроядерная структура»
- •Структура микроядерной системы.
- •Вопрос № 3 «Слоеные системы (Layered systems)»
- •Вопрос № 4 «Виртуальные машины»
- •Вопрос № 5 «Смешанные системы»
Операционные системы и среды
Специальность 230105
Раздел: «Работа в операционных системах и средах»
Тема: «Структура операционной системы.»
Лекция № 1
Вопросы:
Структура монолитных систем.
Микроядерная структура.
Слоеные системы (Layered systems)
Виртуальные машины
Смешанные системы
Используемая литература:
Роберт Лав Разработка ядра Linux = Linux Kernel Development. — 2-е изд. — М.: , 2006. — С. 448. — ISBN 0-672-32720-1
Йоррит Хе«Вильямс»рдер (Jorrit N. Herder), Херберт Бос (Herbert Bos), Эндрью Таненбаум (Andrew S. Tanenbaum) Построение надежных операционных систем, допускающих наличие ненадежных драйверов устройств
Вопрос № 1 «Структура монолитных систем»
Создание приложений начинается с написания программы на машинно-ориентированном языке или языке высокого уровня (исходный модуль).
Перевод исходного модуля в двоичный код осуществляют трансляторы.
Трансляторы, которые преобразуют исходный модуль в двоичный код и выполняют их одновременно – интерпретаторы.
Трансляторы, которые переводят исходный модуль целиком и сохраняют его в виде файла – компиляторы.
Модули, получаемые в результате обработки исходного модуля компиляторами называются объектными.
Ядро — центральная часть ОС, обеспечивающая приложениям координированный доступ к ресурсам компьютера, таким как процессорное время, память и внешнее аппаратное обеспечение. Ядро предоставляет сервис файловой системы.
Монолитное ядро. ОС - обычная программа, поэтому состоит из процедур и функций. В этом случае компоненты ОС являются не самостоятельными модулями, а составными частями одной большой программы. Такая структура операционной системы называется монолитным ядром (monolithic kernel). Монолитное ядро представляет собой набор процедур, каждая из которых может вызвать каждую.
Таким образом, монолитное ядро — это такая схема операционной системы, при которой все её компоненты являются составными частями одной программы, используют общие структуры данных и взаимодействуют друг с другом путём непосредственного вызова процедур. Для монолитной операционной системы ядро совпадает со всей системой.
Монолитное ядро. Все части монолитного ядра работают в одном адресном пространстве.
Структура монолитной системы.
Рис. Вся операционная система выполняется в режиме ядра без должной изоляции сбоев.
Как показано на рис., в стандартной монолитной системе ядро содержит всю операционную систему, скомпонованную в едином адресном пространстве и выполняемую в режиме ядра. Ядро может быть структурировано на компоненты, или модули, показанные на рисунке в виде прямоугольников с пунктирными сторонами, но между компонентами отсутствуют защитные границы. В отличие от этого, прямоугольники со сплошными сторонами соответствуют отдельным процессам, выполняемым в режиме пользователя; каждый из этих процессов выполняется в отдельном адресном пространстве, защищаемом аппаратурой MMU (Memory Management Unit, устройство управления памятью).
С монолитными операционными системами связан ряд проблем, свойственных их архитектуре.
Отсутствует должная изоляция сбоев.
Весь код выполняется на наивысшем уровне привилегированности.
Огромный размер кода предполагает наличие многочисленных ошибок.
В ядре присутствует ненадежный сторонний код.
Сложность систем затрудняет их сопровождение
Этот список свойств ставит под сомнение надежность монолитных систем. Важно понимать, что эти свойства возникают не вследствие плохой реализации, а представляют собой фундаментальные проблемы, связанные с архитектурой операционной системы.
Предполагается корректность ядра, в то время, как только лишь его размер означает, что оно должно содержать многочисленные ошибки. Более того, для всех операционных систем, в которых код выполняется на наивысшем уровне привилегированности, и не обеспечивается должное сдерживание распространения сбоев, любая ошибка может стать фатальной. Например, неправильно работающий драйвер устройства, предоставленный сторонним разработчиком, может легко разрушить ключевые структуры данных и вывести из строя всю систему.
Старые монолитные ядра требовали перекомпиляции при любом изменении состава оборудования. Большинство современных ядер позволяют во время работы подгружать модули, выполняющие части функции ядра.
Во многих операционных системах с монолитным ядром сборка ядра, то есть его компиляция, осуществляется отдельно для каждого компьютера, на который устанавливается операционная система. При этом можно выбрать список оборудования и программных протоколов, поддержка которых будет включена в ядро. Так как ядро является единой программой, перекомпиляция — это единственный способ добавить в него новые компоненты или исключить неиспользуемые.
Следует отметить, что присутствие в ядре лишних компонентов крайне нежелательно, так как ядро всегда полностью располагается в оперативной памяти.
Кроме того, исключение ненужных компонентов повышает надёжность операционной системы в целом.
Примером систем с монолитным ядром является большинство Unix-систем.
Данный тип архитектуры ядер имеет преимущества.
Монолитное ядро более производительно, чем микроядро, поскольку состоит из множества разрозненных процессов, «общающихся» между собой через механизм посылки сообщений, а работает в одном адресном пространстве, кроме того нет необходимости осуществлять переключения между процессами-сервисами.
Достоинства: Скорость работы, упрощённая разработка модулей, богатство предоставляемых возможностей и функций, поддержка большого количества разнообразного оборудования.
Недостатки: Поскольку всё ядро работает в одном адресном пространстве, сбой в одном из компонентов может нарушить работоспособность всей системы.