1. Змістовний опис блоків ASSIGN,LOOP,PREEMPT,RETURN.
2. Змістовний опис оператору EQU.
2. Текст програми моделювання.
5.4 Контрольні питання
1. Як змоделювати цикл у мові GPSS?
2. Як працюють блоки ASSIGNтаLOOP?
3. Як використовуються блоки переривання PREEMPTтаRETURN?
4. Назвіть основні функції оператора EQU.
5. Чи можливо перервати цикл?
Лабораторна робота № 6
Блоки ENTER, LEAVE, GАТЕ, TEST. Оператори STORAGE
Мета роботи –вивчити необхідні блоки для моделювання накопичувачів, навчитись моделювати черги за накопичувачами.
Теоретичні відомості
Для моделювання Q-схем з обмеженою чергою або з обмеженою ємністю накопичувача в GPSSW використовують блоки ENTER, LEAVE та оператор STORAGE. Ці блоки і оператор утворюють групу пам'ятей або групу опису накопичувачів. Пам'яті або накопичувачі відносяться до апаратної категорії, які мають візуалізацію у вигляді спеціальних вікон (в робочому рядку слід набрати комбінацію клавіш Alt + S).
Формат запису оператора STORAGE:
<№> <ім'я> STORAGE <A>
Тут <ім'я> – ім'я накопичувача, що використовується для посилань на нього; <A> – ємність (кількість каналів обслуговування) накопичувача, що задаються константою.
Для заняття та звільнення каналів обслуговування накопичувача використовується пара блоків ENTER (увійти) і LEAVE (покинути).
Формат запису блоку ENTER:
<№> ENTER <А>
У полі <А> вказується номер або ім'я накопичувача. Коли транзакт входить до блоку ENTER, то операнд поля <А> використовується для знаходження накопичувача за вказаним ім'ям. Якщо такого накопичувача не існує, то відбувається помилка виконання програми.
Формат запису блоку LEAVE:
<№> LEAVE <А>, [<В>]
Блок LEAVE звільняє певне число одиниць накопичувача під ім'ям, заданим в полі <А>. Поле <А> також визначає номер або ім'я накопичувача. Поле <В> визначає число одиниць накопичувача, що звільняються, якщо це поле порожнє, передбачається 1. Число одиниць, що звільняються, не повинне перевищувати поточний вміст накопичувача. Зазвичай поле <В> не використовується.
Блок GАТЕ перевіряє стан пристроїв, пам'ятей, логічних ключів. Блок TEST порівнює два стандартні числові атрибути по обчислюваному відношенню. Обидва блоки управляють потоком повідомлень (транзактів).
Формат запису блоку GATE:
<№> GATE <Х> <А>, <B>
Поле <А> містить ім'я або номер об'єкту, для якого проводиться перевірка допоміжної операції поля <Х>. Поле <В> містить номер або ім'я наступного блоку для вхідного транзакту, коли логічний оператор поля <Х> має значення «false».
Приклад 6.1. Потік заявок надходить у накопичувач Q-схеми з допустимою ємністю, що дорівнює 3 одиниці, рівномірно кожні 5 ± 1 хв. Якщо заявки після накопичувача застають 1-й обслуговуючий канал (пристрій) зайнятим, то вони надходять на обробку в 2-й канал. Час обробки 1-го каналу дорівнює 9 ± 1 хв, 2-го – 13 ± 1 хв. Змоделювати обробку Q-схемою 100 заявок.
Рішення. Програма вирішення представлена на рис. 6.1.
Рисунок 6.1 – Програма вирішення прикладу 6.1 в системі моделювання GPSSW
У даному прикладі заявки, що надходять у Q-схему спочатку буферуються в накопичувачі з ємністью в 3 одиниці, а потім намагаються потрапити на обробку в 1-й канал обслуговування. Якщо 1-й канал виявляється зайнятим, тобто в ньому здійснюється обслуговування, то чергова заявка надходить на обслуговування в 2-й канал.
У програмі вирішення використовуються наступні формати запису оператора STORAGE, блоку GАТЕ.
Формат запису оператора STORAGE:
NAK3 STORAGE 3
Опис оператора знаходиться поза основним тілом програми, без нумерації. Мітка NАКЗ призначена для звернення або посилання на оператор. Операнд поля <А> визначає об'єм накопичувача (це 3). Операнд поля <А> має бути позитивним цілим. Коли транзакт намагається увійти до блоку ENTER, то запит на ємність накопичувача порівнюється з доступною ємністю. Якщо запит може бути виконаний, то транзакт входить до блоку ENTER, і поточна ємність накопичувача зменшується. Якщо запит транзакта не може бути виконаний, то транзакт входить до списку затримки багатоканального пристрою.
Формат запису блоку GATEв програмі:
20 GATE <Х> <А>, <B>
Поле <А> містить ім'я накопичувача з міткою NАКЗ, для якого проводиться перевірка допоміжної операції в полі <Х>. Поле <В> містить номер або ім'я наступного блоку для вхідного транзакту, коли логічний оператор поля <Х> має значення «неправда». У полі <Х> програми заданий логічний оператор SNF, пов'язаний з накопичувачем і означає, що накопичувач, заданий у полі <А>, заповнений. Поки накопичувач не буде заповнений, тобто логічний оператор SNFбуде давати «неправда», транзакт буде відправлений до блоку, заданому в полі <В> (в блок з міткою FACIL2).
На противагу умові SNF в полі <Х> може бути заданий логічний оператор SF, який означає, що накопичувач не заповнений.
Вихідна статистика по пристроях і блокам поміняється місцями, якщо застосувати оператор SF. Аналіз роботи системи розпочнеться з 2-го каналу (пристрою) і якщо він виявиться зайнятим обслуговуванням поточного транзакту, то черговий транзакт буде відправлений на обробку в 1-й канал.
Приклад 6.2. Потік заявок надходить у накопичувач з допустимою ємністю, що дорівнює 3 одиниці, за рівномірним законом розподілу протягом 5 ± 1 хв. Якщо заявки після накопичувача застають 1-й канал (пристрій) зайнятим, то вони надходять на обробку в 2-й канал. Час обробки 1-го каналу дорівнює 13 ± 1 хв, 2-го – 9 ± 1 хв. Змоделювати обробку Q-схемою 100 заявок.
Рішення. Програма вирішення прикладу 6.2 представлена на рис. 6.2. Для повної ідентичності результатів моделювання в програмі для 2-го каналу час обслуговування прийнятий таким, який він був в 1-му каналі в програмі для прикладу 6.2.
Рисунок 6.2 – Програма вирішення прикладу 6.2 в системі моделювання GPSSW
Розглянемо приклад використання блоку GATE з логічним оператором, пов'язаним із пристроями.
Приклад 6.3. Вхідний потік заявок надходить в Q-схему з двома обслуговуючими каналами (пристроями) рівномірно протягом 5 ± 1 хв. Якщо 1-й канал зайнятий, то заявки надходять на обробку в 2-й канал. Час обробки 1-го каналу дорівнює 9 ± 1 хв, 2-гo – 13 ± 1 хв. Змоделювати процес обробки Q-схемою 100 заявок.
Рішення. Подібна ситуація характерна для систем, коли кожна заявка, яка входить до Q-схеми в першу чергу відправляється в більш швидкодіючий канал обслуговування. Програма для вирішення прикладу 6.3 наведена на рис. 6.3.
Рисунок 6.3 – Програма вирішення прикладу 6.3 в системі моделювання GPSSW
Розглянемо для цієї програми формат запису блоку GATE з логічним оператором, пов'язаним з пристроєм:
GATE NU 1, FACIL2
Логічний оператор NUвказує на те, що пристрій, заданий у полі <А> (це пристрій під номером 1), вільний. Якщо логічна умова не виконується, то транзакт відправляється до блоку, ім'я якого задано в полі <В > (по мітці FACIL2). Транзакти, які обслуговуються у 1-му пристрої, за допомогою блоку TRANSFER відправляються на вихід системи (знищуються блоком TERMINATE). Транзакти з 2-го пристрою також потрапляють до блоку TERMINATE. Загальне число обслужених транзактів повинно бути 100.
Лабораторне завдання
Створити систему з двома накопичувачами. Вимоги які генеруються системою поступають на перший накопичувач доки він вільний, у разі заповнення першого вони поступають у другий накопичувач.