Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛабыИМ.doc
Скачиваний:
68
Добавлен:
10.05.2015
Размер:
1.64 Mб
Скачать

3. Моделирование одноканальных устройств

Устройства используются при моделировании систем для имитации работы оборудования единичной емкости, например, процессор, кана­л передачи данных, человек, компьютер. Устройство в любой момент времени может обрабатывать только одно сообщение (транзакт). Если в процесс обслуживания появляется новый транзакт, то он должен:

- либо подождать своей очереди;

- либо направиться в другое место;

- либо прервать обслуживание текущего сообщения.

Для использования одноканального устройства транзакту необходимо выполнить следующие шаги.

  1. ждать очереди, если необходимо;

  2. когда подходит очередь занять устройство;

  3. устройство находится в состоянии занятости, пока не закончится обслуживание, для обслуживания необходим некоторый интервал времени;

  4. когда обслуживание закончится, освободить устройство.

Второй и четвертый шаги реализуются блоками SEIZEиRELEASE.

Блок SEIZE имеет следующий формат :

SEIZE A

Свободный блок SEIZE позволяет вошедшему в него сообщению занять указанное устройство. Блок SEIZE задерживает сообщение, если устройство занято или находится в состоянии недоступнос­ти.

В поле А задается номер (имя) занимаемого устройства.

Сообщение, занявшее уст­ройство, затем пытается перейти к следующему по номеру блоку. Уст­ройство остается занятым до тех пор, пока занимающее его сообщение не войдет в соответствующий блок RELEASE. Прежде чем освободить устройство, сообщение может пройти через неограниченное число блоков.

Блок RELEASE имеет следующий формат:

RELEASE A

Блок RELEASE предназначен для освобождения устройства тем со­общением, которым В поле А задается номер (имя) освобождаемого уст­ройства.

Транзакты обслуживаются устройствами в течение некоторого промежутка времени. Для моделирования такого обслуживания, т.е. для задержки транзактов на определенный отрезок модельного времени (реализация шага 3), служит блок ADVANCE (задержать), имеющий следующий формат:

ADVANCE A,B

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

Например, транзакты, поступающие в модель из блока GENERATE через случайные интервалы времени, имеющие равномерное распределение на отрезке [60;140], попадают в блок SEIZE и занимают устройство с номером 1. Далее в блоке ADVANCE определяется случайное время задержки транзакта, имеющее равномерное распределение на отрезке [30;130], и транзакт переводится в список будущих событий. По истечении времени задержки транзакт возвращается в список текущих событий и входит в блок RELEASE и освобождает устройство 1. Заметим, что в списке будущих событий, а значит и в блоке ADVANCE может одновременно находиться произвольное количество транзактов.

GENERATE 100,40

SEIZE 1

ADVANCE 80,50

RELEASE 1

В рассмотренных выше примерах случайные интервалы времени подчинялись равномерному закону распределения вероятностей. Для получения случайных величин с другими распределениями в GPSS используются вычислительные объекты: переменные и функции.

3. Задания для самостоятельной работы:

- Приведите фрагмент программы, который моделирует обработку детали на станке. Название устройства – MACHINE, время обработки – 10 ед. модельного времени.

- Напишите сегмент программы, который описывает процесс шлифования изделия. Шлифование занимает 3-5 минут, в каждый момент времени может обрабатываться только одно изделие. Единица модельного времени – 1 секунда.

4. Очереди. Блоки QUEUE и DEPART

В GPSS объекты типа "очередь" вводятся для сбора статисти­ческих данных.

Статистика об очередях собирается в моменты входа транзакта в блок QUEUE (вход в очередь) или в блок DEPART (выход из очереди).

Формат записи блока QUEUE:

QUEUE A,[B]

Блок QUEUE увеличивает длину очереди.

В поле А задается номер или имя очереди, к длине которой до­бавляются единицы. Операнд может быть именем, положительным целым, СЧА.

Поле В определяет число единиц, на которое увеличивается те­кущая длина очереди. Если поле В пусто, то прибавляется единица.

Когда сообщение входит в блок QUEUE, то ищется очередь с име­нем, определенным операндом А. Если необходимо, очередь создается.

