
- •2010 Г.
- •1. Основы системного программного обеспечения
- •Классификация процессов
- •Классификация ресурсов
- •Запрос ВыделениеИспользованиеОсвобождение
- •2. Задачи синхронизации
- •3. Межпроцессные коммуникации
- •4. Операционные системы
- •5. Архитектура операционной системы
- •6. Распределенные и Мультипроцессорные ос.
- •7. Сетевые ос (сос)
- •2. Функциональные компоненты сос
- •3. Сетевые службы и сетевые сервисы.
- •4. Встроенные сетевые службы и сетевые оболочки.
- •8. Системные программы
- •Список литературы
5. Архитектура операционной системы
Цель: изучение одного из универсальных подходов к структуризации ОС.
Задачи:
Дать ответ на вопрос «Существует ли единая архитектура ОС?»
Рассмотреть функции ядра и вспомогательных модулей, взаимодействие этих модулей.
Рассмотреть типы архитектур ядер ОС.
Рассмотреть понятие файловой системы.
Большинство современных операционных систем представляют собой хорошо структурированные модульные системы, способные к развитию, расширению и переносу на новые платформы. Какой-либо единой архитектуры ОС не существует, но существуют универсальные подходы к структурированию ОС.
Ядро и вспомогательные модули ОС
Наиболее общим подходом к структуризации операционной системы является разделение всех ее модулей на две группы:
ядро — модули, выполняющие основные функции ОС;
модули, выполняющие вспомогательные функции ОС.
Модули ядра ОС выполняют следующие базовые функции ОС:
управление процессами;
управление памятью;
управление устройствами ввода-вывода и т.п.
Без ядра ОС является полностью неработоспособной и не сможет выполнить ни одну из своих функций.
В состав ядра входят функции, решающие внутрисистемные задачи организации вычислительного процесса, такие как переключение контекстов, загрузка/выгрузка станиц, обработка прерываний. Эти функции недоступны для приложений.
Обычно ядро оформляется в виде программного модуля некоторого специального формата, отличающегося от формата пользовательских приложений.
Вспомогательные модули выполняют полезные, но менее обязательные функции. Например:
архивирование информации;
дефрагментация данных на диске;
поиск необходимого файла и т.п.
Вспомогательные модули часто оформляются как обычные приложения и провести границу между ними и обычными приложениями сложно.
Вспомогательные модули обычно подразделяются на следующие группы:
утилиты — программы, решающие отдельные задачи управления и сопровождения ОС, такие, например, как программы сжатия дисков, архивирования данных;
системные обрабатывающие программы — текстовые или графические редакторы, компиляторы, компоновщики, отладчики;
программы предоставления пользователю дополнительных услуг — специальный вариант пользовательского интерфейса, калькулятор и даже игры;
библиотеки процедур – это модули различного назначения, упрощающие разработку приложений, например библиотека математических функций, функций ввода-вывода и т. д.
Как и обычные приложения, для выполнения своих задач утилиты, обрабатывающие программы и библиотеки ОС, обращаются к функциям ядра посредством системных вызовов.
Взаимодействие между ядром и вспомогательными модулями ОС представлено на следующем рисунке.
Модули ОС, оформленные в виде утилит, системных обрабатывающих программ и библиотек, обычно загружаются в оперативную память только на время выполнения своих функций, то есть являются транзитными. Постоянно в оперативной памяти располагаются только самые необходимые коды ОС, составляющие ее ядро. Такая организация ОС экономит оперативную память компьютера.
Типы архитектур ядер операционных систем
Монолитное ядро
Монолитное ядро предоставляет богатый набор абстракций оборудования. Все части монолитного ядра работают в одном адресном пространстве.
Старые монолитные ядра требовали перекомпиляции при любом изменении состава оборудования. Большинство современных ядер позволяют во время работы подгружать модули, выполняющие части функции ядра.
Достоинства: Скорость работы, упрощённая разработка модулей, богатство предоставляемых возможностей и функций, поддержка большого количества разнообразного оборудования.
Недостатки: Поскольку всё ядро работает в одном адресном пространстве, сбой в одном из компонентов может нарушить работоспособность всей системы.
В этом случае компоненты ОС являются не самостоятельными модулями, а составными частями одной большой программы. Такая структура операционной системы называется монолитным ядром (monolithic kernel). Монолитное ядро представляет собой набор процедур, каждая из которых может вызвать каждую. Все процедуры работают в привилегированном режиме.
Таким образом, монолитное ядро — это такая схема операционной системы, при которой все её компоненты являются составными частями одной программы, используют общие структуры данных и взаимодействуют друг с другом путём непосредственного вызова процедур. Для монолитной операционной системы ядро совпадает со всей системой.
Примеры: Традиционные ядра UNIX(такие как BSD), Linux; ядро MS-DOS.
Модульное ядро
Модульное ядро — современная, усовершенствованная модификация архитектуры монолитных ядер операционных систем компьютеров.
В отличие от «классических» монолитных ядер, считающихся ныне устаревшими, модульные ядра, как правило, не требуют полной перекомпиляции ядра при изменении состава аппаратного обеспечения компьютера. Вместо этого модульные ядра предоставляют тот или иной механизм подгрузки модулей ядра, поддерживающих то или иное аппаратное обеспечение (например, драйверов). При этом подгрузка модулей может быть как динамической (выполняемой «на лету», без перезагрузки ОС, в работающей системе), так и статической (выполняемой при перезагрузке ОС после переконфигурирования системы на загрузку тех или иных модулей).
Все модули ядра работают в адресном пространстве ядра и могут пользоваться всеми функциями, предоставляемыми ядром. Поэтому модульные ядра продолжают оставаться монолитными. Модульность ядра осуществляется на уровне бинарного образа, а не на архитектурном уровне ядра, так как динамически подгружаемые модули загружаются в адресное пространство ядра и в дальнейшем работают как интегральная часть ядра. Модули позволяют легко расширить возможности ядра по мере необходимости.
Примером может служить VFS — «виртуальная файловая система», совместно используемая многими модулями файловых систем в ядре Linux.
Микроядро
Микроядро предоставляет только элементарные функции управления процессами и минимальный набор абстракций для работы с оборудованием. Большая часть работы осуществляется с помощью специальных пользовательских процессов, называемых сервисами.
Достоинства: Устойчивость к сбоям оборудования, ошибкам в компонентах системы.
Недостатки: Передача данных между процессами требует накладных расходов.
Современная тенденция в разработке операционных систем состоит в перенесении значительной части системного кода на уровень пользователя и одновременной минимизации ядра. Речь идет о подходе к построению ядра, называемом микроядерной архитектурой (microkernel architecture) операционной системы, когда большинство ее составляющих являются самостоятельными программами. В этом случае взаимодействие между ними обеспечивает специальный модуль ядра, называемый микроядром. Микроядро работает в привилегированном режиме и обеспечивает взаимодействие между программами, планирование использования процессора, первичную обработку прерываний, операции ввода-вывода и базовое управление памятью.
Остальные компоненты системы взаимодействуют друг с другом путем передачи сообщений через микроядро.
Примеры: Symbian OS; Mach, используемый в GNU/Hurd и Mac OS X; Windows CE; QNX; AIX; Minix ; ChorusOS ; AmigaOS; MorphOS.
Экзоядро
Экзоядро — ядро ОС компьютеров, предоставляющее лишь функции для взаимодействия между процессами и безопасного выделения и освобождения ресурсов. Предполагается, что API для прикладных программ будут предоставляться внешними по отношению к ядру библиотеками (откуда и название архитектуры).
Возможность доступа к устройствам на уровне контроллеров позволит эффективней решать некоторые задачи, которые плохо вписываются в рамки универсальной ОС, например реализация СУБД будет иметь доступ к диску на уровне секторов диска, а не файлов и кластеров, что положительно скажется на быстродействии.
Наноядро
Наноядро — архитектура ядра операционной системы компьютеров, в рамках которой крайне упрощённое и минималистичное ядро выполняет лишь одну задачу — обработку аппаратных прерываний, генерируемых устройствами компьютера. После обработки прерываний от аппаратуры наноядро, в свою очередь, посылает информацию о результатах обработки (например, полученные с клавиатуры символы) вышележащему программному обеспечению при помощи того же механизма прерываний. Примером является KeyKOS — самая первая ОС на наноядре. Первая версия вышла ещё в 1983-ем году.
Гибридное ядро
Гибридные ядра это модифицированные микроядра, позволяющие для ускорения работы запускать «несущественные» части в пространстве ядра.
Смешанное ядро, в принципе, должно объединять преимущества монолитного ядра и микроядра: казалось бы, микроядро и монолитное ядро — крайности, а смешанное — золотая середина. В них возможно добавлять драйвера устройств двумя способами: и внутрь ядра, и в пользовательское пространство. Но на практике концепция смешанного ядра часто подчёркивает не только достоинства, но и недостатки обоих типов ядер (тот же NT со смешанным ядром не может видеть жесткие диски большого объёма в обход BIOS (источник?), в то время как GNU/Linux с его монолитным ядром обеспечивает такую возможность, поскольку возможность видеть жесткие диски в обход BIOS встроена в его ядро).
Примеры: Windows NT, DragonFlyBSD.
Файловая система
Файловая система - это часть операционной системы, назначение которой состоит в том, чтобы обеспечить пользователю удобный интерфейс при работе с данными, хранящимися на диске, и обеспечить совместное использование файлов несколькими пользователями и процессами.
В широком смысле понятие "файловая система" включает:
совокупность всех файлов на диске;
наборы структур данных, используемых для управления файлами, такие, например, как каталоги файлов, таблицы распределения свободного и занятого пространства на диске;
комплекс системных программных средств, реализующих управление файлами, в частности: создание, уничтожение, чтение, запись, именование, поиск и другие операции над файлами.
Файловая система FAT
Файловая система FAT (таблица размещения файлов) представляет собой простую файловую систему, разработанную для небольших дисков и простых структур каталогов. В целях защиты тома (логический диск) на нем хранятся две копии FAT, на тот случай, если одна из них окажется поврежденной.
Том, отформатированный для использования файловой системы FAT, размечается по кластерам. Кластер – минимальная адресуемая единица дисковой памяти, выделяемая файлу. Размер кластера по умолчанию определяется размером тома. При использовании файловой системы FAT номер кластера должен иметь длину не более 16 бит и представлять собой одну из степеней 2.
Структура тома FAT.
Загрузочный сектор является первым на логическом диске и состоит из:
DPB – блок параметров диска. Служит для идентификации физических параметров логического диска.
SB – загрузчик.
Таблицы расположения файлов (области FAT1 и FAT2) содержат следующую информацию о каждом кластере тома:
- Unused (кластер не используется)
- Cluster in use by a file (кластер используется файлом)
- Bad cluster (плохой кластер)
- Last cluster in a file (последний кластер файла)
Корневой каталог содержит записи для каждого файла и каждого каталога, расположенных в корневом каталоге. Единственным различием между корневым каталогом и всеми остальными каталогами является то, что корневой каталог занимает четко определенное место на диске и имеет фиксированный размер (512 записей для жесткого диска; для дискет этот размер определяется объемом дискеты).
Каталоги содержат 32-байтные записи для каждого содержащегося в них файла и каждого вложенного каталога. Эти записи содержат следующую информацию:
- имя (в формате "8+3"),
- байт атрибутов (8 бит),
- время создания (24 бит),
- дата создания (16 бит),
- дата последнего доступа (16 бит),
- время последней модификации (16 бит),
- дата последней модификации (16 бит),
- номер начального кластера файла в таблице расположения файлов (16 бит),
- размер файла (32 бит).
Структура каталога FAT не имеет четкой организации, и файлам присваиваются первые доступные адреса кластеров на томе. Номер начального кластера файла представляет собой адрес первого кластера, занятого файлом, в таблице расположения файлов. Каждый кластер содержит указатель на следующий кластер, использованный файлом, или индикатор (OxFFFF), указывающий на то, что данный кластер является последним кластером файла.
Файл FAT имеет 4 атрибута, которые могут сбрасываться и устанавливаться пользователем:
- archive file (архивный файл),
- system file (системный файл),
- hidden file (скрытый файл),
- read-only file (файл только для чтения).
ОС поддерживающие FAT: MS DOS, Windows 95, Windows NT, OS/2.
Файловая система NTFS
NTFS разработана для:
- быстрого выполнения стандартных файловых операций чтения, записи и поиска;
- быстрого выполнения улучшенных операций типа восстановления файловой системы на очень больших жестких дисках.
Структура тома NTFS
MFT |
Зона MFT |
Зона для размещения файлов и каталогов |
Копия первых 16 записей MFT |
Зона для размещения файлов и каталогов |
Диск NTFS делится на две части:
1. первые 12% диска отводятся под MFT зону - пространство, в которое растет метафайл MFT. Запись каких-либо данных в эту область невозможна. MFT-зона всегда держится пустой - это делается для того, чтобы самый главный, служебный файл (MFT) не фрагментировался при своем росте;
2. остальные 88% диска представляют собой обычное пространство для хранения файлов.
MFT – метафайл – специальный файл, позволяющий определить местонахождение всех остальных файлов.
Метафайлы имеют строго фиксированное положение. Их копия содержится в середине для надёжности.
MFT находятся в корневом каталоге NTFS диска.
NTFS просматривает каждый файл (или каталог) как набор атрибутов файла. Такие элементы, как имя файла, информация зашиты и даже данные — все это атрибуты файла. Каждый атрибут идентифицирован кодом типа атрибута и, необязательно, именем атрибута.
Имя файла может содержать любые символы. Максимальная длина 256 символов. Каталог в NTFS представляет собой специальный файл, хранящий ссылки на другие файлы и каталоги, создается иерархическое строение данных. Он поделён на блоки, каждый из которых содержит имя файла, базовые атрибуты и ссылку на элемент MFT.
Вопросы для самопроверки
В чем состоит простейшая структуризация ОС?
Какие функции выполняют модули ядра ОС?
Какие функции выполняют вспомогательные модули ОС?
На какие группы подразделяются вспомогательные модули ОС?
Назовите типы архитектур ядер ОС, их достоинства и недостатки.
Что такое файловая система?
Охарактеризуйте файловую систему FAT.
Охарактеризуйте файловую систему NTFS.