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

5.3. Блоки апаратної категорії зайняття та звільнення одноканальних пристроїв

Під час обслуговування транзакти переміщаються в моделі від блоку до блоку. Якщо у будь-який момент транзакт займає ОКП, то для цього він входить (або намагається ввійти) у відповідний блок, який описує ОКП. Цей блок характеризується властивостями:

  • якщо ОКП вже використовується, транзакт не може ввійти в блок і повинен чекати в черзі;

  • якщо ОКП вільний, транзакт може ввійти в блок, а стан ОКП змінюється на “зайнято”.

Ці властивості має блок SEIZE (Зайняти). Вхід транзакта в блок SEIZE моделює займання ОКП.

Після обслуговування вхід того ж транзакта в інший блок моделює звільнення ОКП. Це здійснюється за допомогою блоку RELEASE (Звільнити). Блок RELEASE змінює стан раніше зайнятого ОКП з “зайнято” на “незайнято”. Формати блоків:

SEIZE A

RELEASE A

Операнд А – це назва зайнятого або звільненого ОКП. Може бути назвою, додатним цілим числом, виразом у дужках, СЧА, СЧА*параметр. Наявність блоку SEIZE забезпечує виникнення транзактів і ОКП, коли цього вимагає логіка моделі. Транзакти перебувають у моделі тимчасово, а ОКП в моделі існують постійно протягом усього процесу моделювання.

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

Блок RELEASE звільняє пристрій, який був раніше зайнятий транзак­том, що знаходився у SEIZE. Під час використання блоку RELEASE не виникає затримування, оскільки пристрій звільнюється у момент входження транзакту в блок RELEASE лише цим транзактом, який зайняв пристрій. Якщо перед SEIZE затримується декілька транзактів, то їх обслуговування здійснюється за правилом „перший прийшов – перший обслужився”.

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

SEIZE Kan

RELEASE Kan

Якщо ОКП з назвою Kan не зайнятий, активний транзакт займає його. Якщо ОКП зайнятий, транзакт потрапляє в список затримування даного ОКП після транзактів з таким же пріоритетом і не входить у блок SEIZE. Транзакту також відмовляється у вході в блок SEIZE, якщо ОКП з назвою Kan перебуває в недоступному стані. Тільки після завершення часу обслуговування транзакт потрапляє в блок RELEASE для звільнення ОКП.

Для затримування транзакту протягом деякого інтервалу часу моделювання використовується блок ADVANCE (Затримувати). Блок визначає число одиниць часу моделювання, на яке транзакт буде затриманий. Найчастіше цей інтервал задається випадковою змінною. Формат запису блоку ADVANCE наступний:

ADVANCE А,[В]

Тут А – середній час затримування або його ймовірнісний розподіл, а В – спосіб модифікації операнда А. Кожний з операндів А і В може бути назвою, числом, виразом у дужках, СЧА або СЧА*параметр.

Модифікатори можуть бути двох типів: модифікатор-інтервал і модифікатор-функція. Блок ADVANCE обчислює час затримування (приріст часу моделювання) такими ж способами, як блок GENERATE.

Модифікатор-інтервал використовується, коли час затримування вибирається як випадкове число, рівномірно розподілене в інтервалі (АВ, А+В). Для розіграшу може бути обраний будь-який генератор рівномірно розподілених випадкових чисел. Номер генератора на сторінці Random Numbers (Випадкові числа) у журналі настроювань моделі потрібно вказати в полі введення ADVANCE. За замовчуванням використовується генератор випадкових чисел номер 1. Наприклад:

ADVANCE 68.5,22.5

У даному прикладі вхідний транзакт затримується на час, рівномірно розподілений в інтервалі від 46 до 91.

Для задавання часу затримування за іншим законом, відмінним від рівномірного, в операнді В записується модифікатор-функція. Для звертання до функції визначається деяке число – значення функції. Це значення множиться на значення операнда А. Результат використовується як час затримування. Наприклад:

ADVANCE Frejm,FN$Krok

У прикладі обчислюється значення функції з назвою Krok і множиться на значення змінної користувача Frejm якій попередньо повинне бути присвоєне числове значення командою EQU.

Якщо задано тільки операнд А, він обчислюється й використовується як час затримування. Наприклад:

ADVANCE (Normal(35,X$Znach,X$VidZn))

Час затримування заданий процедурою мови PLUS і розподілений за нормальним законом. Середнє значення і середньоквадратичне відхилення, попередньо записані командою INITIAL у комірках збереження, з назвами Znach і VidZn відповідно. Для генератора нормального розподілу джерелом випадкових чисел, рівномірно розподілених в інтервалі [0,1], є генератор номер 35 (RN35).

ADVANCE (Exponential(33,20,50))

У цьому прикладі час затримування є випадковою величиною, розподіленою за експоненціальним законом (із вбудованої бібліотеки процедур мови PLUS) із середнім значенням 50; номер вбудованого генератора рівномірно розподілених випадкових чисел дорівнює 33, а зміщення – 20, тобто випадкова величина приймає значення, починаючи з 20.

Як зазначалося раніше, у блоці GENERATE можна використовувати функції й арифметичні змінні, попередньо визначені командами FUNCTION, VARIABLE або FVARIABLE. Але в цих командах не повинно бути посилань на параметри транзактів, тому що транзактів ще немає. В операндах блоку ADVANCE посилання на параметри транзактів можливі. Але тоді цим параметрам повинні бути попередньо присвоєні відповідні значення. Наприклад:

ADVANCE P2

ADVANCE (Exponental(15,0,MX$Droh(P5,P$Tpoh)))

У першому прикладі транзакт затримується на час, що дорівнює значенню параметра 2 транзакта. У другому прикладі час затримування визначається за експоненціальним законом. Середнє значення вибирається з елемента матриці, номери рядка й стовпця якого перебувають в параметрі 5 і параметрі з назвою Tpoh відповідно. Для генератора експоненційного розподілу джерелом рівномірно розподілених випадкових чисел в інтервалі (0,1) є генератор номер 15 (RN15). Схема діаграми використання блоків SEIZE, ADVANCE і RELEASE наведено на рис. 5.1.

Рис. 5.1. Використання блоків SEIZE, ADVANCE і RELEASE в моделі

Транзакт, увійшовши в блок SEIZE, займе ОКП з назвою KANAL. Завдяки блоку ADVANCE він на 20±3 одиниць часу затримається в ОКП, а потім залишить його. Після того, як транзакт увійде в блок RELEASE, здійснюється спроба входження транзакту у наступний блок моделі. Наступний транзакт спробує використати ОКП, що називається KANAL.

Блок ADVANCE можна розташовувати в будь-яких місцях моделі, а не тільки між блоками SEIZE і RELEASE.