Поскольку к очереди добавляются единицы, а не сами сообщения, не составляется список членов очереди. Сообщения в этот же момент условного времени пытаются перейти к следующему блоку.

Поскольку очередь обычно используется для измерения времени ожидания, за блоком QUEUE обычно следуют такой блок как SEIZE, который может задержать сообщение.

Одно и то же сообщение может одновременно увеличить длину нескольких очередей, т.е. сообщение может войти в несколько блоков QUEUE перед тем, как войти в соответствующие блоки DEPART.

Значение текущей длины очереди хранится в СЧА Q$<имя очереди>.

Блок DEPARTимеет следующий формат:

DEPART A,[B]

Блок DEPART служит для уменьшения длины очереди.

В поле А задается номер или имя очереди, длину которой нужно уменьшить. В поле В задается число единиц, на которое уменьшается длина очереди. Это число не должно превышать текущую длину очереди. Если поле В пусто, длина очереди уменьшается на единицу.

4. Задания для самостоятельной работы:

- Увеличьте (уменьшите) на три единицы длину очереди с номером 3;

- Обнулите длину очереди QPR.

5. Моделирование многоканальных устройств

Задача.Изменим условие задачи о работе вычислительного центра. Пусть в вычислительной системе два компьютера (интенсивность обработки заданий одинаковая), все остальные условия остаются без изменений.

В среде GPSSпрограмма, моделирующая работу вычислительной системы, выглядит следующим образом:

NAK STORAGE 2

GENERATE 360,300

QUEUE BR

ENTER NAK

DEPART BR

ADVANCE 600,540

LEAVE NAK

TERMINATE 1

START 100

Обратите внимание, в программе появилась дополнительная строка NAKSTORAGE2.

И блоки SEIZERELEASEзаменены соответственно на блокиENTERLEAVE, моделирующие работу с многоканальным устройством.

В результате выполнения программы моделирования работы вычислительной системы с двумя компьютерами GPSS выдаст отчет с информацией об использовании МКУ:

STORAGE – имя МКУ

CAP. – емкость МКУ, заданную операторомSTORAGE

REM. – количество единиц свободной емкости в конце периода моделирования

MIN. – минимальное количество емкости за используемый период

MAX. - максимальное количество емкости за используемый период

ENTRIES– количество входов в МКУ за период моделирования

AVL. – состояние готовности МКУ в конце периода моделирования (1 – МКУ готов, 0 – нет)

AVE.C. – среднее значение занятой емкости за период моделирования

UTIL. – средний коэффициент использования всех устройств МКУ

RETRY– количество транзактов, ожидающих специальных условий, зависящих от состояния МКУ

DELAY– определяет количество транзактов, ожидающих занятия или освобождения устройства МКУ

Задание. Сравните отчеты по результатам моделирования работы вычислительной системы с одним компьютером и с двумя. Какие показатели изменились и как? Какой вариант организации работы вычислительной системы более предпочтителен?

Рассмотрим подробнее работу блоков, используемых в программе.

Устройство в GPSSиспользуют для моделирования одиночного устройства обслуживания. Два или более обслуживающих устройств, работающих параллельно, могут моделироваться двумя или более одинаковыми устройствами. Это необходимо, когда устройства являются разнородными.

Если параллельно работающие устройства являются одинаковыми, то для их моделирования может использоваться объект многоканальное устройство (МКУ).

Количество устройств, которое моделирует МКУ задает пользователь с помощью оператора STORAGE

Формат оператора:

Метка STORAGE А

Метка – имя МКУ

А – емкость МКУ (количество однотипных устройств, входящих в МКУ)

Блок ENTERимеет следующий формат записи:

ENTER A,[B]

Блок ENTER позволяет вошедшему сообщению (транзакту) использовать много­канальное устройство. Сообщение может быть задержано на входе в блок, если многоканальное устройство заполнено или имеющейся емкос­ти недостаточно или устройство в данный момент недоступно.

В поле А указывается номер или имя многоканального устройст­ва, куда входит сообщение.

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

Активное сообщение не может войти в блок ENTER, если запрос на многоканальное устройство не может быть удовлетворен.

