Конспект лекций по дисциплине «Операционные системы и среды»

Вид материалаКонспект
4.Система ввода-вывода
4.1.Общие сведения
4.1.1.Компоненты системы ввода-вывода
Диспетчер ввода-вывода
Подобный материал:
1   2   3   4   5   6   7   8

4.СИСТЕМА ВВОДА-ВЫВОДА


Как отметил в книге "Fundamentals of Operating Systems" Листер: "По традиции, ввод-вывод считается одной из самых сложных областей проектирования ОС, в которой сложно применить общий подход и где изобилуют частные методы.'" В действительности источником сложности является огромное число устройств ввода-вывода невероятно разнообразной природы, которые должна поддержи­вать ОС. Перед проектировщиком системы ввода-вывода встает непростая зада­ча — создать виртуальный интерфейс устройств ввода-вывода, позволяющий программистам просто считывать или сохранять данные, не обращая внимание на специфику устройства.

Система ввода-вывода, способная объединить в одной модели широкий набор устройств, должна быть универсальной. Она должна учитывать потребно­сти существующих устройств, от простой мыши до клавиатур, принтеров, гра­фических дисплеев, дисковых накопителей, компакт-дисков и даже сетей. Она должна также поддерживать будущие технологии хранения и ввода данных. Система ввода-вывода NT предоставляет унифицированный интерфейс высо­кого уровня для операций ввода-вывода на уровне исполнительной системы и изолирует прикладные программы от специфики физических устройств. Она также избавляет остальную часть ОС от деталей работы с устройствами и таким образом изолирует машинно-зависимый код и сокращает его объем.

Диспетчер ввода-вывода — унифицирующий компонент системы ввода-вывода — разработан Дэррилом Хэвенсом (Darryl Havens), который имеет более чем 12-летний опыт разработки и кодирования компонентов ОС. Ввод-вывод Windows 2000 заимствует некоторые черты тех ОС, над которыми работал Дэррил — в частности, ОС VAX/VMS и VAX ELN фирмы DEC. Поддержка Win32, OS/2 и POSIX также определила некоторые требования, повлиявшие на конструкцию системы ввода-вывода.


Цели проекта системы ввода-вывода состояли в следующем:
  • Предоставить поддержку нескольких устанавливаемых файловых сис­тем (installable file systems), включая FAT, высокопроизводительную файловую систему (HPFS), файловую систему компакт-дисков (CDFS) и файловую систему NT (NTFS) — новую, полностью восстанавливаемую файловую систему.
  • Предоставить сервисные возможности, упрощающие разработку драйверов устройств и в то же время пригодные для многопроцессор­ной системы.
  • Позволить администратору динамически добавлять к системе и удалять из нее драйверы устройств.
  • Сделать обработку запросов на ввод-вывод быстрой и в то же время обес­печить возможность написания драйверов на языке высокого уровня.
  • Предоставить средства проекционного файлового ввода-вывода для загрузки исполняемых программ, кэширования файлов и использова­ния в приложениях.


Кроме этих специальных целей, подсистема ввода-вывода должна соот­ветствовать и требованиям к ОС в целом. Например, она должна быть перено­симой; должна защищать свои совместно используемые ресурсы с помощью объектов; предоставлять средства поддержки интерфейсов ввода-вывода Win32, OS/2 и POSIX, а также корректно работать в многопроцессорной среде.

В начале этой главы рассматривается структура и особенности построе­ния системы ввода-вывода, после чего описывается обработка запросов ввода-вывода по мере их прохождения в системе. В заключение рассматривается по­слойная модель, используемая при создании драйверов.

4.1.Общие сведения


Система ввода-вывода исполнительной системы NT — это часть кода ОС, полу­чающая запросы ввода-вывода от процессов пользовательского режима и ре­жима ядра и передающая их, в преобразованном виде, устройствам ввода-выво­да. Между сервисами пользовательского режима и аппаратурой ввода-вывода располагаются несколько отдельных системных компонентов, включая закон­ченные файловые системы, многочисленные драйверы устройств и один или несколько драйверов сетевых транспортов.

Обзор ввода-вывода в NT мы начнем с выделения компонентов системы ввода-вывода и связей между ними. За этим последует обсуждение основных деталей устройства системы ввода-вывода — использования объектов, унифи­цированной модели драйверов файловых систем и драйверов устройств, асин­хронной обработки и средств проекционного ввода-вывода.

4.1.1.Компоненты системы ввода-вывода


Чтобы понять конструкцию системы ввода-вывода NT, необходимо познакомить­ся с различными ее частями. На рисунке упрощенно показана структура системы.

Система ввода-вывода вправляется пакетами (packet driven). Это означа­ет, что каждый запрос ввода-вывода представляется в виде пакета, запроса вво­да-вывода (I/O request packet, IRP) во время его перехода от одного компонента системы к другому. IRP — это структура данных, управляющая обработкой опе­рации ввода-вывода на каждой стадии ее выполнения.

Диспетчер ввода-вывода (I/O manager) определяет упорядоченный кар­кас — модель, внутри которой запросы ввода-вывода доставляются файловым системам и драйверам устройств. Диспетчер в действительности не управляет вводом-выводом. Его работа — создать IRP, который используется для пред­ставления операции ввода-вывода, передать пакет соответствующему драйве­ру и удалить по завершении операции ввода-вывода. В противоположность это­му, драйвер получает IRP, выполняет указанную в нем операцию ввода-вывода и либо возвращает его обратно диспетчеру ввода-вывода для завершения обработ­ки, либо передает для продолжения другому драйверу (через диспетчер). I— В системе ввода-вывода NT термин драйвер (driver) употребляется в более широком смысле, чем обычный термин драйвер устройства (device driver). Файловые системы NT — это тоже драйверы "устройств", но более сложные, они принимают запросы ввода-вывода и обрабатывают их, выдавая более конкрет­ные запросы к драйверам физических устройств. Взаимодействие между драй­верами файловых систем и драйверами устройств осуществляется посредством передачи IRP.

В дополнение к созданию и удалению IRP, диспетчер ввода-вывода предо­ставляет реализации процедур, общих для разных драйверов. Драйверы обраща­ются к этим процедурам во время обработки ввода-вывода. Благодаря объеди­нению общих задач в диспетчере ввода-вывода, отдельные драйверы становят­ся проще и компактнее. Например, диспетчер предоставляет функцию вызова драйвером других драйверов. Он также управляет буферами для обработки за­просов ввода-вывода, предоставляет драйверам поддержку тайм-аутов и сохраняет информацию о том, какие устанавливаемые файловые системы в данный момент загружены.

П
омимо этого, диспетчер ввода-вывода предоставляет гибкие средства, позволяющие подсистемам среды, таким как Win32 и POSIX, реализовывать свои API ввода-вывода. Сервисы, предоставляемые диспетчером ввода-вывода, име­ют широкие функциональные возможности, позволяющие поддерживать раз­личные схемы ввода-вывода пользовательского режима.


Рис. Части системы ввода-вывода.