Контроллеры устройств
Устройства ввода-вывода обычно состоят из механической и электронной составляющей. Зачастую эти две составляющие удается разделить, чтобы получить модульную конструкцию и придать устройству более общий вид. Электронный компонент называется контроллером устройства, или адаптером. На персональных компьютерах он часто присутствует в виде микросхемы на системной плате или печатной платы, вставляемой в слот расширения PCI. Механический компонент представлен самим устройством.
На плате контроллера обычно имеется разъем, к которому может быть подключен кабель, ведущий непосредственно к самому устройству. Многие контроллеры способны управлять двумя, четырьмя или даже восемью одинаковыми устройствами. Если интерфейс между контроллером и устройством подпадает под какой-нибудь стандарт, будь то один из официальных стандартов ANSI, IEEE или ISO или же один из ставших де-факто стандартов, то компании могут производить контроллеры или устройства, соответствующие этому интерфейсу. К примеру, многие компании производят дисковые приводы, соответствующие интерфейсу IDE, SATA, SCSI, USB или Fire Wire (IEEE 1394).
Интерфейс между контроллером и устройством зачастую относится к интерфейсу очень низкого уровня. Например, какой-нибудь жесткий диск может быть отформатирован на 10 000 секторов на дорожку, с размером сектора 512 байт. Но на самом деле с привода поступает последовательный поток битов, начинающийся с заголовка сектора (преамбулы), затем следуют 4096 бит, имеющиеся а секторе, и в завершение следует контрольная сумма, также называемая кодом коррекции ошибок (ЕСС, Errorr Correcting Code). Заголовок сектора записывается на диск во время форматирования и содержит номера цилиндра и сектора, размер сектора, и тому подобные данные, а также информацию о синхронизации.
Задача контроллера состоит в преобразовании последовательного потока битов в блок байтов и осуществлении коррекции ошибок в случае необходимости. Блок байтов обычно проходит первоначальную побитовую сборку в буфере, входящем в состав контроллера. После проверки контрольной суммы блока и объявления его не содержащим ошибок он может быть скопирован в оперативную память.
Контроллер монитора также работает как побитовое последовательное устройство на таком же низком уровне. Он считывает байты, содержащие символы, которые должны быть отображены из памяти, и генерирует сигналы, используемые для модуляции луча электронно-лучевой трубки, заставляющие ее вести запись на экране. Контроллер также генерирует сигналы, заставляющие луч электроннолучевой трубки осуществлять обратный ход луча по завершении сканирования строки, а также сигналы для осуществления вертикального обратного хода луча после сканирования всего экрана. Если бы контроллер электронно-лучевой трубки этим не занимался, то программисту операционной системы пришлось бы явным образом программировать аналоговое сканирование трубки. При наличии контроллера операционная система инициализирует его с помощью нескольких параметров, среди которых количество символов или пикселов в строке и количество строк на экране, а заботу об управлений лучом возлагает на контроллер. Плоские жидкокристаллические дисплеи имеют другую, более сложную конструкцию.

