Terminate 1

RETURN REM1

ADVANCE 11

PREEMPT REM1,PR

PRIORITY XN1

GENERATE 5,,,3

Прерывания

Добавка

String s,s1;

s=(String)lm.getItemAt(2);

s1=(String)lm2.getItemAt(1);

s= “третий”

s1=”пятый’

Ситуация, когда очередной транзакт должен занять одноканальное устройство, прервав обслуживание предыдущего транзакта, называется «захватом» устройства и моделируется оператором PREEMPT (захватить).

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

А (обязательный операнд) – имя или номер захватываемого ОКУ;

Когда ОКУ свободно, оператор PREEMPT работает так же, как и оператор SEIZE

При занятом ОКУ оператор PREEMPT функционирует

· в режиме прерывания (параметр В опущен)

· в приоритетном режиме (параметр В = PR)

В приоритетном режиме прервать обслуживание транзакта, т. е. «захватить» ОКУ, может только транзакт с большим приоритетом. Если приоритет претендующего на занятие ОКУ транзакта равен или ниже приоритета обслуживаемого транзакта, он помещается в список задержки ОКУ последним в своем приоритете


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

С – метка оператора, куда может быть направлен прерванный транзакт;

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

Е – указатель удаления прерванного транзакта из списка задержки (Е = RE). Если режим RE не задан (операнд E опущен), то прерванный транзакт по возвращении в список текущих событий будет вновь пытаться занять устройство

Транзакт, захвативший ОКУ, освобождает его от захвата вхождением в оператор RETURN.

Формат записи:

RETURN А,

где А – имя или номер освобождаемого ОКУ.

Прерывание может быть снято в операторе RETURN только тем транзактом, которым оно сгенерировано.


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

Транзакт не может войти в оператор, если устройство находится в недоступном состоянии. Такие транзакты помещаются в список задержки устройства в соответствии c приоритетом, а внутри приоритета – по правилу FIFO.

Стандартные числовые атрибуты, связанные c описываемым оператором, те же, что и для одноканального устройства, c добавлением СЧА FIj, который является флагом прерывания устройства (1, если устройство находится в состоянии прерывания, 0 – в противном случае).

Пример.

Использование оператора PREEMPT в приоритетном режиме.

Блок GENERATE генерирует только три транзакта в моменты 5, 10 и 15 модельного времени и перестает быть активным. Каждый очередной транзакт, благодаря оператору PRIORITY, имеет более высокий приоритет, чем предыдущий: 1, 2 и 3 соответственно.


Пример.

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

GENERATE 10,5;

queue dev1

seize dev1

depart dev1

advance 6,4

release dev1

TERMINATE

GENERATE 100,25

preempt dev1,,inter,1,re

advance 27,7

return dev1

TERMINATE

inter queue intr

seize dev2

depart intr

advance (10#p1)

release dev2

TERMINATE

GENERATE 3600

TERMINATE 1

start 1


1 GENERATE 360

2 QUEUE 360

3 SEIZE 360

4 DEPART 360

5 ADVANCE 360

6 RELEASE 336

7 TERMINATE 336

8 GENERATE 35

9 PREEMPT 35

10 ADVANCE 35

11 RETURN 35

12 TERMINATE 35

13 QUEUE 23

14 SEIZE 23

15 DEPART 23

16 ADVANCE 23

17 RELEASE 23

18 TERMINATE 23

19 GENERATE 1

20 TERMINATE 1


FACILITY ENTRIES UTIL. AVE. TIME

DEV1 395 0.831 7.575

DEV2 23 0.206 32.316

QUEUE MAX CONT. ENTRY ENTRY(0). AVE.TIME

DEV1 4 0 360 118 0.841

INTR 1 0 23 23 0.000



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



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