Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1222.doc
Скачиваний:
50
Добавлен:
17.04.2015
Размер:
944.13 Кб
Скачать
    1. Управление устройствами в ms-dos

      1. Уровни доступа к устройствам

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

Уровни доступа к устройствам показаны на рис. 2‑5.

Рис. 2‑5

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

В работе MS-DOSшироко используются возможности, предоставляемыеBIOS(BasicInput/OutputSystem, базовая система ввода/вывода) – набором программных модулей, записанных в постоянной памяти (ПЗУ) компьютера.BIOSпо умолчанию выполняет обработку всех аппаратных прерываний, если эту работу не берет на себяDOSили прикладная программа. Кроме того,BIOSсодержит процедуры обработки ряда программных прерываний ввода/вывода.

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

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

Функции DOS, в отличие от прерыванийBIOS, работают не с конкретной аппаратурой, а с именованными устройствами. Имена устройств задаются в заголовках соответствующих драйверов. Например, дляDOSклавиатура и экран объединяются драйвером консольного устройстваCON.

Процедуры ввода/вывода, используемые в языках программирования (например, ReadиWriteв Паскале,scanfиprintfвC), при компиляции реализуются как подходящие вызовы функцийDOSили, в особых случаях, программных прерыванийBIOS.

      1. Драйверы устройств в ms-dos

Драйвер устройства в MS-DOSсостоит из трех блоков с известными нам названиями: заголовок драйвера, блок стратегии и блок прерываний. При близком рассмотрении оказывается, однако, что сходство ограничивается в основном названиями блоков.

Заголовок драйвера содержит основную информацию об устройстве: символьное или блочное устройство; для символьных устройств – имя устройства; для блочных – количество однотипных устройств, обслуживаемых данным драйвером; не является ли данное устройство системной консолью, системными часами или пустым устройством; какие специальные операции поддерживает устройство.

В заголовке содержатся адреса блока стратегии и блока прерываний, а также адрес заголовка следующего драйвера в списке. Когда система должна выполнить запрос на ввод/вывод, она просматривает список всех драйверов, пока не найдет устройство с нужным именем (если задано символьное устройство) или, для блочного устройства, не определит, какой по счету драйвер соответствует указанному номеру (букве) диска. Затем система вызывает блок стратегии найденного драйвера, передавая ему адрес заявки на выполнение операции. Затем вызывается блок прерываний.

Если в файле конфигурации CONFIG.SYSуказаны имена файлов дополнительных (загружаемых) драйверов, то эти драйверы помещаются в списке впереди стандартных системных драйверов. Поэтому, если имя устройства для загружаемого драйвера совпадает с именем стандартного устройстваMS-DOS, то будет вызван загружаемый драйвер, а не стандартный.

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

Заявка на выполнение операции содержит код операции, поле для записи результата операции, номер диска (для блочных устройств) и другие данные (например, адрес выводимых данных в памяти и адрес сектора на диске). Код операции определяет требуемую операцию – например, чтение, запись, запись с проверкой, открытие или закрытие устройства, проверка смены дискеты, опрос состояния устройства и т.п. Закончив выполнение операции, драйвер записывает в поле результата, была ли операция выполнена успешно или с ошибкой, и с какой именно (ошибка чтения, ошибка записи, нет бумаги в принтере, не найден сектор на диске, недопустимая операция для данного устройства и т.п.).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]