Устройства ввода-вывода состоят из:
· механической части (находится в самом устройстве)
· электронной части (называется контроллером устройства или адаптером)
Интерфейс между устройством и контроллером является интерфейсом очень низкого уровня.
Например, жесткий диск может быть отформатирован по 256 секторов на дорожку, с размером секторов по 512 байт. С диска в контроллер поступает последовательный поток битов, начинающийся с заголовка сектора, за которым следует 4096 бит в секторе, затем контрольная сумма, также называемая кодом исправления ошибок (ЕСС, Error-Correcting Code). Заголовок сектора записывается на диск во время форматирования. Он содержит номера цилиндра и сектора, размер сектора, информацию синхронизации.
Работа контроллера заключается в конвертировании последовательного потока битов в блок байтов и выполнение коррекции ошибок, если это необходимо. Обычно байтовый блок собирается бит за битом в буфере контроллера. Затем проверяется контрольная сумма блока, и если она совпадает с указанной в заголовке сектора, блок объявляется считанным без ошибок, после чего он копируется в оперативную память.
|
|
Отображаемый на адресное пространство памяти ввод-вывод.
Управляющие регистры. У каждого контроллера есть несколько регистров, с помощью которых с ним может общаться центральный процессор.
При помощи записи в эти регистры операционная система велит устройству предоставить данные, принять данные, включиться или выключиться и т. п. Читая из этих регистров, операционная система может узнать состояние устройства, например, готово ли оно к приему новой команды и т. д.
Буфер данных. У многих устройств есть буфер данных, из которого операционная система может читать данные, а также писать данные в него. Например, для отображения пикселов на экране данные обычно помещаются в видеопамять, являющуюся, по сути, буфером данных, доступным операционной системе и другим программам для чтения и записи.