Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Алгоритмы и программные средства имитационного моделирования систем. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
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.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]