
- •Механизмы и политика
- •Ядро системы. Привилегированный режим и режим пользователя.
- •Системное программное обеспечение
- •2. Реализация архитектуры операционных систем
- •2.1 Монолитные системы
- •2.2 Многоуровневые системы
- •2.3 Системы с микроядром
- •2.4 Системы с гибридным ядром
- •2.5 Концепция виртуальных машин
- •2.3 Особенности архитектуры: unix и Linux
- •2.3.1 Базовая архитектура unix
- •2.3.2 Архитектура Linux
- •2.4 Особенности архитектуры: Windows xp
- •2.4.1 Компоненты режима ядра
- •Уровень абстрагирования от оборудования
- •2.4.2 Компоненты режима пользователя
- •Понятия файла и файловой системы
- •2. Архитектура файловой системы
- •Организация информации в файловой системе
- •1.1 Организация хранения информации на накопителях
- •1.3 Физическая организация и адресация файла
- •1.4 Физическая организация файловой системы fat
- •1.6 Физическая организация файловой системы ntfs
- •1.7 Физическая организация файловых систем ext2, ext3, ext4
2.3 Системы с микроядром
Одно из направления развития современных ОС состоит в том, что в привилегированном режиме реализована только малая часть функций ОС, называемая микроядром. Микроядро защищено от остальных частей ОС и приложений. В его состав входят машинно-зависимые модули, а также модули, выполняющие базовые механизмы обычного ядра.
Все остальные более высокоуровневые функции ядра оформляются как модули, и выполняются процессами в пользовательском режиме (сервера). Поскольку назначением этих компонентов ОС является обслуживание запросов приложений пользователей, утилит и системных обрабатывающих программ, менеджеры ресурсов, вынесенные в пользовательский режим, называются серверами ОС, т.е. модулями, основным назначением которых является обслуживание запросов локальных приложений и других модулей ОС. Серверы могут отвечать за поддержку файловой системы, за работу с процессами, памятью и т.д.
Внешние по отношению к микроядру компоненты ОС реализуются как обслуживающие процессы. Между собой они взаимодействуют как равноправные партнеры с помощью обмена сообщениями, которые передаются через микроядро.
Микроядро осуществляет связь между компонентами системы и выполняет базовое распределение ресурсов. Чтобы выполнить системный вызов, процесс (клиент) обращается к микроядру. Микроядро отсылает серверу запрос, сервер выполняет работу и пересылает ответ назад, а микроядро пересылает его клиенту (см. рис. 2.2). Клиентами могут быть как процессы пользователя, так и модули ОС.
Рисунок 2.2 – Системный вызов в архитектуре с микроядром
Достоинства микроядерного подхода:
Небольшие размеры микроядра, что упрощает его разработку и настройку.
Высокая надежность системы, вследствие того, что серверы работают в режиме пользователя, и у них нет прямого доступа к аппаратному обеспечению.
Большая гибкость и расширяемость системы (ненужные компоненты не занимают место в памяти, расширение функциональности системы сводится к добавлению в нее нового сервера).
Возможность адаптации к условиям сети (способ обмена данными между клиентом и сервером не зависти от того, связаны они сетью или находятся на одном компьютере).
Главным недостатком микроядерного подхода является снижение продуктивности. Вместо двух переключений режима процессора в случае системного вызова происходит четыре (два – во время обмена между клиентом и микроядром, два – между сервером и микроядром).
Данный недостаток является скорее теоретическим, на практике продуктивность и надежность микроядра зависит от качества его реализации.
2.4 Системы с гибридным ядром
Гибридное ядро (англ. Hybrid kernel) – модифицированные микроядра (минимальная реализация основных функций ядра операционной системы компьютера), позволяющие для ускорения работы запускать «несущественные» части в пространстве ядра.
Имеют «гибридные» достоинства и недостатки.
Рисунок 2.3 – ОС с разными ядрами
Все рассмотренные подходы к построению операционных систем имеют свои достоинства и недостатки. В большинстве случаев современные операционные системы используют различные комбинации этих подходов. Так, например, сейчас, ядро «Linux» представляет собой монолитную систему с отдельными элементами модульного ядра. При компиляции ядра можно разрешить динамическую загрузку и выгрузку очень многих компонентов ядра – так называемых модулей. В момент загрузки модуля его код загружается на уровне системы и связывается с остальной частью ядра. Внутри модуля могут использоваться любые экспортируемые ядром функции.
Существуют варианты ОС GNU (Debian GNU/Hurd), в которых вместо монолитного ядра применяется ядро Mach (такое же, как в Hurd), а поверх него в пользовательском пространстве работают те же самые процессы, которые при использовании Linux были бы частью ядра. Другим примером смешанного подхода может служить возможность запуска операционной системы с монолитным ядром под управлением микроядра. Так устроены 4.4BSD и MkLinux, основанные на микроядре Mach. Микроядро обеспечивает управление виртуальной памятью и работу низкоуровневых драйверов. Все остальные функции, в том числе взаимодействие с прикладными программами, осуществляется монолитным ядром. Данный подход сформировался в результате попыток использовать преимущества микроядерной архитектуры, сохраняя по возможности хорошо отлаженный код монолитного ядра.
Наиболее тесно элементы микроядерной архитектуры и элементы монолитного ядра переплетены в ядре Windows NT. Хотя Windows NT часто называют микроядерной операционной системой[1], это не совсем так. Микроядро NT слишком велико (более 1 Мбайт, кроме того, в ядре системы находится, например, ещё и модуль графического интерфейса), чтобы носить приставку «микро». Компоненты ядра Windows NT располагаются в вытесняемой памяти и взаимодействуют друг с другом путем передачи сообщений[1][2], как и положено в микроядерных операционных системах. В то же время все компоненты ядра работают в одном адресном пространстве и активно используют общие структуры данных, что свойственно операционным системам с монолитным ядром. Причина проста: чисто микроядерный дизайн коммерчески менее выгоден, поскольку менее эффективен (за счет накладных расходов на передачу сообщений там, где можно было обойтись вызовами функций)[источник не указан 363 дня].
Таким образом, Windows NT можно с полным правом назвать гибридной операционной системой.
Смешанное ядро, в принципе, должно объединять преимущества монолитного ядра и микроядра: казалось бы, микроядро и монолитное ядро — крайности, а смешанное — золотая середина. В них возможно добавлять драйвера устройств двумя способами: и внутрь ядра, и в пользовательское пространство. Но на практике концепция смешанного ядра часто подчёркивает не только достоинства, но и недостатки обоих типов ядер.