Блоки апаратної категорії для переривань одноканальних пристроїв

Режим функціонування ОКП без затримування обслуговування транзактів організовується блоками SEIZE і RELEASE.

Якщо на вході ОКП утворюється черга транзактів, то їх вибір для обслуговування відбувається у порядку надходження для транзактів із рівними пріоритетами, або з урахуванням пріоритету, зазначеного операндом Е блоку GENERATE. Черговий транзакт із більшим пріоритетом чекає на завершення обслуговування попереднього транзакта незалежно від його пріоритету. Пріоритет враховується тільки в черзі, що утворюється.

У багатьох випадках виникає необхідність змоделювати ситуацію, коли черговий транзакт повинен зайняти ОКП, перервавши обслуговування попереднього транзакта. Таке переривання більш “пріоритетним” транзактом обслуговування в ОКП менш “пріоритетного” транзакта здійснюється блоками PREEMPT (Захопити) і RETURN (Повернути). Блок PREEMPT має формат:

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

Операнд А – назва або номер ОКП, на якому здійснюється переривання обслуговування..

Коли ОКП вільний, блок PREEMPT працює так само, як і блок SEIZE. Блок PREEMPT у зайнятому ОКП функціонує в пріоритетному режимі, або в режимі переривання. Режими визначаються операндом В. Якщо В = PR, то операнд В задає пріоритетний режим. Якщо операнд В не викорис­то­вується, то маємо режим переривання.

Якщо під час виконання блоку PREEMPT переривання вже пройшло (пристрій обслуговує переривання), то відповідний транзакт затримується доти, поки не вивільнеться пристрій. Тоді обслуговується новий транзакт, який перериває пристрій, а не попередній.

У пріоритетному режимі роботи блоку PREEMPT передбачено переривання обслуговування транзактів залежно від значимості їх пріоритетів. Перервати обслуговування попереднього транзакта може тільки транзакт із більшим пріоритетом. Якщо пріоритет транзакта, що претендує на зайняття ОКП, дорівнює або нижчий пріоритету транзакта, що обслуговується, він потрапляє у список затримування ОКП. Такий тразакт займає місце у кінці списку затримування для свого пріоритету.

Дії подальшого оброблення тразактів, обслуговування яких перервано, визначають операнди C, D i E.

Операнд С задає назву або номер блоку, куди спрямовується перерваний транзакт. Цей транзакт продовжує претендувати на право користування ОКП, якщо операнд Е не вказується.

Операнд Е визначає режим вилучення перерваного транзакта, якщо Е приймає значення RE.

У режимі вилучення RE транзакт не претендує на подальше використання пристрою і намагається увійти в блок, заданий операндом С (якщо Е приймає значення RE, то вказується операнд С). У цьому режимі перерваний транзакт не повинен входити у блоки RELEASE і RETURN у пристрої обслуговування переривання.

Якщо операнд Е не використовується, то перерваний транзакт спробує увійти в ОКП. Якщо пріоритетний режим не задається (в операнді В відсутнє значення PR), то операнди C, D i E не вказуються.

Операнд D задає номер параметра перерваного транзакта, у який записується час, що залишився до завершення обслуговування. Зокрема, якщо транзакт, обслуговування якого перервано, знаходиться у блоці ADVANCE, то в операнд D записується значення часу від моменту переривання до моменту виходу з блоку ADVANCE. У цьому випадку перерваний транзакт буде переміщений у блок, вказаний операндом С і продовжуватиме претендувати на даний пристрій. У пріоритетному режимі операнд D задається у випадку, коли пріоритет перериваючого транзакту є більшим, ніж пріоритет перерваного транзакту.

Операнди А, С, D і Е можуть бути назвою, додатним цілим числом, виразом у дужках, СЧА або СЧА*параметр.

Блок RETURN звільняє ОКП від переривання обслуговування транзактів. Формат блоку:


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



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