Операционные системы 2011 (1114689), страница 27
Текст из файла (страница 27)
А, например, всистемах, где пользователи редко используют сканер, держать соответствующий драйверрезидентно не имеет смысла, поскольку скорость работы самого устройства многомедленнее, чем скорость загрузки драйвера из внешней памяти в оперативную.Соответственно, драйвер сканера в этом случае служит одним из примеров нерезидентныхдрайверов, т.е. тех драйверов, которые могут находиться в ОЗУ, а могут быть иотключенными, но они также динамически подгружаемые.В общем случае драйверы могут работать как в привилегированном режиме, так ив пользовательском.И, наконец, некоторой логической вершиной рассматриваемой структуры ОСбудут являться интерфейсы системных вызовов (API — Application Program Interface).Под системным вызовом будем понимать средство обращения процесса к ядруоперационной системы за выполнением той или иной функции (возможности, услуги,сервиса).
Примерами системных вызовов являются открытие файла, чтение/запись в него,порождение процесса и т.д. Отличие обращения к системному вызову от обращения кбиблиотеке программ заключается в том, что библиотечная программа присоединяется кисполняемому коду процесса, поэтому вычисление библиотечных функций будетпроисходить в рамках процесса. Обращение к системному вызову — это вызов техкоманд, которые инициируют обращение к системе. Как уже отмечалось выше,инициацией обращения к операционной системе может служить либо прерывание, либоисполнение специальной команды. Следует понимать различие между системнымвызовом и библиотечной функцией.
Например, осуществляя работу с файлом, имеетсявозможность работы с ним посредством обращения к системным вызовам либопосредством использования библиотеки ввода-вывода. В последнем случае в телопроцесса включаются дополнительные функции из данной библиотеки, а уже внутриданных функций происходит обращение к необходимым системным вызовам.Итак, существует несколько подходов к структурной организации операционныхсистем. Один из них можно назвать классическим: он использовался в первыхоперационных системах и используется до сих пор — это подход, основанный наиспользовании монолитного ядра.
В этом случае ядро ОС представляет собою единуюмонолитную программу, в которой отсутствует явная структуризация, хотя, конечно, вней есть логическая структуризация. Это означает, что монолитное ядро содержитфиксированное число реализованных в нем базовых функций, поэтому модификацияфункционального набора достаточно затруднительна (необходима практически полнаяпеределка ядра).
Устройство монолитного ядра напоминает физическую организациюпервых компьютеров: в них также нельзя было выделить отдельные физическиефункциональные блоки — все было единым, монолитным и интегрированным друг сдругом. Аналогичными свойствами обладают одноплатные компьютеры, у которых всенеобходимые компоненты (ЦПУ, ОЗУ и пр.) расположены на одной плате, и, чтобы что-тоизменить в этой конфигурации, требуются соответствующие инженерные знания.91На Рис. 73 проиллюстрирована структурная организация классической системыUnix. В данном случае ядро имеет фиксированный интерфейс системных вызовов.
В немреализовано управление процессами, а также драйвер файловой системы, реализована всялогика системы по организации работы с устройствами (которые можно разделить набайт-ориентированные и блок-ориентированные) и пр.УровеньпользователяПрограммы пользователяБиблиотекиИнтерфейс системных вызововФайловая подсистемаВзаимодействие междупроцессамиБуферПланировщикБайтБлокориентированные ориентированныеустройстваустройстваУправление памятьюДрайверы устройствУровень аппаратного обеспеченияМонолитное ядроАппаратное обеспечениеРис. 73.
Структура ОС с монолитным ядром.Что касается достоинств данного подхода, то можно утверждать, что дляконкретного состава функциональности и логики ядра это будет наиболее эффективноерешение (т.к. оно имеет минимальное количество интерфейсных сочленений, связанныхсо структуризацией). Однако при таком подходе отсутствует универсальность, ивнутренняя организация ядра рассчитана на конкретную реализацию. Недостаток в этомслучае заключается в необходимости перепрограммировать ядро при внесении изменений,и это является прерогативой разработчика. Соответственно, для внесения новойфункциональности пользователю системы приходится обращаться к разработчику, чтозачастую ведет к материальным затратам.Альтернативу данному подходу предлагают многослойные операционныесистемы.
В этом случае все уровни разделяются на некоторые функциональные слои.Здесь можно провести аналогию с моделью сетевых протоколов. Между слоями имеютсяфиксированные интерфейсы. Управление происходит посредством взаимодействиясоседних слоев. Поскольку любая структуризация снижает эффективность (программа,написанная в виде одной большой функции, работает быстрее, чем аналогичнаяпрограмма, разбитая на подпрограммы, т.к.
любое обращение к подпрограмме ведет кнакладным расходам), то подобные системы обладают более низкой эффективностью.Итак, каждый слой предоставляет определенный сервис вышестоящему слою.Деление на слои является индивидуальным для каждой конкретной операционнойсистемы. Это может быть слой файловой системы, слой управления внешнимиустройствами и т.д.
Тогда модернизация подобных систем сводится к модернизациисоответствующих слоев. Вследствие чего проблема несколько упрощается, но при этомостаются ограничения на структурную организацию (например, имея слой файловой92…Файловая системаУправлениепроцессами…Драйвер устройстваДрайвер устройствасистемы, можно заменить его другим вариантом этого слоя, но использоватьодновременно две различные файловые системы не представляется возможным).Третий подход предлагает использовать микроядерную архитектуру (Рис. 74).Функционирование операционных систем подобного типа основывается на использованиит.н. микроядра.
В этом случае выделяется минимальный набор функций (например,первичная обработка прерываний и некоторые функции управления процессами), которыевключаются в ядро. Вся остальная функциональность представляются в виде драйверов,которые подключаются к ядру посредством некоторого стандартного интерфейса.…МикроядроАппаратураРис. 74. Структура ОС с микроядерной архитектурой.Такая архитектура получается хорошо расширяемой, она почти не имеет никакихограничений по количеству подключаемых драйверов и их функциональномунаполнению; требуется только соблюдение драйвером интерфейса для обращения кмикроядру.
Таким образом, данная архитектура представляется высоко технологичной,хорошо подходит для применения в современных многопроцессорных вычислительныхсистемах (например, в SMP-системах, тогда можно распределять драйверы по различнымпроцессорами и получать соответствующую эффективность).Микроядерная система может служить основой для надстройки над микроядромразных операционных систем. В частности, такой подход используется в ряде систем, воснове которых используется микроядро системы Mach.Итак, только что были продемонстрированы достоинства данного подхода.
Чтокасается недостатков, то они непосредственно связаны с достоинствами и проявляются взначительном возрастании накладных расходов. Положим, процесс обращается кфайловой системе, чтобы произвести обмен с конкретным файлом посредствомсоответствующего системного вызова. Драйвер файловой системы, получив запрос отпроцесса, перерабатывает его в последовательность запросов на обмен с диском (пусть,сначала это будут виртуальный диск). После чего файловая система обращается кмикроядру, которое, в свою очередь, находит драйвер виртуального диска и передает емусоответствующий запрос.
Драйвер виртуального диска определяет, с каким физическимдиском будет происходить обмен, и трансформирует поступивший ему запрос в запросы кэтому физическому диску, которые ему и передаются по той же схеме. Таким образом,один запрос распадается на множество подзапросов, следующих от драйвера черезмикроядро к другому драйверу, из-за чего эффективность системы снижается.Напоследок отметим, что в реальности используются системы, получаемыекомбинацией указанных подходов.931.3.2 Логические функции ОСФункциональность ОС можно представить в виде объединения некоторогофиксированного количества блоков функций.
Состав этого набора варьирует от системы ксистеме, но в большинстве случаев можно выделить следующие функции: управлениепроцессами, управление оперативной памятью, планирование и, наконец, управлениеданными, файловой системой и устройствами, а также в последнее время сталидобавлять блок функциональности сетевого взаимодействия.Функция управления процессами охватывает проблемы формирования процессов,поддержания жизненного цикла процесса, проблемы организации взаимодействияпроцессов (т.е. организацию взаимодействия процесса с системой в целом и с другимипроцессами в частности) и работы процессов с ресурсами.
Функция управленияпроцессами является ключевой для всех операционных систем.Функция управления оперативной памятью во многом определяется тойаппаратурой, на которой реализуется ОС. С точки зрения программной составляющей,управление ОП включает компоненты, связанные с выбором стратегии организации ОП (вчастности, реализуется поддержка аппарата виртуальной памяти), решает задачи защитыОП от несанкционированного доступа, задачи корректности работы процесса свыделенной ему ОП.