Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Алгоритмы и программные средства имитационного моделирования систем. Учебное пособие
.pdf
71
Операторы QUEUE и DEPART никак не влияют на продвижение
транзактов (не задерживают), поскольку очередь относится к категории статистических объектов. В данной версии GPSS максимальный
уровень вложенности очередей равен трем. Это означает, что возможно одновременное пребывание транзакта не более чем в трех очередях.
5.3.1. Основные СЧА для приборов и очередей
В процессе моделирования для каждого обслуживающего прибора доступны следующие основные СЧА:
F<объект> – текущее состояние прибора. 0 – свободен, 1 – за-
нят;
FC<объект> – счетчик числа входов в прибор;
FT<объект> – среднее время задержки транзакта в приборе;
FR<объект> – коэффициент загрузки прибора.
Например: F1- текущее состояние прибора с номером 1;
FR$SYS - коэффициент загрузки прибора с именем SYS.
Для очередей доступны следующие СЧА:
Q<объект> – текущая длина очереди;
QM<объект> – текущая максимальная длина очереди;
QA<объект> – средняя длина очереди;
QC<объект> – счетчик входов в очередь;
QZ<объект> – счетчик «нулевых» входов, где под нулевым вхо-
дом понимают вход транзакта в очередь с нулевым ожиданием в ней;
QT<объект> – среднее время ожидания в очереди;
QX<объект> – среднее время ожидания в очереди без учета ну-
левых входов.
5.3.2. Режимы работы обслуживающих приборов
Рассмотренная пара блоков SEIZE и RELEASE описывает про-
стейший режим работы прибора, при котором поступающие на вход
транзакты должны вставать в очередь на обслуживание. На практике
часто встречаются ситуации, когда некоторая заявка должна прервать
текущую работу прибора и поступить на обслуживание без очереди
(например, обработка сигнала прерывания в процессоре).
Для реализации такого режима работы прибора в языке GPSS име-
ется два специальных блока:
PREEMPT – захватить прибор;
RETURN – возвратить прибор.
В данной версии языка блок PREEMPT имеет два режима работы:
– режим прерывания;
– режим приоритета.

72
В режиме прерывания формат этого блока имеет следующий вид:
Блок PREEMPT моделирует захват прибора A некоторым транзактом, который прерывает процесс обслуживания текущего транзакта.
Транзакт, поступивший в блок PREEMPT, получает доступ к прибору,
если этот прибор не был перед этим прерван другим транзактом. В
последнем случае транзакт, претендующий на вход в блок PREEMPT,
ставится в очередь на прерывание. Прерванный транзакт переводится
интерпретатором в цепь прерываний этого прибора.
Блок RETURN моделирует возврат прибора после его захвата. Если прибор был занят до прерывания, то прерванный транзакт из цепи
прерываний возвращается на дообслуживание.
Во втором режиме прервать обслуживание транзакта в приборе
может только транзакт с более высоким приоритетом. В этом режиме
оператор PREEMPT имеет следующий формат:
Операнд B = PR устанавливает режим приоритета. Операнды C, D и E
определяют действия с прерванным транзактом. Если они отсутствуют, то работа блока производится аналогично первому режиму, только
с учетом приоритета. С помощью операндов C, D и E можно реализовать следующие действия:
– прерванный транзакт будет дообслуживаться или удаляется из
системы;
– сохранить время дообслуживания в один из параметров тран-
закта;
– прерванный транзакт направить на некоторый блок модели, а не
в цепь прерываний обслуживающего прибора.
Если B не задан, то C, D и E игнорируются.
[<метка>] PREEMPT A;
[<метка>] RETURN A.
[<метка>] PREEMPT A,B,C,D,E;
[<метка>] RETURN A.
5.4. Описание многоканальных устройств (накопителей)
Для работы с многоканальными устройствами в языке GPSS име-
ются два исполняемых оператора ENTER и LEAVE, а также оператор
описания STORAGE, с помощью которого задается емкость накопителя
(количество каналов).
Оператор STORAGE должен размещаться, как и все операторы
описания, до первого блока GENERATE (обычно в начале программы).
Формат блока:

