Драйверы устройств в системе Windows


Драйвер устройства в системе MS-DOS - часть 4


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

     Далее драйвер  устройства выдает  приглашение для  пользователя : Start(начать)  или   Quit(выйти).  Если   пользователь  нажимает    S, программа начинает пересылку ввода-вывода. Если пользователь  нажимает Q,  то   программа  отключает   устройство,  восстанавливает    вектор прерывания и завершается.

    Чтобы  начать  операцию  ввода-вывода,  драйвер  MS-DOS   сначада размаскирует  программируемый   контроллер  прерываний   (programmable interrupt  controller  -  PIC)  для  уровня  прерывания  устройства (в примере прерывание 11).  Затем драйвер начинает  операцию ввода-вывода для  устройства  путем  записи  1  в  бит  0 порта управления. Так как прерывания  включены,  то  при  возникновении прерываний на устройстве получит  управление  программа   обслуживания  прерываний   (interrupt service routine - ISR).

     Если  происходит  прерывание  на  устройстве,  то  программа  ISR подтверждает прием прерывания,  посылая значение EOI  устройству (т.е. записывая 1 в  бит 1 порта  управления устройства) и  контроллеру PIC. Если программа, выполняющая  ввод-вывод, существует, то  программа ISR выполняется.   В   противном   случае   программа   ISR   осуществляет инициализацию пересылки ввода-вывода вновь, записывая 1 в бит 0  порта управления  устройства.  Итак,  программа  ISR возобновляет ввод-вывод всякий  раз,  когда  происходит  прерывание,  таким образом устройство непрерывно   выполняет   операцию   ввода-вывода.   Кроме  обеспечения непрерывного ввода-вывода программа ISR увеличивает счетчик (dwCount1) всякий раз, когда обрабатывает прерывание.

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

     Чтобы  завершить  программу,  пользователь  нажимает  клавишу  Q.Программа  устанавливает  флаг,  который  информирует  программу ISR о том,  что  следует  остановить  обработку.  После  того,  как операция ввода-вывода  остановлена,  программа  маскирует  уровень прерывания в контроллере PIC и восстанавливает вектор прерывания.




- Начало -  - Назад -  - Вперед -