Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Основной цикл с прерываниями



 

Структуру метода основного цикла с прерываниями можно расс­матривать как систему опроса с прерываниями. Как и в случае с чистой системой опроса, в этом методе используется понятие "ос­новного цикла". Во время этого цикла может ничего не делаться, а может что-то выполняться, что будет прерываться так часто, как того требуют внешние устройства или часы (таймер). Как только возникает какое-либо событие, прерывание посылается в процессор. Отдельная стандартная программа обслуживания прерывания (ISR) связывается с каждым видом прерывания.

Давайте вернемся к примеру упрощенной системы управления до­машним хозяйством. В нашем примере прерывания разработаны так, что работа процессора прерывается, когда:

1. температура выходит за пределы диапазона от (ref__temp -

delta) до (ref__temp + delta)

2. уровень дыма выходит за пределы безопасности.

Процедуры adjust__temp и initiate_al arm представляют собой две программы ISR, соответствующие указанным двум видам прерыва­ний .

В общем случае прерывание не может быть связано с процедурой water_lawn, потому что эта процедура использует функцию прерыва­ния "int 21h" операционной системы MS-DOS для определения времени суток. Поскольку программа операционной системы MS-DOS не являет­ся реентерабельной, программа ISR не может произвести другое пре­рывание в операционной системе MS-DOS. Поэтому процедура water_lawn не разрабатывается в виде программы ISR, но вызывается из главного программного цикла main_loop:

forever:

cal1 water_lawn ;

call wait_loop ; для протекания некоторого времени ; до повторного вызова процедуры water_lawn

jmp forever

Стандартные программы обслуживания прерываний называются adjust_temp и initiate_al arm. Текст программы ISR такой же, что и

для уже описанных процедур, со следующей разницей:

1. Программа ISR использует команду IRET вместо команды RET
в обычной процедуре. Команда IRET осуществляет возврат управления
в главную программу по завершении выполнения программы ISR.

2. Вы должны сохранять регистры, используемые программой
ISR. Регистры должны восстанавливаться до выполнения команды
IRET.

3. Прерывания должны разрешаться/запрещаться.

Программа adjust_temp должна разрешать использование преры­ваний. В противном случае сигнал об обнаружении дыма может ос­таться нераспознанным, что неприемлемо. Аналогично, программа initiate_alarm должна запрещать управления, потому что она явля­ется процедурой наивысшего приоритета и не должна прерываться вплоть до возбуждения сигнала о пожаре.

Указанные программы ISR должны быть связаны с соответствую­щими уровнями прерываний. Связь эта может быть реализована через функцию "Установить вектор прерываний" в операционной системе MS-DOS. Функция прерывания "int 21h" с кодом функции в AH=25h ис­пользуется для этой цели. DS:DX указывает на программу ISR до выполнение запроса.

mov ah,25h  ; функция = установить вектор

прерываний

mov al , int_l eve! ; Уровень прерываний в AL

mov dx,sadjust_temp

mov ds,dx                               ; адрес программы ISR в DS:DX

mov dx,offset adjust_temp

int 21h                                      ; обращение к операционной

; системе DOS

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

Преимуществами этого подхода являются:

. на опрос неактивных устройств не тратится время

. на любое количество асинхронных внешних событий (если

большинство устройств неактивны) поступает очень быстрый ответ

. более простой текст программ, поскольку каждая программа ISR пишется независимо от других.

Недостатками этого подхода являются:

. сложное взаимодействие между программой ISR и главной программой

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

 

 







Лекция 18


Поделиться:



Последнее изменение этой страницы: 2019-04-21; Просмотров: 180; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.01 с.)
Главная | Случайная страница | Обратная связь