73
1
2
256
.
.
.
PROC
BUF
<имя> STORAGE A.
Здесь в поле метки указывается имя устройства (числовое или символьное), A – емкость накопителя (количество каналов). Оператор
STORAGE является необязательным. При его отсутствии емкость накопителя составит 215.
Пара блоков ENTER и LEAVE моделируют вход и выход транзакта,
при которых осуществляется занятие или освобождение определенного числа каналов. Формат этих блоков:
[<метка>] ENTER A,B;
[<метка>] LEAVE A,B.
Здесь A – имя накопителя, B – число единиц емкости, которое занимает
при входе или освобождает при выходе очередной транзакт. Операнд
B по умолчанию равен 1.
Перед входом транзакта в блок ENTER выполняется проверка наличия достаточного свободного объема накопителя. Если свободного
объема не хватает, то транзакт не может войти в блок ENTER и ожидает в предыдущем блоке модели. При этом следующий транзакт может
войти в накопитель раньше, если число свободных единиц емкости для
нее достаточно.
Пример 5.3. Составим на языке GPSS описание модели процес-
сора PROC, использующего буферную память BUF емкостью 256
кбайт (КБ). Данные на обработку поступают с интервалом =10±2 мс,
объем данных – 4 кбайт (КБ) каждый пакет, время записи в буфер
1 = 2 = … =
= 3 мс, время обработки в процессоре 0 = 12±3 мс.
256
Промоделировать работу в течение 30 с.
Построим модель такого процессора в виде сети СМО (рис. 5.4).
Рис. 5.4

74
Выберем единицу модельного времени как 1 е.м.в. = 1 мс. Тогда
30 с = 30000 е.м.в., а описание модели будет иметь вид:
BUF STORAGE 256
GENERATE 10,2
ENTER BUF,4 ; поступление в память
* с занятием 4 КБ
ADVANCE 3 ; время записи в память
SEIZE PROC ; проверка доступности
* процессора
LEAVE BUF ; считывание из памяти
ADVANCE 12,3 ; обработка в процессоре
RELEASE PROC
TERMINATE
* Сегмент таймера
GENERATE 30000
TERMINATE 1
START 1
Для МКУ (накопителей) доступны следующие СЧА:
S<объект> - текущее содержимое накопителя;
R<объект> - текущая свободная емкость;
SM<объект> - максимальное содержимое;
SA<объект> - среднее содержимое;
SC<объект> - счетчик входов;
ST<объект> - среднее время нахождения транзакта в накопи-
теле.
5.5. Изменение маршрутов движения транзактов в модели
Интерпретатор системы GPSS работает таким образом, что всегда
пытается переместить транзакт к следующему по номеру блоку модели
до тех пор, пока это возможно. Чтобы изменить направление движения
транзакта, т.е. задать номер следующего блока, к которому должен
перейти транзакт, используются следующие операторы GPSS:
TRANSFER – переслать транзакт;
GATE – пропустить транзакт;
TEST – сравнить (проверить) транзакт;
LOOP – оператор цикла.

75
Оператор TRANSFER. Позволяет направить транзакт к одному из
блоков модели в соответствии с заданным режимом работы. Блок
TRANSFER имеет несколько режимов работы и следующий формат:
[<метка>] TRANSFER A,B,C,D.
Здесь A – условное обозначение режима работы;
B и C – метки (или номера) блоков, на которые возможна передача
транзактов;
D – индекс изменения номеров блоков в одном из режимов.
Рассмотрим некоторые режимы работы этого блока.
Режим безусловной передачи транзакта. Блок в этом режиме име-
ет формат, в котором отсутствует операнд A
Здесь транзакт входит в блок TRANSFER и пересылается к блоку, заданному операндом B.
Статистический режим. В этом режиме осуществляется случай-
ный выбор следующего блока с заданной вероятностью. Формат оператора имеет следующий вид:
Здесь операнд А имеет вид .XXX, где Х – десятичная цифра, и задает
вероятность, с которой транзакт пересылается на блок С. На блок В
транзакт передается с обратной вероятностью 1-А. Таким образом,
можно задавать вероятность с точностью до трех цифр после запятой.
В первых двух режимах направление движения транзакта никак
не зависит от текущего состояния модели. Выбранный блок не изменяется, даже если он не может принять транзакт. В этом случае транзакт
ожидает разрешения на вход в блоке TRANSFER. Учет текущего состояния модели возможен, например, в следующих двух режимах.
Режим «оба блока» условной передачи в один из двух блоков.
Формат оператора в этом режиме имеет следующий вид:
В этом режиме осуществляется условная передача транзакта в
один из блоков, заданных операндами B и C. Сначала транзакт пытается войти в блок B. Если блок занят, то пытается пройти в блок C. Если
этот блок также занят, то транзакт остается в блоке TRANSFER и постоянно повторяет попытки входа, пока один из блоков не примет его.
Режим «все блоки» условной передачи в один из нескольких
блоков. В этом режиме формат оператора следующий:
TRANSFER ,B.
TRANSFER А,B,C.
TRANSFER BOTH,B,C.