Активное сообщение не может войти в блок ENTER, если многока­нальное устройство находится в недоступном состоянии.

Когда сообщение входит в блок ENTER, то операнд А использует­ся для нахождения многоканального устройства с указанным именем. Если такое многоканальное устройство не существует, то возникает ошибка выполнения. В противном случае используется операнд В для оценки емкости многоканального устройства.

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

Блок LEAVEимеет следующий формат:

LEAVE A,[B]

Блок LEAVE освобождает определенное число единиц многоканаль­ного устройства. Занятый объем многоканального устройства уменьшается на число освобождаемых единиц. Оставшаяся емкость многоканального устройства увеличивается на ту же величину. Счетчик числа входов не изменяет­ся.

Поле А блока LEAVE определяет номер или имя многокального ус­тройства.

Поле В - число освобождаемых единиц многоканального устройст­ва. Если это поле пусто, предполагается 1. Число осво­бождаемых единиц не должно превышать текущее содержимое многоканального устройства.

Задания для самостоятельной работы:

Морские суда прибывают в порт каждые 15-25 часов. В порту имеется 10 причалов. Каждый корабль по длине занимает 3 причала и находится в порту 7-13 часов. Промоделируйте работу порта на протяжении 500 часов. Напишите сегмент GPSS программы. Оцените эффективность работы порта.

5. Работа с блоками передачи управления

Блок TRANSFER имеет следующий формат:

TRANSFER [<A>],[<B>],[<C>],[<D>]

Блок TRANSFER является основным средством, позволяющим направить сообщение к любому блоку модели.

Поле А задает режим выбора следующего блока, к которому должно перейти сообщение.

Существуют следующие режимы работы блока TRANSFER:

- безусловный (пробел);

- статистический (.);

- BOTH;

- ALL;

- PICK;

- функция (FN);

- параметр (Р);

- подпрограмма (SBR);

- SIM.

Кроме того, операнд А может быть дробным числом, именем, положительным целым числом, СЧА или СЧА*<параметр>.

Поля В и С задают возможные значения номеров следующих блоков или их положение. Использование значений описано при рассмотрении определенных режимов выбора. Операнды могут быть именем, положительным целым числом, СЧА или СЧА*<параметр>. Если поле В пусто, ассемблер записывает в нем номер блока, следующего за блоком

TRANSFER.

Безусловный режим выбора

Если операнд А пропущен, то блок TRANSFER работает в безусловном режиме. Входящее в блок TRANSFER сообщение переходит к блоку, указанному в поле В. Если сообщение в этот блок войти не может, попытка направить сообщение к какому-либо другому блоку не производится.

Например,

XFER TRANSFER ,NEXT

NEXT SEIZE 1

Сообщения, входящие в блок TRANSFER XFER, переходят к блоку NEXT.

TRANSFER , V$TER

Сообщения, которые входят в вышеприведенный блок TRANSFER, сразу переходят в блок, номер которого определяется переменной TЕR.

Статистический режим выбора

Когда операнд А не является зарезервированным словом, блок TRANSFER работает в статистическом режиме выбора.

Значение аргумента, записанного после точки (.) в поле А, рассматривается как трехзначное число, показывающее (в частях от тысячи), какой процент входящих в блок сообщений следует направить к блоку, указанному в поле С. Остальные сообщения направляются к блоку, указанному в поле В, или к следующему по номеру блоку, если

операнд В пропущен. Для каждого сообщения выбирается один из двух возможных вариантов; после того как выбор сделан, второй вариант для этого сообщения не рассматривается.

Числовое значение может быть задано при помощи любого стандартного числового атрибута. Если вычисленное значение аргумента меньше или равно нулю, будет происходить безусловная передача сообщений к блоку, указанному в поле В. Если же значение аргумента больше или равно 1000, то будет происходить безусловная передача сообщений к блоку, указанному в поле С.

Например,

BCD TRANSFER .709, BLK1, BLK2

Из общего числа сообщений, входящих в блок BCD, в среднем

.709 будут пытаться войти в блок BLK2. Остальные .209 будут пытать-

