Блок розміщує транзакти на початок списку користувача з номером 5 в порядку їх надходженя. Блок
LINK King,P$Princ
розміщує транзакти в список користувача з іменем King. Вони впорядковуються за зростанням значення параметра з іменем Princ.
Розглянемо організацію перевірки умов розміщення транзактів у списку користувача. Вважатимемо, що в них можна розмістити довільне число транзактів. Зокрема, у випадку зайнятості ОКП скерувати транзакт в список користувача можна таким чином
...
GATE NU Kan1,Cher
SEIZE Kan1
...
Cher LINK King,LIFO
...
Якщо ОКП Kan1 зайнятий, то блок GATE направляє транзакт в блок LINK з іменем King і блокує блок SEIZE. Транзакт вводиться на початок списка користувача з іменем King.
Список користувача можна розмістити і так
...
GATE U Kan1,Cher
LINK King,LIFO
Cher SEIZE Kan1
...
Якщо ОКП Kan1 зайнятий, то транзакт переходить до наступного блоку LINK і розміщується в список користувача з іменем King. Незайнятість ОКП зумовлює пересування транзакту в блок SEIZE з міткою Cher. Транзакт займає вільний ОКП.
|
|
Для моделювання реальних систем у списку користувача може розташовуватися задане число транзактів. Це обмеження можна реалізувати наступним чином
Buf EQU 15
...
GATE NU Kan1,Mit1
SEIZE Kan1
...
Mit1 TEST L CH$King,Buf,Mit2
LINK King,FIFO
Якщо ОКП Kan1 зайнятий, то блок GATE блокує входження транзакту в блок SEIZE і спрямовує його в блок ТEST з міткою Mit1, який знаходиться перед блоком LINK. Якщо поточний вміст списка користувача з іменем King є меншим за задану ємність Buf, то транзакт надходить у список користувача. В протилежному випадку він скеровується в блок з міткою Mit2.
Інший можливий варіант цього ж фрагменту моделі має вигляд
Buf EQU 15
...
GATE U Kan1,Mit1
TEST L CH$King,Buf,Mit2
LINK King,FIFO