The design of the UNIX Operating System 101 страница



 

Для этого мы рассмотрим только две группы устройств: символьные и блочные . Как уже упоминалось в предыдущем разделе, символьные устройства – это устройства, которые умеют передавать данные толь-ко последовательно, байт за байтом, а блочные устройства – это устройства, которые могут передавать блок байтов как единое целое.

 

К символьным устройствам обычно относятся устройства ввода информации, которые спонтанно гене-рируют входные данные: клавиатура, мышь, модем, джойстик. К ним же относятся и устройства вывода информации , для которых характерно представление данных в виде линейного потока: принтеры, звуко-вые карты и т. д. По своей природе символьные устройства обычно умеют совершать две общие опера-ции: ввести символ (байт) и вывести символ (байт) – get и put.

 

Для блочных устройств, таких как магнитные и оптические диски, ленты и т. п. естественными являются операции чтения и записи блока информации – read и write, а также, для устройств прямого доступа, опе-рация поиска требуемого блока информации – seek.

 

Драйверы символьных и блочных устройств должны предоставлять базовой подсистеме ввода-вывода функции для осуществления описанных общих операций. Помимо общих операций , некоторые устройст-ва могут выполнять операции специфические, свойственные только им – например, звуковые карты уме-ют увеличивать или уменьшать среднюю громкость звучания, дисплеи умеют изменять свою разрешаю-щую способность. Для выполнения таких специфических действий в интерфейс между драйвером и ба-зовой подсистемой ввода-вывода обычно входит еще одна функция, позволяющая непосредственно пе-редавать драйверу устройства произвольную команду с произвольными параметрами, что позволяет за-действовать любую возможность драйвера без изменения интерфейса. В операционной системе Unix та-кая функция получила название ioctl (от input-output control).

 

Помимо функций read, write, seek (для блочных устройств), get, put (для символьных устройств) и ioctl, в состав интерфейса обычно включают еще следующие функции.

 

• Функцию инициализации или повторной инициализации работы драйвера и устройства – open.

 

• Функцию временного завершения работы с устройством (может, например, вызывать отключение устройства) – close.

• Функцию опроса состояния устройства (если по каким-либо причинам работа с устройством про-изводится методом опроса его состояния, например, в операционных системах Windows NT и Windows 9x так построена работа с принтерами через параллельный порт) – poll.

• Функцию останова драйвера, которая вызывается при останове операционной системы или вы-грузке драйвера из памяти, halt.

 

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

 

Функции базовой подсистемы ввода-вывода

 

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


Дата добавления: 2021-01-21; просмотров: 109; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!