Учебное пособие Санкт-Петербург Издательство спбгэту «лэти» 2006

Вид материалаУчебное пособие

Содержание


5.5. Программные средства управления вводом-выводом
Основные компоненты процедуры управления ввода-вывода общего вида
5.6. Состав и реализация устанавливаемого драйвера символьного типа
Seg_pqbf dw ?
Код обработчика прерываний
Fun_tab label word
Подобный материал:
1   ...   18   19   20   21   22   23   24   25   26

5.5. Программные средства управления вводом-выводом



Состав




ПСУВВ
















Управление данными




Управление устройствами




































Блочно–ориент. I/O

Записе- ориен. I/O

FCB доступ

FH доступ

Распред. ВУ между задачами

Подсистема буфери-зации

Драйверы внешних устройств





Рис. 5.11

На рис. 5.11 две основных части: управление данными и устройствами.

Подсистема управления данными обеспечивает:

- блочно-ориентированный ввод-вывод для файлов последовательного доступа;

- записе-ориентированный ввод-вывод для файлов прямого доступа.

Система управления устройствами содержит три подсистемы:

Диспетчеризация устройств между задачами.

Подсистема буферизации загрузки и выгрузки данных

Набор драйверов для управления операциями ввода-вывода в конкретных ВУ.


Основные компоненты процедуры управления ввода-вывода общего вида
  1.  Подготовительная (инициализирующая) часть:

Формирование областей для хранения данных и создание указателей на эти области.

Указания типа и логического номера внешнего устройства.

Задание режима передачи данных и направления передачи.

Этот этап обычно реализует процессор, который осуществляет подготовку.

  1.  Планирование, проверка готовности и запуск устройства.

Выбор канала.

Выбор внешнего устройства.

Замена логических номеров на физические адреса.

Проверка готовности для выполнения операции.

Запуск устройства для работы.

  1.  Выполнение устройством операции ввода-вывода

Для реализации используются драйверы и программы управления данными

  1.  Завершение операции ввода-вывода; следовательно освобождаются занимаемые области памяти и устройства, участвовавшие в операции.



5.6. Состав и реализация устанавливаемого драйвера символьного типа


Возможны четыре варианта использования драйвера:
  1. Непосредственно написание драйвера на уровне битов портов ввода-вывода и включение его в собственную программу; используется в случае редко используемых драйверов и специализи-рованных машин (малоперспективно).
  2. Подключение драйвера в оверлейном режиме (сокращение занимаемой области памяти).
  3. Написание драйвера как резидентного обработчика прерываний. Достоинство: доступен всем программам. Недостаток: как правило, доступен только из ассемблера.
  4. Создание устанавливаемого в операционной системе драйвера, который включается в файл конфигурации config.sys с помощью команды типа device = path\my_driver

Хорош тем, что драйвер полностью поддерживается средствами операционной системы. Соответственно к нему применимы команды операционной системы вида:

copy a:\ my_driver c:\drv

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

Устанавливаемые драйверы бывают двух типов: блочные и символьные.

Первые используют файловую организацию и передачу данных блоками (обычно применяются для работы с дисковыми накопителями). Вторые используют посимвольную передачу данных (она проще) и применимы к любым внешним устройствам.

Символьный драйвер состоит из следующих элементов:
  1. Заголовок драйвера.
  2. Процедура стратегии.
  3. Буфер запроса.
  4. Обработчик прерываний подключает таблицу функций с набором операций, которые могут выполняться данным устройством.


1.  Заголовок драйвера (18 байт)
  1. Адрес следующего драйвера (4 байт).
  2. Атрибуты (2 байт).
  3. Смещение процедуры стратегии (2 байт).
  4. Смещение обработчика прерываний.
  5. И


    Заголовок драйвера Буфер запроса

    1)Адрес след.драйвера 1)Длина буф. запроса

    2)Атрибуты 2)Код ВУ

    3)Смещение (3) 3)Код команды Вв/выв

    4)Смещ. обр-ка прер. 4)Статус

    5)Имя устройства (2) 5)Резерв


    Процедура стратегии (4) Данные

    (5)

    Обработчик прерываний (не найден)

    | инициализация

    ТаблФ | ввод

    | вывод


    (6) (7)

    ПП инициализац


    ПП ввода

    (функция вып.команды)

    ПП вывода

    (8)

    RET статус завершения


    возврат

    в прикладную

    программу
    мя устройства (8 байт).









































Драйвер обычно записывается как самостоятельный модуль, но без PSP, поэтому не может запускаться самостоятельно.

