Активний транзакт з ймовірністю 0,95 скеровується до блоку з міткою BOX20 і з ймовірністю 0,05 скеровується за замовчуванням до наступного блоку згідно порядку.
Блок TRANSFER працює в режимі BOTH, якщо в операнді А використовується ключове слово BOTH (Обоє). У цьому режимі кожний транзакт, що ввійшов у блок TRANSFER, перевіряє два шляхи. Спочатку перевіряється можливість увійти в блок В. Якщо транзакт не може ввійти в цей блок, він намагається ввійти в блок С.
Якщо транзакт не може ввійти у блоки, вказані операндами В і С, то він затримується в блоці TRANSFER. Опитування блоків В і С повторюється для кожної зміни поточного модельного часу доти, поки транзакт не отримає можливість увійти в який-небудь блок. Якщо не використовується операнд В, то перевіряється можливість увійти в наступний блок.
Розглянемо приклад використання блоку TRANSFER в режимі ВОТН.
TRANSFER ВОТН,SAM1,SAM2
......
SAM1 SEIZE PR52
SAM2 SEIZE PR84
Транзакт блоку TRANSFER намагається ввійти у блок з міткою SAM1. Якщо відповідний пристрій PR52 зайнятий, то транзакт скеровується у блок з міккою SAM2. Якщо пристрій PR84 теж зайнятий, то транзакт залишається у блоці TRANSFER. Зі зміною поточного стану моделювання спроби виходу транзакта, затриманого у блоці TRANSFER, повторюються.
|
|
Таким чином, блок TRANSFER у режимі BOTH виконує роль “диспетчера”, тобто розподіляє транзакти між двома ОКП.
Розглянемо роботу блоку TRANSFER у режимі ALL. Тоді в полі операнда А використовується ключове слово ALL. У цьому режимі транзакт, який увійшов у блок TRANSFER, перевіряє можливість увійти в будь-який блок, починаючи із блоку, зазначеного операндом В, і закінчуючи блоком, зазначеним операндом С. Операнд D визначає крок d зміни номера блоку, що перевіряється. Значення кроку дає можливість опитувати певні блоки, розташовані між тими, які задані операндами В і С. Далі транзакт, що ввійшов у блок TRANSFER, намагається ввійти в блок В. Якщо блок В зайнятий, транзакт намагається ввійти в блоки з номерами v + d, v + 2d,..., z, де v – номер блоку В, z – номер блоку С. При цьому z = v + nd, де п – деяке ціле додатне число.
Якщо транзакт не може увійти ні в один з даних блоків, то він залишається у блоці TRANSFER і зі зміною поточного часу моделювання повторює вищеописану процедуру.
Зазвичай в операндах В і С записуються мітки блоків. Тому блоки варто розташовувати таким чином, щоб під час присвоєння різниця між номерами блоків, зазначених в операндах В і С, була кратна кроку, визначеному в операнді D. Наприклад: