Как было сказано в главе 1, "Обзор компьютерных систем", внешние устройства, сопровождающие операции ввода-вывода, могут быть объединены в три группы.
• Работающие с пользователем. Используются для связи с пользователем компьютера. В качестве примера можно привести принтеры и видеотерминалы, состоящие из дисплея, клавиатуры, а также другие устройства — на пример, манипулятор "мышь".
• Работающие с компьютером. Используются для связи с электронным оборудованием. К ним можно отнести дисковые устройства и устройства с магнитной лентой, датчики, контроллеры и преобразователи.
• Коммуникации. Используются для связи с удаленными устройствами. К ним относятся модемы и драйверы цифровых линий.
Имеются существенные различия как между устройствами ввода-вывода, принадлежащими к разным классам, так и в рамках каждого класса. Отметим следующие из этих различий.
• Скорость передачи данных. Скорость передачи данных может отличаться на несколько порядков (рис. 11.1).
• Применение. Каждое действие, поддерживаемое устройством, оказывает влияние на программное обеспечение и стратегии операционной системы. Так, на пример, использующийся для хранения файлов диск требует наличия программного обеспечения для управления файлами. Диск, используемый в качестве внешнего запоминающего устройства для страниц виртуальной памяти, зависит от программных и аппаратных средств виртуальной памяти. Кроме того , данные приложения оказывают воздействия и на алгоритмы дискового планирования (этот вопрос рассматривается в настоящей главе позже). В качестве еще одного примера можно привести терминал, который может использоваться как обычным пользователем, так и системным администратором — при этом требуются не только различные уровни привилегий, но и, вероятно, различные уровни приоритетов операционной системы.
• Сложность управления.Для принтера требуется относительно простой интерфейс управления, диску же необходим намного более сложный интерфейс. Влияние этих отличий на операционную систему сглаживается усложнением контроллеров ввода-вывода.
• Единицы передачи данных.Данные могут передаваться как поток байтов или символов (например, при терминальном вводе-выводе), и блоками (например, при выполнении дисковых операций ввода-вывода).
• Представление данных.Различные устройства используют разные схемы кодирования данных, включая разную кодировку символов и контроль четности.
• Условия ошибок.Природа ошибок, способ сообщения о них, их последствия и возможные ответы резко отличаются при переходе от одного устройства к другому.
Рис. 11.1. Скорость передачи данных типичных устройств ввода-вывода
Такое разнообразие приводит тому, что, по сути, невозможна разработка единого и согласованного подхода к проблеме ввода-вывода как с точки зрения операционной системы, так и с точки зрения пользовательских процессов.