double arrow

Систематизация внешних устройств и интерфейс между базовой подсистемой ввода-вывода и драйверами

Система типов устройств является далеко не полной и не строго выдержанной. Устройства принято разделять по преобладающему типу интерфейса на следующие типы:

а) символьные (клавиатура, модем, терминал и т.п.);

б) блочные (магнитные и оптические диски и ленты, и т.д.);

в) сетевые (сетевые карты);

г) все остальные (таймеры, графические дисплеи, телевизионные устройства, видеокамеры и т.п.);

Следует отметить, что такое деление является весьма условным. В некоторых операционных системах сетевые устройства могут не выделяться в отдельную группу, в некоторых – отдельные группы составляют звуковые устройства и видеоустройства и т.д. Некоторые группы в свою очередь могут разбиваться на подгруппы: подгруппа жестких дисков, подгруппа мышей, подгруппа принтеров.

Ограничимся рассмотрением только двух групп устройств: символьных и блочных. Символьные устройства – это устройства, которые умеют передавать данные только последовательно байт за байтом, а блочные устройства – это устройства, которые могут передавать блок байт как единое целое.

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

К блочным устройствам обычно относятся магнитные и оптические диски, ленты и др.

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

Обычно в состав интерфейса между базовой подсистемой ввода-вывода и драйверами включают следующие функции:

а) функция чтения блока информации (для блочных устройств) – read,

б) функция записи блока информации (для блочных устройств) –write,

в) функция поиска требуемого блока информации (для блочных устройств) – seek.

г) функция ввода символа (байта) (для символьных устройств) – get.

д) функция вывода символа (байта) (для символьных устройств) – put.

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

ж) функцию инициализации или повторной инициализации работы драйвера и устройства – open;

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

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

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

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


Сейчас читают про: