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

Функціонування БКП у моделях можна організувати у двох режимах: зайняття/звільнення та недоступності.

БКП визначається командою STORAGE у форматі

Name STORAGE A

де Name – назва БКП. Для звертання до декількох БКП символічному імені ставиться у відповідність номер за допомогою команди EQU. Операнд А є тільки цілим додатним числом.

У процесі моделювання БКП події відбуваються у такій послідовності:

  • транзакт очікує своєї черги у випадку необхідності;

  • транзакт займає пристрій;

  • пристрій обслуговує протягом деякого інтервалу часу;

  • транзакт звільняє пристрій.

Зайняття й звільнення БКП моделюється блоками ENTER (Ввійти) і LEAVE (Вийти). Формати блоків:

ENTER А,[В]

LEAVE А,[В]

Операнд А в блоках вказує на назву БКП. Він використовується для пошуку БКП із зазначеною назвою, коли транзакт входить у блок ENTER. Якщо такого БКП немає, відбувається зупинка процесу моделювання. Операнд В задає число одночасно зайнятих пристроїв (елементів пам’яті) в блоці ENTER або звільнених в блоці LEAVE. За замовчуванням операнд В = 1 (для В = 0 блок вважається нефункціонуючим).

Транзакт може ввійти в блок ENTER, якщо БКП перебуває в доступному стані і містить достатню ємність для обслуговування. У протилежному випадку транзакт потрапляє в список затримування пристрою відповідно до пріоритету.

Під час входження транзакту у блок ENTER виконуються наступні дії:

  • збільшується на значення операнда В лічильник входів БКП;

  • збільшується на значення операнда В (за замовчуванням на 1) поточний вміст БКП;

  • зменшується на значення операнда В (за замовчуванням на 1) доступна ємність БКП.

БКП ніколи не може бути вилучений з поточної моделі, навіть якщо команда STORAGE видаляється з програми. БКП можна перевизначити, тобто змінити його ємність іншою командою STORAGE із тією ж самою назвою. Наприклад:

Buf STORAGE 8

Повторний опис

Buf STORAGE 12

Імітація обслуговування протягом певного проміжку часу також здійснюється блоком ADVANCE. Наприклад:

Nak1 STORAGE 10

. . .

ENTER Nak1,2

ADVANCE 80,5

LEAVE Nak1,2

. . .

Командою STORAGE визначається БКП з назвою Nak1 ємністю 10 одиниць. Під час входу транзакта в блок ENTER займається 2 одиниці й стільки ж звільняється в блоці LEAVE з виходом із БКП.

Якщо транзактом здійснюється запит на більшу кількість пристроїв (елементів пам'яті), ніж визначено командою STORAGE, (значення операнду А команди STORAGEC є меншим за значення операнда В блоку ENTER), тоді виникає помилка “Запит елементів пам'яті перевищує її загальну ємність”. Наприклад:

Nak2 STORAGE 10

. . .

ENTER Nak2,15

ADVANCE 80,5

LEAVE Nak2,15

. . .

Оскільки транзакт з входом в блок ENTER намагається зайняти більше каналів (15), ніж визначено (10) командою STORAGE, то відбудеться зупинка програми. Tе ж саме відбудеться з виходом із блоку LEAVE. Транзакт намагається звільнити каналів більше (15), ніж визначено командою STORAGE.

Якщо операнд В у блоках ENTER і LEAVE не використовується, тоді транзактом займається й звільняється одна одиниця ємності БКП. Наприклад:

Buf1 EQU 1

Buf2 EQU 2

Buf3 EQU 3

Buf1 STORAGE 20

Buf2 STORAGE 15

Buf3 STORAGE 18

. . .

ENTER *1

ADVANCE MX$TudFg(P2,P3)

LEAVE *1

. . .

Тут визначені три БКП з іменами Bufl, Buf2, Buf3 та ємностями 20, 15 і 18 відповідно. Командою EQU іменам поставлені у відповідність номера 1, 2 і 3. Передбачається, що на вході транзакта в блок ENTER у його першому параметрі міститься який-небудь один із трьох номерів. Відповідно до цього номера й займається, а потім звільняється одна одиниця ємності БКП. Це приклад використання непрямої адресації БКП, де номер БКП визначається параметром транзакта.