Смекни!
smekni.com

Моделирование на языке GPSS (стр. 2 из 3)

имя ADVANCE A,B

Операнды в полях A и B имеют тот же смысл, что и в соответствующих полях блока GENERATE. Следует отметить, что транзакты, входящие в блок ADVANCE, переводятся из списка текущих событий в список будущих событий, а по истечении вычисленного времени задержки возвращаются назад, в список текущих событий, и их продвижение по блок-схеме продолжается. Если вычисленное время задержки равно 0, то транзакт в тот же момент модельного времени переходит в следующий блок, оставаясь в списке текущих событий.

Только блоки GENERATE и ADVANCE позволяют поместить транзакты в список будущих событий. С помощью этих блоков моделируется продолжительность какого-либо события или промежуток времени между наступлениями каких-либо событий.

4.5 Блок TERMINATE

Блок TERMINATE (завершить) служит для удаления транзактов из модели, и имеет следующий формат:

имя TERMINATE A

Значение поля A указывает, на сколько единиц уменьшается содержимое так называемого счетчика завершений при входе транзакта в данный блок TERMINATE. Если поле A не определено, то оно считается равным 0, и транзакты, проходящие через та кой блок, не уменьшают содержимого счетчика завершений.

Начальное значение счетчика завершений устанавливается управляющим оператором START (начать), предназначенным для запуска прогона модели. Поле A этого оператора содержит начальное значение счетчика завершений. Прогон модели заканчивается, когда содержимое счетчика завершений обращается в 0. Таким образом, в модели должен быть хотя бы один блок TERMINATE с непустым полем A, иначе процесс моделирования никогда не завершится.

4.6 Блок FUNAVAIL

Блоком FUNAVAIL (символом F обозначает ОКУ, UNAVAIL - недоступный) моделируется недоступность ОКУ. При использовании этого блока статистика ОКУ не искажается. Форма блока:

FUNAVAIL A, B, C, D, E, F, G, H

Блок делает недоступным ОКУ с именем или номером, указываемым операндом A.

Все транзакты, обрабатываемые блоком FUNAVAIL, разделяются на три класса, которые и определяют назначение операндов:

- транзакт, занимающий ОКУ (по SEIZE или PREEMPT) в момент перевода его в недоступное состояние (операнды B, C, D);

- ранее прерванные транзакты, находящиеся в списке прерываний (операнды E, F);

- транзакты, находящиеся в списке отложенных прерываний и в списке задержки ОКУ (операнды G, Н). Операндом В задаются режимы обработки транзакта, занимающего ОКУ в момент перевода его в недоступное состояние:

- СО - режим продолжения: продолжить обработку занимающего ОКУ транзакта во время недоступности;

- RE - режим удаления: удалить и направить занимающий ОКУ транзакт к блоку, метка которого должна быть указана операндом С;

- по умолчанию - прервать обработку и поместить в список прерываний ОКУ, после восстановления доступности этот транзакт может занять ОКУ и «дообслужиться».

Операнд С - метка блока, в который будет направлен в режиме удаления транзакт, занимавший ОКУ в момент перевода его в недоступное состояние.

Операнд D - номер или имя параметра транзакта, занимавшего ОКУ в момент перевода его в недоступное состояние; если он будет удален (режим RE), т. е. исключен из СБС, в этот параметр будет записано время, оставшееся удаленному транзакту до конца обслуживания.

Операндом Е задаются режимы обработки транзактов, находящихся к моменту перевода ОКУ в недоступное состояние в списке прерываний, т. е. тех транзактов, обслуживание которых на данном ОКУ было ранее прервано:

- СО - режим продолжения: продолжить работу ОКУ во время недоступности - обслуживать транзакты из списка прерываний;

- RE - режим удаления: удалить и направить транзакты из списка прерываний к новому блоку, метка которого должна быть указана операндом F;

- по умолчанию - оставить ранее прерванные транзакты в списке прерываний ОКУ и запретить им занимать его во время недоступности.

Операнд F указывает метку блока, к которому будут направлены транзакты из списка прерываний ОКУ, вследствие чего они не могут находиться в СБС, поэтому для них нет возможности занесения в их параметры времени, оставшегося до конца обслуживания.

Операнд F может использоваться и тогда, когда отсутствует операнд Е (по умолчанию). В этом случае для перемещенных к новому блоку транзактов прерывание обслуживания сохраняется.

Операндом G задаются режимы обработки транзактов, находящихся к моменту перевода ОКУ в недоступное состояние в списке отложенных прерываний, т. е. ожидающих выполнения с прерыванием, и в списке задержки:

- СО - режим продолжения: продолжить работу ОКУ во время недоступности - обслуживать транзакты из списка отложенных прерываний и списка задержки;

- RE - режим удаления: удалить и направить транзакты из списка отложенных прерываний и списка задержки к новому блоку, метка которого долж­на быть указана операндом Н

- по умолчанию - оставить транзакты в списке отложенных прерываний и списке задержки ОКУ и запретить им занимать его во время недоступности. Операндом Н указывается метка нового блока, к которому в режиме удаления (RE) направляются транзакты из списка отложенных прерываний и списка задержки. Когда операнд G не используется, нельзя использовать и операнд Н.