76
TRANSFER ALL,B,C,D.
Здесь B и C – первый и последний номера блоков; D – шаг изменения
номеров блоков. По умолчанию D = 1. В этом случае транзакт поочередно пытается войти в блоки B, B+D, B+2D, …, C.
Блок GATE. Управляет потоком транзактов на основе анализа те-
кущего состояния объектов аппаратной категории. Формат оператора:
[<метка>] GATE X A,B,
где X – анализируемое логическое условие;
A – имя аппаратного объекта;
B – указатель перехода (метка или номер блока).
При входе транзакта в этот блок проверяется заданное условие.
Если это логическое условие истинно, то транзакт проходит через блок
GATE к следующему блоку модели. Если условие ложно, то транзакт
пересылается к блоку, заданному операндом B. Операнд B не обязательный, и при его отсутствии транзакт ожидает на входе блока GATE,
если условие ложно.
Для приборов определены следующие логические условия:
U – прибор занят;
NU – прибор не занят;
I – прибор прерван;
NI – прибор не прерван.
Для накопителей (МКУ) определены следующие логические ус-
ловия:
SE – накопитель пустой;
SNE – накопитель не пустой;
SF – накопитель заполнен;
SNF – накопитель не заполнен.
Например:
GATE NU SYS,MET1
GATE SF BUF.
В последнем случае транзакт не войдет в блок до тех пор, пока буфер
не станет заполненным.
Блок TEST. Управляет потоком транзактов в зависимости от результатов сравнения двух СЧА, что позволяет расширить возможности
блока GATE. Формат этого блока:

77
[<метка>] TEST X A,B,C,
где X – оператор отношения;
A и B – сравниваемые константы;
C – указатель перехода.
В качестве оператора отношения X могут использоваться:
E – равно;
NE – не равно;
L – меньше;
LE – меньше или равно;
G – больше;
GE – больше или равно.
Работа TEST подобна блоку GATE. Если проверяемое условие
(A X B) выполняется (истинно), то блок TEST пропускает транзакт к
следующему блоку. Если ложно, то транзакт пересылается к блоку,
метка которого указана в поле C. При отсутствии C, если условие ложно, блок TEST не пропускает транзакт.
Пример 5.4. Описать СМО с ограниченной длиной очереди (рис.
5.3), для которой:
T = 10±2 е.м.в.;
τ = 8±3 е.м.в.;
длина очереди – не больше 6 единиц.
Модель на языке GPSS будет иметь вид:
Пример 5.5. Этот же пример можно выполнить, если очередь ог-
раниченной длины реализовать с помощью объекта типа «Накопитель». Тогда программа будет выглядеть следующим образом:
GENERATE 10,2
TEST L Q$BUF,6,OUT
QUEUE BUF
SEIZE SYS
DEPART BUF
ADVANCE 8,3
RELEASE SYS
OUT TERMINATE 1
START 100.
BUF STORAGE 6
GENERATE 10,2
GATE SNF BUF,OUT
ENTER BUF
SEIZE SYS

