Драйвер
Драйвер — специальная программа, предназначенная для взаимодействия конкретного устройства и другого программного обеспечения, например, операционной системой.
Принцип устройства DOS драйверов
Драйвер может быть загружен или при старте системы из файла CONFIG.SYS (при этом его выгрузка будет невозможна), или в любое другое время (например, из файла AUTOEXEC.BAT). Загрузчик помещает содержимое драйвера в свободное окно ОЗУ и делает переход на EP драйвера. Драйвер должен изменить какие-либо вектора прерываний, заменив их на указатель к своему собственному коду, после чего должен выйти в DOS, оставясь резидентом (TSR). При наступлении прерывания драйвер читает данные из конкретного порта ввода/вывода, анализирует полученную информацию, отправляет ответ устройству при необходимости. После этого драйвер возвращает управление в прерванный код.
При таком подходе драйвер регистрирует обычно два прерывания — одно связанное с IRQ, второе — интерфейс драйвера, через который происходит работа с ним. Если прикладной программе надо обратится к устройству, то она вызывает INT нужного драйвера, драйвер или сразу выдаёт результат, или же если это невозможно (например, это команда устройству) отправляет сообщение в порт устройства и ждёт ответа (IRQ или I/O port polling методом, как более оперативным).
Драйвера появились из необходимости единого способа доступа к разным устройствам. Прикладная программа не обязана знать, какая у вас мышь, чтобы работать с ней. Однако, иногда драйвер не предоставляет интерфейса (например, Sound Blaster AWE32 предоставляет драйвер CTCM, который управляет платой, но не предоставляет прикладных функций, работа с платой осуществляется напрямую через порты I/O). Важно также упомянуть, что драйвер управляет DMA контроллером, позволяя плате не инициировать прерывания в том случае, если ей необходимо совершить обмен данными с оперативной памятью по известному адресу. В этом случае Процессор останавливается и отключается от шины данных, его место занимает контроллер DMA, которому не требуются сохранять состояние программы, выполнять различные переходы и прочее, поэтому обмен данными по DMA происходит значительно быстрее, чем через драйвер и порты I/O процессора. Однако всё равно в время процессор не способен работать (поскольку не может получить доступ к оперативной памяти, в которой находится программа, которую он должен выполнять).
Внимание, данная информация относится только к операционной системе DOS и только к старым компьютерам.