4.7 Блок FAVAIL

Блок FAVAIL изменяет состояние ОКУ на доступное, т. е. восстанавливает обычный режим вхождения транзактов в ОКУ. Блок имеет следующий формат:

FAVAIL А

Операнд A - имя или номер ОКУ.

Все транзакты, ожидающие доступного состояния ОКУ, указанного операндом А, активизируются и могут попытаться занять его.


5. Назначение блоков программы


Строка
Комментарий
1 Генератор данных, которые поступают каждые 10 ± 2 с
2 Проверка доступности основной ЭВМ, если доступна, то переход в следующий блок, если не доступна, то переход в блок с меткой А2
3 Занятие основной ЭВМ
4 Имитация обработки данных в основной ЭВМ за 3 с
5 Освобождение основной ЭВМ
6 Вывод транзакта из модели
7 Имитация включения резервной ЭВМ за 5 с
8 Занятие резервной ЭВМ
9 Имитация обработки данных в резервной ЭВМ за 3 с
10 Освобождение резервной ЭВМ
11 Вывод транзакта из модели
12 Генератор сбоя основной ЭВМ
13 Выход из строя основной ЭВМ
14 Имитация восстановления основной ЭВМ за 100 с
15 Возвращение основной ЭВМ в строй
16 Удаление транзакта имитирующего сбой основной ЭВМ
17 - 18 Генерация времени моделирования

6. Стандартный отчет GPSS/PC

GPSS/PC Report file REPKURS.GPS. (V 2, # 38123) 12-08-2006 00:11:22 page 1

START_TIME END_TIME BLOCKS FACILITIES STORAGES FREE_MEMORY

0 3600 18 2 0 312960

LINE LOC BLOCK_TYPE ENTRY_COUNT CURRENT_COUNT RETRY

1 1 GENERATE 363 0 0

2 2 GATE 363 0 0

3 A1 3 SEIZE 249 0 0

4 4 ADVANCE 249 0 0

5 5 RELEASE 249 0 0

6 6 TERMINATE 249 0 0

7 A2 7 ADVANCE 114 1 0

8 8 SEIZE 113 0 0

9 9 ADVANCE 113 0 0

10 10 RELEASE 113 0 0

11 11 TERMINATE 113 0 0

12 12 GENERATE 12 0 0

13 13 FUNAVAIL 12 0 0

14 14 ADVANCE 12 1 0

15 15 FAVAIL 11 0 0

16 16 TERMINATE 11 0 0

17 17 GENERATE 1 0 0

18 18 TERMINATE 1 0 0

FACILITY ENTRIES UTIL. AVE._TIME AVAILABLE OWNER PEND INTER RETRY DELAY

MAIN 249 0.300 3.00 0 0 0 0 0 0

REZ 113 0.094 3.00 1 0 0 0 0 0

XACT_GROUP GROUP_SIZE RETRY

POSITION 0 0

7. Элементы стандартного отчета

Строка заголовка стандартного отчета содержит имя файла модели, который создал отчет. Также в нее включена дата и время прогона модели.

7.1 Общая информация о результатах работы модели

START_TIME - начальное время. Абсолютное модельное время в момент начала моделирования. Устанавливается равным абсолютному модельному времени с помощью оператора REST или CLEAR;

END_TIME - конечное время. Абсолютное модельное время, когда счетчик завершения принимает значение 0.

BLOCKS - количество блоков, использованных в текущей модели, к моменту завершения моделирования;

FACILITIES - количество устройств, использованных в модели, к моменту завершения моделирования;

STORAGES - количество многоканальных устройств, использованных в текущей модели к моменту завершения моделирования;

FREE_MEMORY - объем памяти, остававшейся свободной при прогоне модели.

7.2 Информация о блоках

LINE - номер строки исходной программы для каждого блока;

LOC - имя или номер данного блока в модели;

BLOCK_TYPE - тип блока GPSS;

ENTRY_COUNT - количество транзактов, вошедших в данный блок, с начала работы программы или после последнего выполнения оператора RESET или CLEAR;

CURRENT_COUNT - количество транзактов, находящихся в данном блоке к моменту завершения моделирования;

RETRY - количество транзактов, ожидающих специального условия, зависящего от состояния данного блока.

7.3 Информация об объектах типа “устройство”

FACILITY - имя или номер устройства;

ENTRIES - количество раз, когда устройство было занято или занято с прерыванием с начала моделирования или после последнего выполнения оператора RESET или CLEAR;

UTIL. - коэффициент использования, доля времени моделирования, в течение которого устройство было занято;

AVE._TIME - среднее время занятия устройства одним транзактом в течение времени моделирования с начала моделирования или после выполнения оператора RESET или CLEAR;

AVAILABLE - состояние устройства в конце моделирования (равно 1, если устройство доступно и 0 - если недоступно);

OWNER - номер транзакта, который занимает устройство (0 - устройство не занято);

PEND - количество транзатов, ожидающих выполнение с прерыванием других транзактов (т. е. вошедших в блоки PREEMPT в режиме прерывания);

INTER - количество транзактов, прерванных на данный момент (количество транзактов в списке прерываний);

RETRY - количество транзактов, ожидающих выполнения специального условия, зависящего от состояния данного устройства;