Организация обслуживания с прерыванием

Для организации обслуживания в уст­ройстве с прерываниями используют пару блоков PREEMPT (ЗАХВАТИТЬ) - RETURN (ВЕРНУТЬ) так же, как для обычного устройства без прерываний использовались блоки SEIZE -RELEASE.

Блок PREEMPT имеет следующий формат:

PREEMPT A,[B],[C],[D],[E]

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

А определяет номер или имя устройства, на котором генерируется прерывание. Операнд может быть именем, положитель­ным целым, СЧА или СЧА*СЧА.

В задает приоритетный режим (если B =PR) или режим прерывания (если этот операнд опущен).

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

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

С задает номер или имя блока, в который в этот же мо­мент времени должен попытаться войти прерванный транзакт. Операнд может быть именем, положительным целым, СЧА или СЧА*СЧА.

D задает номер параметра, связанного с прерванным транзактом. В приоритетном режиме работы операнд D задают только в том случае, если прерывающий транзакт имеет более высокий приоритет, чем прерываемый транзакт. Операнд может быть именем, положительным целым, СЧА или СЧА*СЧА.

Е задает либо не задает режим удаления (RE). В режиме удаления RE прерванный транзакт более не претендует на использование устройства и пытается войти в блок, заданный операндом С (если в операнде Е стоит RE, то должен быть определен и операнд С).

Следует обратить внимание, что при задании операндов D и (или) Е, операнд С также должен быть задан.

Если приоритетный режим не задан (нет PR в операнде В), то операнды С, D и (или) Е игнорируются.

Пары блоков SEIZE - RELEASE и PREEMPT - RETURN могут использовать одни и те же имена занимаемых устройств. В зависимости от логики работы модели пользователь должен сам определить, в каком случае разре­шать прерывания, а в каком - нет.

Блок RETURN является парным к блоку PREEMPT, также как блок RELEASE к блоку SEIZE, и предназначен для освобождения ранее захваченного устройства. Он имеет следующий формат:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: