
Тема 2. Строение ос
2.1. Монолитное ядро(monolithic kernel)
По своей сути ОС - это программа, поэтому вполне логично организовать ее так же, как устроено большинство программ, то есть в виде процедур и функций. В этом случае компоненты ОС будут не самостоятельными модулями, а составными частями одной большой программы. Такая структура ОС называется монолитным ядром. Монолитное ядро представляет собой набор процедур, каждая из который может вызвать, в свою очередь , другую процедуру. Все процедуры работают в режиме ядра. Таким образом, монолитное ядро – схема ОС, при которой все ее компоненты являются составными частями одной программы, используют общие структуры данных и взаимодействуют друг с другом путем непосредственного вызова процедур. Для такой ОС ядро совпадает со всей системой. Для таких систем сборка ядра, т.е. его компиляция , осуществляется отдельно для каждого ПК, где стоит ОС. В ходе компиляции выбирается список оборудования, и программные протоколы, поддержка которых включена в ядро, при этом единственный способ добавить в ядро новые компоненты или исключить неиспользуемые – перекомпиляция. Присутствие в ядре лишних компонентов крайне нежелательно, поскольку они всегда полностью располагаются в RAM. Монолитное ядро – старейший способ организации ОС. Примером является большинство Unix – систем.
2.2. Слоеные системы (Layered systems)
Производя структуризацию, можно разбить всю систему на ряд менее крупных подсистем определенных уровней с четкими связями между ними. При этом объекты уровня n могут вызывать объекты уровня n-1. Нижним уровнем в таких системах обычно является оборудования, верхним – интерфейс пользователя. Чем ниже уровень, тем более привилегированные команды и действия может выполнять модуль. Впервые такой подход был применен при создании ОС THE(Technishe Hogeschool Eindhoven) в 1968 г. Эта система имела следующие уровни:
5.Интерфейс пользователя
4.Управление ввода-вывода
3.Драйвер устройства связи оператора и консоли
2.Управление памятью
1.Планирование задач и процессов
0.Оборудование
Слоеные системы просты в эксплуатации, при использовании операции нижнего слоя не нужно знать, как они выполнены, нужно знать лишь, что они делают. Слоеные системы хорошо тестируют, отладка начинается с нижнего слоя и проводится послойно. Слоеные системы хорошо модифицируются, при необходимости можно заменить один лишь слой, не трогая остальные. Однако слоеные системы сложны для разработки. Тяжело определить порядок слоев и распределить процедуры по слоям. Подобные системы менее эффективны, чем монолитные. Так, например, для выполнения операций ввода-вывода программе пользователя придется последовательно проходить все слои.
2.3. Микроядерная архитектура (microkernel architecture)
Современная тенденция в разработке ОС – перенос значительной части системного кода на уровень пользователя и одновременная минимизация ядра. В таких ОС большинство компонентов являются самостоятельными программами. Микроядро работает в привилегированном режиме и обеспечивает взаимодействие между программами, планирование и использование процессора, первичную обработку прерываний, операций ввода-вывода и базовое управление памятью
Программа А Менеджер файловой
системы
Программа В Менеджер памяти
Микроядро
Привилегированный режим
Все компоненты системы взаимодействуют друг с другом путем передачи сообщений через микроядро. Основное достоинство такой архитектуры – высокая степень модульности ядра. Это существенно упрощает добавление в него новых компонентов. В микроядерной ОС можно, не прерывая ее работы, загружать и выгружать драйверы, системные утилиты, менеджеры и т.д. Компоненты ядра ОС ничем не отличаются от пользовательских программ, поэтому для их отладки можно применять обычные средства. В тоже время микроядерная архитектура вносит дополнительные накладные расходы, связанные с передачей сообщений. Это существенно влияет на производительность. При создании таких ОС необходимо тщательно продумывать разделение на компоненты, минимизируя взаимодействие между ними.
2.4. Смешанные системы.
В большинстве случаев современные ОС используют различные комбинации рассмотренных подходов. Примером смешанного подхода может служить возможность запуска ос с монолитным ядром под управлением микроядра. Так устроены системы 44BSD, MkLinux, основанные на микроядре Mach.Микроядро обеспечивает управление виртуальной памяти, а также работу низкоуровневых драйверов. Все остальные функции, в том числе взаимодействие с прикладными программами, осуществляются монолитным ядром. Данный подход возник в результате желания использовать удобность микроядерной архитектуры, сохраняя хорошо отлаженный код монолитного ядра. Наиболее тесно элементы микроядерной архитектуры и монолитного ядра переплетены в ядре Windows NT. Компоненты ядра Windows NT располагаются в так называемой вытесняемой памяти и взаимодействуют друг с другом путем передачи сообщений, так же как и в микроядерных ОС. В то же время все компоненты ядра работают в одном адресном пространстве и используют общие структуры данных, что свойственно ОС с монолитным ядром.
2.5. Файловая система. (FAT,FAT32,HPFS,NTFS.ext3PS)
Файловая система – часть ОС, назначение которой состоит в обеспечении удобного интерфейса при работе с данными, хранящимися на диске, и совместного использования файлов несколькими пользователями и процессами. В широком смысле понятие файловой системы включает: 1)совокупность всех файлов на диске; 2)набор из структур данных, используемых для управления файлами (каталоги, дескрипторы, таблицы распределения свободного пространства и т.д.); 3)комплекс системных программных средств, реализующих управление файлами (системные вызовы для создания, уничтожения, чтения, записи , а также обработчики программных прерываний);
Общая модель файловой системы можно представить как многоуровневую структуру, в которой каждый уровень предоставляет некоторый интерфейс вышележащему уровню, а сам, в свою очередь, использует интерфейс нижележащего уровня.
Запрос
к файлу
Символьный уровень
Определение посимвольного имени уникального имени файла
Базовый уровень
Определение по уникальному имени характеристик файла
Уровень проверки прав доступа
Проверка допустимости операции на заданном файле
Логический уровень
Определение координат логической записи в файле
Физический уровень
Определение номера физического блока, содержащего запись
Подсистема ввода-вывода