ся войти в блок BLK1.

BCD TRANSFER .P1, BLK3, BLK4

Трехзначное число, записанное в параметре 1 сообщений, входящих в блок BCD, интерпретируется как вероятность (в частях от тысячи) того, что сообщение попытается войти в блок BLK4. В остальных случаях сообщение попытается войти в блок BLK3.

CDE TRANSFER .X1, BLK5, BLK6

Если в момент входа сообщений в блок CDE в ячейке SAVEVALUE 1 записано число 30, то в среднем 3 % от общего числа сообщений будет направлено к блоку BLK6, а остальные 97 % попытаются войти в блок BLK5.

Режим BOTH

Если в поле А стоит зарезервированное слово ВOTH, блок TRANSFER работает в режиме BOTH.

В этом режиме каждое входящее сообщение сначала пытается перейти к блоку, указанному в поле В. Если это сделать не удается, сообщение пытается перейти к блоку, указанному в поле С. Если сообщение не сможет перейти ни к тому, ни к другому блоку, оно остается в блоке TRANSFER и будет повторять в том порядке попытки перехода при каждом просмотре списка текущих событий, до тех пор, пока не сможет выйти из блока TRANSFER. Ниже приведен фрагмент программы, в котором сообщение сначала пытается перейти к блоку TRY1. Если оно не может войти в этот блок, оно пытается войти в блок TRY2. Если сообщение не может войти и в этот блок, оно остается в списке текущих событий и повторяет эти попытки при каждом просмотре списка до тех пор, пока не выйдет из блока TRANSFER.

TRANSFER BOTH, TRY1, TRY2

TRY1 SEIZE 1

TRY2 SEIZE 2

Режим ALL

Если в поле А стоит зарезервированное слово ALL, блок TRANSFER работает в режиме ALL.

В этом режиме каждое входящее сообщение прежде всего пытается перейти к блоку, указанному в поле В. Если сообщение в этот блок войти не может, то последовательно проверяются все блоки в определенном ряду в поисках первого, способного принять это сообщение, включая блок, указанный операндом С. Номер каждого проверяемого блока вычисляется как сумма номера предыдущего блока и шага, заданного операндом D:

N + M, N + 2M, N + 3M, ... L,

где N - номер блока, указанного в поле В;

М - значение шага, заданного в поле D;

L - номер блока, указанного в поле С.

Этот номер должен быть больше номера блока, указанного в поле В, на величину, кратную шагу М. Если операнд D не задан, то проверяется каждый блок, номер которого принадлежит этому ряду, включая блок, определенный операндом С . Блоки, номера которых выше номера блока, указанного в поле С, не проверяются. Как только первый блок,

способный принять сообщение, будет найден, сообщение входит в этот блок и оттуда продолжает свое дальнейшее движение. Если сообщение не может перейти ни к одному из указанных блоков, оно остается в блоке TRANSFER и повторяет описанную выше процедуру при каждом просмотре списка текущих событий до тех пор, пока не выйдет из блока.

Поскольку обычно в полях В и С записываются символические метки блоков, блоки следует располагать таким образом, чтобы при присвоении номеров разность между номерами блоков, указанных в полях В и С, была кратна шагу, указанному в поле D. Например,

TRANSFER ALL, 60, 120, 10

В этом примере сообщение будет последовательно пытаться перейти к блокам 60, 70, 80, ... 120.

TRANSFER ALL, NEXT1, NEXT2, 5

Здесь режим ALL допустим только в том случае, если разность

между номерами, присвоенными блокам NEXT1 и NEXT2, кратна 5.

TRANSFER ALL, 60, 120, 25

В данном примере режим ALL недопустим, потому что разность между номерами блоков, записанных в полях В и С, не является кратной шагу, указанному в поле D.

Условными являются только режимы BOTH и ALL. Во всех остальных режимах выбор следующего блока производится в момент входа сообщения в блок. В режимах BOTH и АLL выбор следующего блока производится в момент снятия блокирующего условия. Следует отметить, что каждый раз, когда интерпретатор при просмотре списка текущих событий обнаруживает сообщение, задержанное в блоках TRANSFER BOTH или

