Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КНИЖКА_Моделювання систем у GPSS World.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
7.15 Mб
Скачать

5.4. Блоки перевірки стану та передавання керування в одноканальних пристроях

У GPSS World здійснюється послідовне проходження транзактів у блоках. Але у процесі моделювання реальних систем потік транзактів може затримуватися, або змінювати свій напрям руху до блоку з вказаним номером залежно від різних умов. До групи зміни маршрутів транзактів в GPSS World входять блоки GATE (Впустити) і TEST.

Блок GATE використовується для керування рухом транзактів залежно від стану пристроїв. Формат запису:

GATE X А,[В]

Блок GATE працює у двох режимах:

  • режим відмови на вході;

  • режим дозволу на вході й альтернативному виході.

Під час роботи в режимі відмови блок GATE не пропускає транзакти, якщо відповідний об'єкт не перебуває в необхідному стані. Якщо ж поставлена в блоці GATE умова виконується, тоді активний транзакт входить у нього й потім переходить до наступного блоку. Операнд А визначає назву або номер ОКП, для якого перевіряється умова.

Операнд В містить номер наступного блоку для вхідного транзакта, коли умовний оператор має значення “неправда”. Операнди А і В можуть бути назвою, додатним цілим числом, виразом у дужках, СЧА, СЧА*параметр. Якщо операнд В не використовується, то перевірка здійснюється в режимі відмови. Якщо результат цієї перевірки не буде “істина”, то транзакт потрапить в список повторних спроб об'єкта, що перевіряється. Коли стан кожного з об'єктів змінюється, заблокований транзакт знову активізується, повторюється перевірка заданої блоком GATE умови. Якщо ця умова виконується, транзакт входить у блок GATE і далі переходить до наступного за чергою блоку.

Для ОКП умовний оператор Х приймає такі значення для перевірки стану:

  • NU – ОКП, заданий операндом А, вільний;

  • U – ОКП, заданий операндом А, зайнятий.

Застосування інших логічних операторів блоку GATE для перевірки об'єктів апаратної категорії у станах переривання і недоступності розглядається у розділах 5.7 і 5.8.

Також існують логічні оператори, пов’язані з транзактами:

  • М – блок GATE перевіряє виконання умови синхронізації у вказаному блоці моделі;

  • NM – блок GATE перевіряє невиконання умови синхронізації у вказаному блоці.

Логічними операторами, що пов’язані з логічними ключами, є:

  • LS – логічний ключ, заданий операндом А, у стані “включений”;

  • LR – логічний ключ, заданий операндом А, у стані “виключений”.

Логічні ключі у GPSS використовуються для опису елементів системи, які можуть знаходитися у вище наведених двох станах – LR i LS (L – “LOGIC”, R – “RESET”, S – “SET”). Статистичні дані про роботу ключів не збираються. Для встановлення станів логічних ключів використовується блок LOGIC (Змінити), який має такий формат:

LOGIC X A

Операнд А є номером логічного ключа і може бути назвою, додатнім цілим числом, СЧА або СЧА*параметр. Стан логічного об’єкта, вказаного операндом А, змінюється залежного від значення оператора Х, а саме: S – логічний ключ встановлюється у положення „включено”, R – відповідно встановлюється у положення „виключено”, І – логічний ключ інвертується, тобто його положення змінюється на протилежне.

Розглянемо приклади використання блоку GATE:

GATE U Kdf

GATE NU (FN$Krah+8)

GATE NU Luez,Trif

У першому прикладі блок GATE не пропустить транзакт за умови незайнятості ОКП з назвою Kdf. У другому випадку – коли зайнятий ОКП, номер якого визначається як результат обчислення й наступного округлен­ня виразу в дужках FN$Krah+8. У третьому прикладі у випадку зайнятості ОКП з назвою Luez транзакт буде спрямований до блоку з назвою Trif.

Для перевірки стану ОКП можна використовувати також булеві змінні і блок TEST (Перевірити).

Блок TEST визначає номер наступного блоку для транзакта, що надійшов, залежно від того, чи виконується необхідна умова, записана у вигляді алгебраїчних відношень двох аргументів. Блок TEST також функціонує у двох режимах, властивих блоку GATE.

Формат запису блоку є таким:

TEST X А,В,[С]

Операнди А і В є порівнюваними величинами. Вони можуть бути назвою, числом, рядком, виразом у дужках, СЧА, СЧА*параметр. Умовний оператор X може бути виражений одним із наступних шести умовних операторів: L – менше; LE – менше або дорівнює; Е – дорівнює; NE – не дорівнює; G – більше; GE – більше або дорівнює.

Якщо операнд С зазначений, транзакт завжди може ввійти в блок TEST і залежно від співвідношення операндів А і В буде переданий або в наступний блок, або в блок, зазначений операндом С. Якщо операнд С не зазначений, транзакт при невиконанні умови не зможе ввійти в блок TEST (режим відмови). Він потрапляє в список повторних спроб всіх об'єктів, що беруть участь у перевірці умови. Такий режим є затрудненим, оскільки передбачає багатократну перевірку умов блокування.

Можуть використовуватися наступні СЧА ОКП:

  • F – дорівнює 1, якщо ОКП зайнятий, у протилежному випадку – 0;

  • FC – кількість транзактів, що займали ОКП за допомогою блоків SEIZE і PREEMPT;

  • FR – коефіцієнт використання ОКП;

  • FT – середній час обслуговування ОКП одного транзакта.

Розглянемо приклади:

TEST LE Q1,5,Otk1

означає, що якщо умова “довжина черги 1 менше або дорівнює 5” виконується, тоді активний транзакт передається наступному блоку, у протилежному випадку він скеровується до блоку з міткою Otk1.

TEST G Q1,5

означає, що якщо умова “довжина черги 1 більше 5” виконується, тоді активний транзакт передається наступному блоку, у протилежному випадку він блокується до того часу, поки дана умова не буде виконана.

Наведемо приклад використання блоку TEST для перевірки стану ОКП, у якому транзакти очікують обслуговування, якщо довжина черги є не більшою 4. У протилежному випадку обслуговування не здійснюється (транзакт направляеться в блок TERMINFTE помічений міткою LBL). Відповідний фрагмент програми може бути таким:

TEST LE Q$STR,4,LBL

QUEUE STR

SEIZE POINT

DEPART STR

ADVANCE 50,16

RELEASE POINT

. . .

LBL TERMINFTE 1

. . .