Priority 100 - студопедія

Ввійшов в цей блок транзакту присвоюється пріоритет 100.

Затримка в блоці ADVANCE залежить від пріоритету транзакта. Гранзакт c найбільш низьким пріоритетом (1) затримується на 4 оди-ниці модельного часу, транзакт c найбільш високим пріоритетом (3) затримується на 10 одиниць модельного часу.

4.16. Організація обслуговування c перериванням. Блоки PRE-EMPT і RETURN

У багатьох випадках виникає необхідність організації про-вання в пристрої c переривань (наприклад, при виконан-ванні деякої операції на верстаті сталася його поломка). Таку ситуацію можна змоделювати, вважаючи, що відмова обладнання є транзакт, пріоритет якого вище, ніж у транзакта, оброблюваного верстатом. У цьому випадку більш пріоритетний транзакт повинен перервати обслуговування менш пріоритетного транзакта, тобто вивантажити його з пристрою. Звідси зрозумілий дослівний переклад c англійської слова preempt- вивантажити, але c точки зору роботи одноканальної CMO прийнято використовувати термін ЗАХОПИТИ пристрій [10]. Для організації обслуговування в уст-ройстве c переривань використовують пару блоків PREEMPT (ЗАХОПИТИ) - RETURN (ПОВЕРНУТИ) так само, як для звичайного пристрою без переривань використовувалися блоки SEIZE - RELEASE.

Блок PREEMPT має такий вигляд:

Результат за замовчуванням

Ім'я пристрою (числове або сім-вільне)

Можливість захоплення за пріоритетом

Ім'я блоку (числове або символьне), в який переходить перерваний транзакт

Див. Пояснення нижче

Номер параметра (числове або сім-вільне ім'я) у перерваного транзакта

Див. Пояснення нижче

Можливість зняття з обслуговування

Див. Пояснення нижче

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

Операнд визначає номер або ім'я пристрою, на якому генерується переривання. Операнд може бути ім'ям, позитивними-ним цілим, ВЧА або CЧA * CЧA.

Операнд В задає пріоритетний режим (якщо B = PR) або режим переривання (якщо цей операнд опущений). При роботі в пріоритетному режимі транзакт, вже займає пристрій або генерує на ньому переривання, може бути перерваний тільки транзактом, пріоритет якого вище пріоритету даного транзакта. Перервані транзакти претендують на додаткове використання пристрою, коли пре-які рвалися їх транзакт увійде до відповідного блоку RETURN. Перервані транзакти поміщаються в список затримки в порядку пріоритету.

Операнд C задає номер або ім'я блоку, в який в цей же мо-мент часу повинен спробувати увійти перерваний транзакт. Пре-рваний транзакт втрачає управління пристроєм, але претендує на право його використання, якщо тільки не заданий аргумент операнда Е. В пріоритетному режимі роботи бажано ставити операнд C. якщо переривають транзакт має більш високий пріоритет, ніж прерій-ваемий. Операнд може бути ім'ям, позитивним цілим, ВЧА або CЧA * CЧA.

Операнд D задає номер параметра, пов'язаного c перерваним транзактом. Якщо переривається транзакт в момент переривання на-спрямовується в список майбутніх подій (див. Параграф 4.22), тоді залишок часу записується в заданий параметр. Якщо такий пара-метр не існує, то він створюється. У пріоритетному режимі роботи операнд D задають тільки в тому випадку, якщо переривають транзакт має більш високий пріоритет, ніж переривається транзакт. Операнд може бути ім'ям, позитивним цілим, ВЧА або CЧA * CЧA.

Операнд Е задає або не задає режим видалення (RE). B режи-ме видалення RE перерваний транзакт більш не претендує на викорис-тання пристрою і намагається увійти в блок, заданий операндом C (якщо в операнде Е варто RE. То повинен бути визначений і опе-ранд C). У пріоритетному режимі роботи режим RE використовується тільки в тому випадку, якщо пріоритет перериває транзакта більше пріоритету переривається транзакта. При використанні RE перерваний транзакт не повинен входити в блоки RELEASE або RETURN, пов'язані пристроєм, в якому обслуговувався перерваний транзакт. Якщо режим RE не заданий (операндE опущений), то перерваний транзакт після повернення в список поточних подій буде знову намагатися зайняти пристрій.

Переривається транзакт може перебувати в списку майбутніх со-битій. Якщо треба зробити це, то використовують операнд D.

Перерваний транзакт бореться за пристрій, навіть якщо він пере-ня операндомC (якщо RE не використовується в операнде E). Якщо перерваний транзакт все ще бореться за пристрій, то спроба транзакта увійти в блок TERMINATE призводить до помилки. Такий транзакт перед входом в блок TERMINATE повинен увійти в блоки RELEASE іліRETURN

Транзакт може бути перерваний на будь-якій кількості пристроїв.

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

Транзакт не може увійти в блок, якщо в пріоритетному режимі пристрій вже захоплено транзактом c пріоритетом рівним або більшим, ніж пріоритет активного транзакта. Активний транзакт міститься відповідно c пріоритетом в список затримки устрій-ства.

Транзакт не може увійти в блок, якщо пристрій знаходиться в недоступному стані. Такі транзакти поміщаються в список затримки пристрою відповідно c пріоритетом, А всередині Пріора-та - за правилом FIFO.

Стандартні числові атрибути, пов'язані c описуваних блоком, ті ж, що і в табл. 4.26, c додаванням ВЧА FIj - прапор переривання пристрою (1, якщо пристрій знаходиться в стані переривання, 0 - в іншому випадку).

Слід звернути увагу, що при завданні операндів D і (або) E. операнд C також повинен бути заданий.

Якщо пріоритетний режим не заданий (немає PR в операнде В), то операнди C. D і (або) E ігноруються. Однак можливий варіант, коли для перерваного транзакта вибирається альтернативний вихід, причому пріоритет транзакта не враховується. Цей випадок виникає тоді, коли заданий операнд C (а іноді і операнди D і (або) E), але в операнде В не заданий пріоритетний режим. Таке використання опе-рандів призводить до того, що займає пристрій транзакт пре-переривається і направляється по альтернативному шляху. В даному випадку багаторівневі переривання не відбуваються.

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

Блок RETURN є парним до блоку PREEMPT, також як блок RELEASE до блоку SEIZE, і призначений для звільнення раніше захопленого пристрою. Він має такий вигляд:

Схожі статті