Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

MS-DOS для программиста

© Александр Фролов, Григорий Фролов
Том 18, М.: Диалог-МИФИ, 1995, 254 стр.

[Назад] [Содеожание] [Дальше]

6. Драйверы

Если бы все программы обращались для обмена данными непосредственно к портам периферийных устройств компьютера, программирование превратилось бы в чрезвычайно сложную задачу. В самом деле, во всем мире выпускаются десятки модификаций видеоконтроллеров, принтеров, контроллеров диска и другой аппаратуры, предназначенной для оснащения так называемых "компьютеров, совместимых с IBM PC".

На деле ни о какой полной совместимости на уровне портов ввода/вывода и протоколов обмена данными говорить не приходится. Поэтому, например, вместе с текстовым процессором Microsoft Word for MS-DOS поставляются десятки принтерных драйверов, по одному для каждой модели принтера или семейства моделей принтеров.

Может ли программист учесть все особенности существующей аппаратуры, а также той, что появится в будущем? Очевидно, не может, если, конечно, у него нет дара ясновидения, а также неограниченного запаса времени на тестирование своей программы для бесконечных конфигураций и моделей аппаратного обеспечения. Нам встречалось множество программ, которые могли работать только с той аппаратурой, что имелась в наличии у разработчика. Например, бухгалтерские программы, которые "умели" печатать документы только на принтере Epson FX-850, программы, которые устанавливались только с диска A: емкостью 360 Кбайт и т. д.

Есть ли какой-нибудь способ изолировать разработчика программного обеспечения от аппаратуры компьютера?

Базовая система ввода/вывода BIOS в некоторой степени делает это для дисковых устройств, видеоконтроллера , последовательного и параллельного адаптера. Однако возможности BIOS очень ограничены. Несмотря на то что MS-DOS в какой-то степени расширяет функции BIOS (главным образом, организуя программный интерфейс с файловой системой), мало кто из программистов не использует прямую запись в видеопамять или порты последовательного адаптера. Причина - недостаточная скорость работы, а также чрезвычайно слабые возможности соответствующих средств MS-DOS и BIOS.

Все современные операционные системы обращаются к периферийным устройствам через специальные программные модули - драйверы. В таких операционных системах, как Windows NT, OS/2 или UNIX , обычная программа не может вызывать команды ввода/вывода. Для обращения к периферийному устройству она прямо или косвенно (через операционную систему) должна вызвать драйвер.

В составе операционной системы всегда имеется набор драйверов для стандартного оборудования компьютера, такого как дисковые устройства или видеоконтроллеры VGA . Все прочие устройства, как правило, должны комплектоваться драйверами, созданными разработчиками этих устройств.

Так как драйвер устройства создается разработчиком устройства, все особенности аппаратуры остаются скрытыми для операционной системы и программиста. Пользуясь стандартным для каждой операционной системы интерфейсом, программа пользователя или сама операционная система обращается к драйверу для выполнения операций управления, ввода или вывода.

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

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

Это возможно благодаря тому, что производители совместимых компьютеров учитывают в BIOS все аппаратные особенности, и MS-DOS "не видит" отличий. А прикладная программа, работающая с устройством через драйвер, - и подавно.

Тем не менее, BIOS не используется в операционных системах Windows NT , UNIX или OS/2. Почему?

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

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

[Назад] [Содеожание] [Дальше]