1. Атрибуты:

15 бит : 1- символьный драйвер

0 – блочный драйвер

14 бит : поддержка IOCTL

13 бит : формат блоков

1 – IBM

0 – любой другой

………


3 бит : 1 – часы

0 – не часы

2 бит : 1 – null

0 – не null

1 бит : 1 – STDOUT (стандарт вывода)

0 - STDIN (стандарт ввода)


2. Процедура стратегии.

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


DEV_STRAT:

mov cs:SEG_PQBF, es ;

mov cs:OFF_PQBF, es ;

ret

SEG_PQBF DW ?

OFF_PQBF DW ?

3. Буфер запроса.

Структура данных, через которые прикладная программа связывается с драйвером (прикладная программа задает вид операции ввода-вывода и место расположения данных, а драйвер возвращает ей свой статус (все идет через буфер запроса)).

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

Заголовок запроса.

+0 : длина буфера запроса

+1 : код внешнего устройства

+2 : код команды ввода-вывода

+3 : статус

+5 : резерв

+13d : данные


4. Обработчик прерывания.

Это только процедура, которая таблично вызывает функцию, реализующую команду ввода-вывода; она завершается командой RET и выдачей статуса.




Код обработчика прерываний

dev_intpr: push A

mov ax, SEG_PQBF ;

mov es, ax ;

mov bx, OFF_PQBF ;

mov al, es:[bx+2] ;

shl al, 1 ;

xor ah, ah ; Подготовка и загрузка

lea di, FUN_TAB ; смещения функции

add di, ax ; в таблицу функции

jmp word ptr[DI] ;

FUN_TAB LABEL WORD;

 DW INITIALIZE

 DW CHECK_MEDIA

 . . . . . . .

 DW INPUT_DATA

Тринадцать  . . . . . . .

функций  DW OUPUT_DATA

 . . . . . . .

 DW OUTPUT_STATUS

 . . . . . . .

 DW IOCTL_OUT


Определенная функция находится в определенной строке таблицы.

Предположим что драйвер поддерживает только две функции init и out, тогда:

CHECK_MEDIA:

. . . . . .

INPUT_DATA:

. . . . . .

IOCTL_OUT:

or es.word ptr[bx]+3, 8103h

JMP QUIT

INITIALIZE:

lea ax, E_O_P

mov es, word ptr[bx]+14, ax

mov es, word ptr[bx]+16, cs

JMP QUIT

OUTPUT_DATA


QUIT:

OR es:word ptr[bx]+3, 100h

POPA

RET


В поле статус, бит

15 – ошибка

9 – драйвер занят

8 – функция завершена

с 0 – 7 – код ошибки

Пример: 8103h означает 8 – ошибка , 1 – операция завершена, 03 – неизвестная ошибка.


После разработки драйвера нужно вставить его в config.sys

Надо учесть, что драйвер не прощает ошибок. Так как он скрыт от пользователя, поэтому нельзя пользоваться отладчиком.

Список литературы

Цилькер Б.Я., Орлов С.А. Организация ЭВМ и систем: Учебник для вузов. СПб.: Питер, 2004.

Таненбаум Э. Архитектура компьютера. СПб.: Питер, 2002.

Гук М. Аппаратные средства IBM PC. Энциклопедия 2-е изд. СПб.: Питер, 2002.

Зубков С.В. Assembler. Для DOS, Windows и Unix. М.: ДМК, 1999.

Компьютеры на СБИС: В 2 кн. Кн.1 / Пер. с япон.; Мотоока Т., Томита С., Танака Х. и др. М.: Мир, 1988.

Королев Л.Н. Микропроцессоры, микро- и мини-ЭВМ. – М.: Изд-во МГУ, 1988


Дополнительная

Касперски К. Техника оптимизации программ. Эффективное использование памяти. СПб.: БХВ-Петербург, 2003.

Рудометов Е., Рудометов В. Архитектура ПК, комплектующие, мультимедиа. СПб.: Питер, 2000.

Рудаков П.И., Финогенов К.Г. Программируем на языке ассемблера IBM PC. Обнинск: Принтер, 1999.

Фрир Дж. Построение вычислительных систем на базе перспективных микропроцессоров / Пер. с англ. М.: Мир, 1990.

Фролов А.В., Фролов Г.В. Аппаратное обеспечение персонального компьютера. М.: Диалог-МИФИ, 1997 (Библиотека системного программиста; т.33).

Джордейн Р. Справочник программиста ПК типа IBM PC XT и AT / Пер. с англ. М.: Финансы и статистика, 1991.