У каждого контроллера есть несколько регистров, с помощью которых с ним может общаться центральный процессор. При помощи записи в эти регистры операционная система велит устройству предоставить данные, принять данные, включиться или выключиться и т. п. Читая из этих регистров, операционная система может узнать состояние устройства, например, готово ли оно к приему новой команды и т. д.
Помимо управляющих регистров, у многих устройств есть буфер данных, из которого операционная система может читать данные, а также писать данные в него. Например, для отображения пикселей на экране данные обычно помещаются в видеопамять, являющуюся, по сути, буфером данных, доступным операционной системе и другим программам для чтения и записи.
Существует два альтернативных способа реализации доступа к управляющим регистрам и буферам данных устройств ввода-вывода (рис. 10.1).
- Первый вариант заключается в том, что каждому управляющему регистру назначается номер порта ввода-вывода, 8- или 16-разрядное целое число.
При помощи такой специальной команды процессора, как IN REG,PORT центральный процессор может прочитать управляющий регистр устройства из порта PORT в регистр процессора REG.
|
|
Аналогично с помощью команды OUT PORT,REG
центральный процессор может записать содержимое своего регистра REG в управляющий регистр устройства через порт PORT.
При такой схеме адресные пространства оперативной памяти и устройств ввода-вывода (рис. 10.1 а).
Команды