TRANSFER ALL, он пытается продвинуть сообщение, начиная с блока, указанного в поле В. Следовательно, в режиме BOTH в тех случаях, когда возможен переход к обоим блокам (В и С), блок В имеет некоторое преимущество. Аналогично, в режиме ALL в случае, когда возможен переход к нескольким блокам, блоки с меньшими номерами имеют некоторое преимущество перед блоками с большими номерами.

Режим PICK

Если в поле А стоит зарезервированное слово PICK, блок TRANSFER работает в режиме PICK. В этом режиме из последовательности блоков с номерами N, N+1, N+2,...M (N - номер блока, указанного поле В, а М - номер блока, указанного в поле С) случайным образом выбирается один блок, к которому должно быть направлено сообщение.

Все блоки, включая указанные в полях В и С, выбираются с одинаковой вероятностью, равной 1/(М-N)+1. Сообщение пытается перейти только к выбранному для него блоку. Если сообщение не может сразу перейти к следующему блоку, то оно будет ждать в блоке TRANSFER до тех пор, пока не будет снято блокирующее условие. Номер блока в поле С должен быть больше или равен N+1. Например,

TRANSFER PICK,30,39

Сообщение, вошедшее в блок TRANSFER, пытается войти в один из 10 блоков (30,31,...39) с равной вероятностью: 1/10.

Задания для самостоятельной работы.

Выполните следующие задания в среде GPSS с использованием оператора TRANSFER.

1. На станцию технического обслуживания, которая состоит из бокса для ремонта и бокса для техосмотра, каждые 15-35 минут поступают автомобили. Из них 73% требуют ремонта, который продолжается 35-55 минут, а 27% проходят техосмотр (9-25 минут). Промоделируйте 40 часов работы станции технического обслуживания.

2. Вычислительная система состоит из 3-х компьютеров. С интервалом 3-5 мин в систему поступают задания. Если первый компьютер свободен, то задание поступает на обработку к первому компьютеру (5-7 мин), иначе ко второму (7-11 мин). В случае занятости второго компьютера проверяется, свободен ли третий. Если свободен, то задание обрабатывается с интервалом 8-12 мин. Промоделируйте обработку 100 заданий.

3. Измените условие предыдущей задачи: обработка заданий может осуществляться тремя компьютерами равновероятно.

Помимо блока TRANSFER, потоком сообщений может управлять блок TEST.

Блок TEST имеет следующий формат:

TEST <X> <A>,<B>,[<C>]

Определяет номер следующего блока для вошедшего в него сообщения в зависимости от того, выполняется требуемое условие или нет. Блок управляет потоком сообщений, проверяя выполнение алгебраических отношений между значениями СЧА, заданных в полях А и В.

Операнды А и В - сравниваемые величины, которые могут быть именем, любым целым числом, СЧА или СЧА*<параметр>.

Во вспомогательном поле операции оператора описания блока TEST - <X> - записывается один из шести условных операторов:

- 'L' - меньше. Отношение истинное, если значение аргумента поля А меньше значения аргумента поля В;

- 'LE' - меньше или равно

- 'E' - равно.

- 'NE' - не равно.

- 'G' - больше.

- 'GE' - больше или равно.

Если отношение СЧА, заданных в полях А и В, истинно, сообщение переходит к следующему блоку. Если отношение ложно, сообщение переходит к блоку, номер которого задан полем С.

C - номер блока для входящего сообщения, если отношение величин, заданных в полях А и В, ложно. Операнд C может быть именем, положительным целым числом, СЧА или СЧА*<параметр>.

Пример.

TEST G M1,500,SSS

SEIZE 1

SSS SEIZE 2

Если значение времени пребывания транзакта в модели больше 500, то переходим к следующему по номеру блоку, ложно к метке SSS.

Задание. Выполните следующие задания в среде GPSS с использованием оператора TEST. В программу добавьте условие: если длина очереди BR больше двух, то заявка выводится из системы без обработки.

GENERATE 360,300

QUEUE BR

SEIZE B

DEPART BR

ADVANCE 600,540

RELEASE B

TERMINATE 1

START 100

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]