На главную
Подписка
Новости










Главная / MS-DOS / MS-DOS. РУКОВОДСТВО РАЗРАБОТЧИКА / Глава 6 / Зачем нужны драйверы устройств? Сделать домашней страницей Добавить в избранное Написать писмо

НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Основное требование, предъявляемое к любой вычислительной системе, заключается не только в способности вычислять, но и в способности взаимодействовать с внешним миром через периферийные устройства. Без таковой способности компьютер становится не более чем бесполезной "железякой". Задача любой операционной системы состоит в обеспечении средств взаимодействия для прикладных программ и для нужд самой операционной системы.


Для того, чтобы прикладная программа могла взаимодействовать с внешним устройством, операционная система должна удовлетворять двум основным требованиям. Во-первых, должен существовать определенный интерфейс между прикладной программой и операционной системой. Этот интерфейс должен быть достаточно гибким, чтобы прикладная программа могла точно определить свои действия при работе с требуемым устройством. Во-вторых, операционная система обязана уметь передавать и принимать данные от устройства и управлять его работой. Такой интерфейс в MS-DOS обеспечивается так называемыми драйверами устройств.


В то время как операционные системы больших ЭВМ и миникомпьютеров традиционно обладают широкими возможностями по поддержке устройств, микрокомпьютеры довольно бедны в этой области. Обычно они имеют средства поддержки основных дисковых накопителей, системного терминала, печатающего устройства и, возможно, какого-либо дополнительного устройства. Все что поддерживается сверх этого уровня можно рассматривать как приятную неожиданность. В старых операционных системах, включая MS-DOS версии 1.0, обеспечивать поддержку дополнительных устройств после покупки ОС было довольно затруднительно. Операционная система не содержала функциональных запросов прикладного уровня для нестандартных устройств и сами драйверы были глубоко запрятаны в BIOS (базовая система ввода-вывода). Добавление или изменение драйвера устройства требовало корректировки исходных кодов BIOS (при их наличии, разумеется), повторного ассемблирования и копирования полученных кодов на загрузочную дорожку системного диска. Очень часто для выполнения указанных операций не было даже соответствующих утилит. Более того, такие компьютеры как IBM PC не позволяли и этого, т.к. их BIOS записана в ПЗУ (постоянном запоминающем устройстве). Изменение содержимого ПЗУ требует наличия специального программатора (устройства, которое записывает информацию в программируемое ПЗУ), а он имеется далеко не у каждого. И даже после всех этих усилий прикладная программа не имела никаких средств для общения с драйвером с помощью ОС.


Все изменилось с выходом MS-DOS версии 2.0. Вероятно, самым значительным нововведением в операционных системах микрокомпьютеров с тех пор как появилась CP/M стало то, что MS-DOS версии 2.0 и выше обеспечивают не только возможность установки драйверов без каких-либо мучений, но и стандартный расширяемый интерфейс, который дает программам возможность взаимодействовать с драйверами. В результате громадно возросло количество устройств, поддерживаемых MS-DOS и появились драйверы псевдоустройств, обеспечивающие MS-DOS системы такими средствами как RAM-диски, высокоуровневые графические интерфейсы и т.п.


Драйвер устройства в MS-DOS - это подпрограмма, которая вызывается MS-DOS, с одной стороны, и взаимодействует с конкретным устройством, с другой. Как посредник между системой и аппаратурой, драйвер устройства передает данные между программой и устройством.


Зачем нужны драйверы устройств?

Драйверы устройств решают две основные задачи. Первая заключается в обеспечении стандартного интерфейса со всеми программами, желающими использовать определенное устройство, независимого от конкретных особенностей устройства. Программа, выполняющая обработку текста, или электронная таблица, производящая вычисления, может не заботиться о типе терминала, подключенного к системе, выдавая простые команды типа "Отобразить символ" и "Получить символ". Все технические детали по пересылке символов берет на себя драйвер, обеспечивая тем самым желанный для прикладной программы высокоуровневый интерфейс. Замена терминала может вызвать замену драйвера, но при этом в прикладной программе не потребуется делать никаких изменений. Драйверы дисководов должны обеспечивать стандартный интерфейс для всех используемых типов дисков, при этом программа, осуществляющая ввод/вывод с диска, будет работать с дискетой любого формата, с жестким диском, и даже с псевдодиском в ОЗУ, не замечая никаких различий. Одним словом, первая задача драйвера состоит в обеспечении независимого от устройства унифицированного интерфейса.


Второе целевое назначение драйверов устройств заключается в том, что они для всех прикладных программ обеспечивают сервис, подобный библиотекам функций времени выполнения. Любая программа освобождена не только от необходимости поддержки множества разноформатных устройств, но и от необходимости поддерживать вообще какие-либо форматы. Все заботы по поддержке устройств возложены на драйверы устройств. В связи с тем, что все драйверы собраны в операционной системе, требуется лишь одна копия каждого драйвера. В результате этого программы, написанные с использованием интерфейса, предоставляемого MS-DOS, вообще не содержат в себе драйверов.


В операционной системе MS-DOS версии 2.0 и выше драйверы могут быть добавлены для того, чтобы заменить встроенные драйверы системы. Если Вам не нравится как работает системный драйвер с конкретным устройством, Вы можете написать свой собственный драйвер. Как подчеркивалось выше, прикладные программы при этом ничего не заметят. Конечно создание драйвера - не самое простое занятие, но, по крайней мере, такая возможность у Вас есть.


Имея такое мощное средство обеспечения работы MS-DOS с различными устройствами, недолго представить себе драйверы, не поддерживающие реальных устройств! Другими словами, можно написать драйвер,который поддерживает несуществующее устройство, например драйвер-эмулятор диска в ОЗУ. Такие устройства получили название "виртуальные устройства", а драйверы таких устройств, соответственно, "драйверы виртуальных устройств" или просто "виртуальные драйверы".


Реальные или виртуальные устройства не ограничены, по сути дела, только операциями ввода/вывода. На драйвер может быть возложена любая функция по преобразованию данных. Высокоскоростные процессоры для выполнения больших объемов вычислений с плавающей точкой - это только один из примеров устройства преобразования информации. Кроме того, драйверы могут программно эмулировать реальные устройства, которые отсутствуют в конкретной системе, такие как часы или сопроцессор с плавающей точкой.


НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Hosted by uCoz