Устройства ввода-вывода делятся на две категории – блочные и символьные. Блочное устройство оперирует блоками данных, размер которых варьируется в зависимости от устройства. Каждый блок в блочном устройстве имеет собственный адрес. Примером блочного устройства может служить любой накопитель. Одним из наиболее важных свойств блочного устройства является возможность независимого доступа к блокам данных. Символьные устройства оперируют потоками данных, не имеющими структуры или адреса. Большинство устройств являются символьными.
Устройство ввода-вывода обычно состоит из двух частей – само устройство и его контроллер. Контроллер осуществляет управление работой устройства на физическом уровне. Контроллер выполняется в виде набора микросхем и либо совмещен с устройством, либо установлен на системной плате. Если контроллер установлен на системной плате, то обычно он позволяет работать с двумя и более устройствами данного типа. Примером такого контроллера может служить контроллер накопителей на жестких магнитных дисках, который позволяет работать одновременно с двумя НЖМД. Задачей контроллера является преобразование потока битов в блок байтов. Считываемые биты накапливаются в памяти контроллера, которая называется буфером данных, и затем в виде блоков байтов передаются в оперативную память. Каждый контроллер, помимо буфера, имеет также несколько регистров, посредством которых процессор может управлять работой контроллера.
|
|
Существует два альтернативных способа управления контроллерами устройств. Первый способ заключается в том, что каждому регистру назначается уникальный номер порта ввода-вывода. При таком способе адресное пространство оперативной памяти не пересекается с адресным пространством устройств ввода-вывода. Второй способ заключается в выделении каждому регистру отдельного сегмента оперативной памяти. Преимущество второго способа в том, что для программирования работы устройств не нужно прибегать к машинным языкам, а также в том, что при таком подходе для защиты от несанкционированного доступа к устройствам достаточно исключить часть адресного пространства устройств ввода-вывода из блока адресов памяти, доступных пользователям. Недостатком этого подхода в том, что для его реализации необходимо использование более сложной аппаратуры. Повышение сложности аппаратуры обуславливается тем фактором, что некоторые приемы, используемые для ускорения работы с памятью, могут привести к катастрофическим последствиям при использовании их с устройствами ввода-вывода.
Для ускорения обмена данными между процессором и устройствами используется механизм прямого доступа к памяти (DMA). Контроллер DMA обеспечивает чтение данных с устройства в память и запись данных из памяти на устройство. В общих чертах, механизм DMA работает следующим образом – когда процессу требуется прочитать или записать данные на устройство ввода-вывода, процессор программирует контроллер DMA на выполнение необходимой операции, сообщая контроллеру, с каким устройством необходимо выполнить требуемую операцию, и по какому адресу в памяти размещаются данные. До тех пор, пока контроллер выполняет операцию, процессор может выполнять другие процессы. Когда контроллер DMA завершает порученную ему задачу, он посылает процессору сигнал о том, что операция завершена, после чего процессор приостанавливает выполнение текущей задачи, и начинает выполнять тот процесс, который затребовал ввод-вывод данных.
|
|
Прерывание – это сигнал процессору о том, что ему необходимо прервать выполнение текущего процесса и вызвать обработчик прерывания. Обработчик прерывания – это программа, которую процессор должен выполнить при возникновении прерывания. Обработчик прерывания является частью драйвера устройства. Драйвер устройства обеспечивает взаимодействие устройства с операционной системой. В состав операционной системы включен набор стандартных драйверов для поддержки различного оборудования, которое может быть подключено к компьютеру. Если подключаемое устройство обладает какими-либо функциями, которые недоступны операционной системе при использовании стандартного драйвера для данного типа оборудования, то такое устройство, как правило, снабжено собственным драйвером, который устанавливается при первом использовании устройства.