Основные команды интерпретатора GPSS/PC
@<имя файла>- загрузить исходный текст модели
SAVE <имя файла>- сохранить текст модели
DISPLAY[<строка N 1>],[< строка N 2>] - вывести на экран текст модели, начиная со строки N1 , до строки N 2.
DELETE [<строка N 1>],[<строка N 2>] - удалить из программы текст, начиная со строки N1 , до строки N 2.
EDIT <номер строки> - отредактировать строку текста
CLEAR- сбросить всю статистику модели в ноль (включая таймеры абсолютного и относительного модельного времени), возвратить все транзакты в пассивный буфер .
END- завершить работу интерпретатора.
Практическая часть
2.1. Постановка задачи:
На решение в процессор поступает поток программ. Интервалы времени в потоке распределены по экспоненциальному закону со средним временем, распределенным равномерно от 20 до 40единиц времени. Время решения программ распределено по равномерному закону в диапазоне от 15 до 55 единиц времени. При поступлении на процессор время обработки программы неизвестно (оно становится известно только после окончания ее обработки). Представить модель обработки программ, когда в первую очередь обрабатываются программы с меньшим временем решения.
Определить:
1. Написать модель на языке GPSS/PC-2.
2. Доказать, что заявленный в задании алгоритм обработки программ действует правильно (на примере обработки пакета программ).
3. С помощью модели определить основные характеристики времени реакции.
Алгоритм работы программы
ДаНет
Текст программы на GPSS
10 XPDIS FUNCTION RN1,C20 ;Рандомно выбирается задержка между
генерациями программ
0.0,20/0.1,21/.2,22/.3,23/.4,24/.5,25
0.6,26/.7,27/.75,28/.8,29/.84,30/.88,31
0.9,32/.92,33/.94,34/.95,35/.96,36/.97,37
0.98,38/.99,39/.995,40
12 LONG FUNCTION RN1,D40 ;Рандомно выбирается время решения программ
.025,15/.05,16/.075,17/.1,18/.125,19/.15,20/.175,21/.2,22/.225,23/.25,24.275,25/.3,26/.325,27/.35,28/.375,29/.4,30/.425,31/.45,32/.475,33/.5,34.525,35/.55,36/.575,37/.6,38/.625,39/.65,40/.675,41/.7,42/.725,43/.75,44.775,45/.8,46/.825,47/.85,48/.875,49/.9,50/.925,51/.95,52/.975,53/1,54
16 GENERATE 1,FN$XPDIS ; Генерация программ по экспоненциальному
закону из интервала (20,40)
18 ASSIGN time,FN$LONG ; Задать текущей программе время решения.
20 que QUEUE spisok ; Входящий транзакт увеличивает очередь на
единицу
**************************
** устройство обработки **
**************************
28 met SEIZE ustr ; Выполнение программы началось
30 TEST L p$time,5,adv ; Если параметр time меньше 5, то иди ниже,
иначе иди в adv
34 ADVANCE p$time ; Задержка
38 ASSIGN time-,p$time ; Параметр time уменьшить на p$time
40 TRANSFER ,rel ; Перейти программе в rel
44 adv ADVANCE 5 ; Задержка
48 ASSIGN time-,5 ; Параметр time уменьшить на 5
50 rel RELEASE ustr ; Выполнение программы закончилось
************************
54 DEPART spisok ; Уменьшить длину очереди на единицу
56 TEST E p$time,0,que ; Если time равно 0, то иди ниже, иначе
иди по метке que
66 term TERMINATE 1 ; Завершили программу.
Выходные данные
GPSS World Simulation Report - test6.45.1
Tuesday, December 18, 2012 13:43:48
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 277.881 14 1 0
NAME VALUE
ADV 9.000
LONG 10001.000
MET 4.000
QUE 3.000
REL 11.000
SPISOK 10003.000
TERM 14.000
TIME 10002.000
USTR 10004.000
XPDIS 10000.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 11 0 0
2 ASSIGN 11 0 0
QUE 3 QUEUE 59 5 0
MET 4 SEIZE 54 1 0
5 TEST 53 0 0
6 ADVANCE 4 0 0
7 ASSIGN 4 0 0
8 TRANSFER 4 0 0
ADV 9 ADVANCE 49 0 0
10 ASSIGN 49 0 0
REL 11 RELEASE 53 0 0
12 DEPART 53 0 0
13 TEST 53 0 0
TERM 14 TERMINATE 5 0 0
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
USTR 54 0.925 4.759 1 6 0 0 0 5
QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
SPISOK 7 6 59 0 3.405 16.039 16.039 0
CEC XN PRI M1 ASSEM CURRENT NEXT PARAMETER VALUE
6 0 134.738 6 4 5
TIME 2.000
FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE
12 0 288.229 12 0 1
Тестовый прогон программы.
Рассмотрим пример.
Для простоты рассмотрения процесса предположим, что программы вошли в очередь на обработку без временных задержек между ними, т.е. одновременно.
Итак, на вход в процессор поступает поток программ. В примере данный поток состоит из 6 задач. Каждая задача получает свое время решения.
| |||||||
| |||||||
|
Так как в условии задания сказано, что процессор не знает сколько времени решается каждая задача, а решить нужно сначала программы с минимальным временем решения, был разработан алгоритм, позволяющий это реализовать. Пусть процессор решает какое-то фиксированное время решения, а программы, которые не выполнились, отправляются обратно в очередь. Таким образом, через n-ое количество итераций программы с меньшим временем решения будут выполнены первыми. Так как время решения равномерно распределено между 15 и 55, то время решения процессором было выбрано равным 5. Как только время решения программы становится равным 0, она считается решенной и выпускается.
Ниже таблица, показывающая по этапный проход очереди программ.
Номер итерации | Очередь программ (Начало очереди с левого конца.) | Какая программа завершена (Исходное время программы) |
38, 15, 45, 30, 28, 55 | ||
33, 10, 40, 25, 23, 50 | ||
28, 5, 35, 20, 18, 45 | ||
23, 30, 15, 13, 40 | ||
18, 25, 10, 8, 35 | ||
13, 20, 5, 3, 30 | 30, 28 | |
8, 15, 25 | ||
3, 10, 20 | ||
5, 15 | ||