78
T
LEAVE BUF
ADVANCE 8,3
RELEASE SYS
OUT TERMINATE 1
START 100.
Пример 5.6. Описать модель одноканальной СМО с отказами
(рис.5.5), параметры которой:
T = 10 ± 2 е.м.в.;
= 8 ± 3 е.м.в.
Рис. 5.5
Потеря заявки (отказ) будет происходить, если поступающий
транзакт оказывается перед занятым прибором. В этом случае он
уничтожается без входа в прибор. Описание модели на языке GPSS
будет иметь вид:
GENERATE 10,2
GATE NU SYS,OUT
SEIZE SYS
ADVANCE 8,3
RELEASE SYS
OUT TERMINATE 1
START 100.
Оператор LOOP . Предназначен для организации циклического
движения транзактов по модели. Формат оператора:
[<метка>] LOOP A,B.
Здесь A - номер параметра транзакта, в котором задается число повторений цикла;
B – указатель блока, определяющего начало цикла.
При каждом входе транзакта в блок LOOP осуществляется
уменьшение на единицу значения параметра транзакта, заданного операндом А. Если результат больше нуля, то транзакт пересылается в
блок В, т.е. на начало цикла. Если результат равен 0, то транзакт переходит к блоку, следующему за блоком LOOP. Если результат меньше
нуля, то фиксируется ошибка и моделирование завершается.

79
5.6. Изменение приоритета и параметров транзактов
Транзакты могут иметь приоритет, задаваемый целым числом из
диапазона от 0 до 127. Для транзактов, которые входят в модель через
блоки GENERATE, приоритет устанавливается операндом Е. По
умолчанию приоритет равен нулю. Для изменения приоритета в процессе моделирования используется блок PRIORITY, который имеет
следующий формат:
[<метка>] PRIORITY A.
Здесь операнд А – это значение приоритета, которое получает транзакт, проходящий через данный блок.
Например:
PRIORITY 1;
PRIORITY P2.
В последнем случае приоритет будет равен значению второго параметра транзакта.
Для начальной установки и изменения значений параметров наиболее универсальным является блок ASSIGN, формат которого
[<метка>] ASSIGN A,B,C.
Здесь операнд А – это номер модифицируемого параметра с указателем режима работы блока, B и C задают значения этого параметра. На
месте операнда C может использоваться только имя некоторой функции. В этом случае значение параметра определяется как B*C.
Возможны три режима работы данного блока.
1. Режим замещения. В этом режиме при прохождении транзак-
том данного блока указанный параметр получает значение, заданное
операндами B и C, если C не указано, то значение, определяемое операндом B.
Например:
ASSIGN 1,5; в первый параметр записывается значение 5,
ASSIGN 2,Q3; во второй параметр – текущая длина очереди 3.
2. Режим приращения. Здесь значение указанного параметра
увеличивается на число, задаваемое операндами B и C. Режим приращения задается знаком + после операнда A.
Примеры:
ASSIGN 1+,5;
ASSIGN 2+,Q3.

80
3. Режим уменьшения. В этом случае происходит вычитание
данного числа из текущего значения параметра.
Примеры:
Имеется также ряд специализированных блоков, из которых наи-
более часто используется MARK (отметить).
Блок MARK предназначен для сохранения временных отметок в
параметрах транзактов:
Здесь А – номер параметра, в котором сохраняется текущее значение абсолютного модельного времени. Функционально данный блок
эквивалентен оператору
Пример 5.7. Задания на обработку поступают в компьютерную
систему с интервалом 10±2 единиц времени. Задания обрабатываются
в 2 этапа. На первом этапе выполняется трансляция исходных программных модулей с получением машинных программ. На втором этапе машинные программы запускаются на выполнение. Исходные программные модули занимают в памяти в среднем 2 единицы объема
(страницы). Время трансляции составляет 6±2 единицы времени. Полученные машинные программы занимают в памяти 4 страницы, а
время исполнения составляет 3±2 единицы. Обработка программ в
системе организована таким образом, что процесс трансляции имеет
более низкий приоритет, чем процесс исполнения программ.
Представим модель такой системы как одноканальную СМО с
неограниченной очередью, через которую каждый транзакт проходит
два раза. Система состоит из памяти (очереди MEM) и процессора (обрабатывающего устройства PROC), что показано на рис. 5.6. Для определения характеристик задания будем использовать два параметра:
P1 – для хранения объема занимаемой памяти (2 страницы на
первом этапе и 4 страницы на втором);
P2 – для хранения среднего времени обработки процессора (6
единиц времени на первом этапе и 3 на втором).
ASSIGN 1-,5;
ASSIGN 2-,Q3.
[<метка>] MARK A.
ASSIGN A,AC1.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
