Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
40
Добавлен:
14.05.2015
Размер:
184.3 Кб
Скачать

Прерывания

Ситуация, когда очередной транзакт должен занять одноканальное устройство, прервав обслуживание предыдущего транзакта, называется «захватом» устройства и моделируется оператором 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,,,3

 

PRIORITY

XN1

;XN1 – номер транзакта

PREEMPT

REM1,PR

 

ADVANCE

11

 

RETURN

REM1

 

TERMINATE

1

 

Блок 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

Семейство транзактов

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

SPLIT N,B,C

N - количество копий,

B - метка оператора, на который передаются копии,

C - номер параметра транзактов, куда записываются последовательные номера копий. (Порождающий транзакт получает при этом номер 1.)

Любой транзакт семейства может быть уничтожен оператором TERMINATE.

Кроме того, транзакты-копии уничтожаются оператором ASSEMBLE, который задерживает поступающие на него транзакты одного семейства до тех пор, пока их количество не станет равно значению параметра этого оператора. Затем все транзакты кроме того, у которого порядковый номер наименьший, уничтожаются, а оставшийся транзакт передается на следующий оператор.

ASSEMBLE M

M - количество транзактов одного семейства, которые должен собрать оператор.

П р и м е р.

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

Затем производится сборка и настройка изделия.

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

GENERATE

10,5;

split

1,lab1,1

queue

stend1

seize

stend1

depart

stend1

advance

9,6

release

stend1

transfer

,lab2

lab1 queue

stend2

seize

stend2

depart

stend2

advance

10,2

release

stend2

lab2 assemble

2

queue

sborka

gate LR

double,lab3

test G

Q$sborka,10,lab4

logic S

double

lab3 transfer BOTH lab4,lab5

lab4 seize

sborka

depart

sborka

advance

15,10

release

sborka

TERMINATE

 

lab5 seize

sborkaadd

depart

sborka

advance

15,10

release

sborkaadd

test L

Q$sborka,2,lab6

logic R

double

lab6 TERMINATE

 

GENERATE 3600 TERMINATE 1 start 1

LABEL

LOC

BLOCK TYPE

ENTRY COUNT

 

1

GENERATE

360

 

2

SPLIT

360

 

3

QUEUE

360

 

4

SEIZE

360

 

5

DEPART

360

 

6

ADVANCE

360

 

7

RELEASE

359

 

8

TRANSFER

359

LAB1

9

QUEUE

360

 

10

SEIZE

357

 

11

DEPART

357

 

12

ADVANCE

357

 

13

RELEASE

356

LAB2

14

ASSEMBLE

715

 

15

QUEUE

356

 

16

GATE

356

 

17

TEST

185

 

18

LOGIC

6

LAB3

19

TRANSFER

177

LAB4

20

SEIZE

239

 

21

DEPART

239

 

22

ADVANCE

239

 

23

RELEASE

238

 

24

TERMINATE

238

Соседние файлы в папке Моделирование систем