32
соизмеримой с ОЗУ. Буферизация решает и другую задачу – сократить
количество реальных обращений к устройствам за счет кэширования
(дисковый кэш)
Разделение устройств и данных между процессами. Устройства
ввода-вывода могут предоставляться процессам в монопольное или
совместное использо вание. Устройства типа "диск" позволяют разграничить
доступ с точностью до отдельных порций данн ых, со своим и правам и.
Другие устройства, например терминал, используется только в монопольном
режиме. П ринтер не выделяется в монопольное использование, но
разграничивает порции выдач разных процессов
Удобный логический интерфейс. Практически все современные ОС
поддерживают в качестве основного логического интерфейса файловую
модель устройств ввода-вывода, когда любое устройство –
последовательность байтов, с которым и можно работать с помощью
системных вызовов. На этой базе строится более сложная модель устройств
ввода-вывода, с учетом их собственной специфики.
Простое включение новых драйверов. Достоинством любой
современной ОС является разнообразие набора драйверов для наиболее
популярных устройств и поддержка нескольких файловых систем
Удобный интерфейс между драйверами и другими компонентами ОС,
необходим для того, чтобы драйверы писали не только разработчики ОС, но
и производители устройств.
Существуют два типа интерфейсов:
• “драйвер-ядро” (Driver Kernel Interface, DKI) для взаимодействия с
ядром ОС;
• интерфейс “драйвер-устройство” (Driver Device Interface, DDI) для
взаимодействия с контроллером.
Для поддержки разработки драйверов обычно выпускается пакет DDK
(Driver Development Kit)
Поддержка нескольких файловых систем. Данные на дисках
организуются в файловые системы. Свой ст ва файловой системы во многом
определяют свойства ОС (отказоустойчивость, быстродействие, емкость и
пр.). Популярные системы мигрируют из одной ОС в другую (например, FAT
мигрировала из MS DOS в OS/2, MS Windows, Unix).
Поддержка синхронных и асинхронных операций ввода-вывода.
Операция ввода-вывода может выполняться по отношению к модулю,
запросившему операцию, синхронно и асинхронно , т.е. с ожиданием
завершения операции или без ее ожидания.
Системные вызовы ввода-вывода из пользовательского процесса
выполняются чаще как синхронные, в связи с тем, что такие операции
выполняются долго и потоку все равно придется ждать результата.
Внутренние же вызовы ядр а обычно выполняются асинхрон но, для свободы
дальнейшего поведения ОС.
Менеджер ввода-вывода. В подсистеме ввода-вывода есть модуль