Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Имя_переменной VARIABLE формула





В формуле могут использоваться операции сложить +, вычесть -, умножить *, разделить /, разделить по модулю @, найти отношение =, >, <, >=, <=.

Примеры.

11 FVARIABLE XH$1*FN$EXP/XH$2+1

15 VARI XH$6-XH$8

V1 VARIABLE XH$1*(P$1-1)

V2 VARI P$2+FN$NORM

V3 FVAR S$MON*XF$5/10;

V4 FVAR V$V2+3.5; переменная V4 вычисляется как сумма значения переменной V2 и числа 3.5.

5 FVAR FN$EXP*3.14

Примечание.

В приведенных выше примерах имена переменных V1,V2,V3,V4 должны быть объявлены. Переменные в первой, второй и в последней строке не объявляются и задаются номерами 11,15, 5.

 

РАЗДЕЛ III. СРЕДСТВА ЯЗЫКА, ИМИТИРУЮЩИЕ СТАТИЧЕСКИЕ И ДИНАМИЧЕСКИЕ СВОЙСТВА ТРАНЗАКТОВ ПРИ МОДЕЛИРОВАНИИ ДИСКРЕТНЫХ ПРОЦЕССОВ

 

Основной структурной единицей языка моделирования в GPSS является блок. Рассмотренные в предыдущей главе 2 блоки имитируют работу объектов – устройств, памяти, очереди, логических ключей и т.д. Для имитационного моделирования дискретных систем необходимо также иметь средства отображения свойств динамических объектов - транзактов, средства имитации параллельных независимых и взаимосвязанных процессов, их синхронизации. Ниже описываются группы таких блоков.

 

3.1. БЛОКИ, ВЛИЯЮЩИЕ НА ЗНАЧЕНИЯ ПАРАМЕТРОВ ТРАНЗАКТОВ

PRIORITY А [,BUFFER] устанавливает транзакту, входящему в данный блок, значение приоритета A (целое без знака в диапазоне от 0 до 127). Если операнд BUFFER отсутствует, то продолжается обработка текущего транзакта, иначе текущей транзакт помещается в список текущих событий и возобновляется просмотр списка для выбора текущего транзакта с учетом нового значения приоретета.

Примеры.

1. PRIORITY 4

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

2. PRIORITY XF$4, BUFFER

Назначить транзакту приоритет, равный значению, хранящемуся в полнословной ячейке 4, поместить транзакт в список текущих событий и возобновить его просмотр.

ASSIGN A,B присваивает в текущем транзакте параметру, номер которого указан в поле А, значение, указанное в поле В; если номер поля сопровождается знаком + или -, то данный блок модифицирует (увеличивает или уменьшает) значение параметра на В.

Примеры.

1. ASSIGN 2,8; P(2):= 8

2. ASSIGN 4+,V$5; P(4):= P(4) + V$5,

INDEX A,B если поле А равно 1, то блок модифицирует значение первого параметра транзакта, вошедшего в данный блок, на величину, задаваемую полем В, если же в поле А записано некоторое другое число, то это число воспринимается как номер параметра транзакта и блок присваивает первому параметру транзакта сумму значения поля В и значения параметра, указанного полем А.

Примеры.

1. INDEX 1,2; P(1):= P(1) + 2

2. INDEX 2, FN$5; где - FN$5 - значение функции номеp 5, выбираемое из таблицы (см. ФУНКЦИИ И ПЕРЕМЕННЫЕ, рис.1).

INCREMENT A,B у величивает значение параметра, номер которого указан в поле А, на величину, указанную в поле В.

DECREMENT A,B у меньшает значение параметра, номер которого указан в поле А, на величину, указанную в поле В.

Примеры.

INCREMENT 5,7; P(5):= P(5) + 7

DECREMENT 5,7; P(5):= P(5) - 7

INCREMENT P$5,FN$7; P(P(5)):= P(P(5)) + FN$7 - здесь в поле А косвенное задание номера параметра транзакта: номер модифицируемого параметра определяется как содержимое пятого параметра транзакта, поступившего в данный блок.

DECREMENT P$5,FN$7; P(P(5)):= P(P(5)) - FN$7

INCREMENT XH$5,V$7; Р(ХН$5):= P(XH$5) + V$7

MARK A записывает текущее значение абсолютного модельного времени в указанный в поле А параметр транзакта; если же параметр не указан, то заменяет значение отметки времени (время создания транзакта) на текущее значение таймера.

USING A,B,C,D,E осуществляет доступ текущего транзакта к параметрам другого транзакта, номер которого указан в поле A. Параметр, номер которого определяется полем B (может иметь суффиксы PB, PF, PH), копируется в ячейку или в параметр, заданный в поле C. Если транзакт, заданный в поле A, не активен, то поле E не определено и требуемый транзакт не является активным, происходит ошибка.

LOCATE A,B,C,D определяет и записывает в параметр текущего транзакта номер блока, в который должен войти транзакт, определенный номером в поле A. Этот номер блока записывается в параметре или в ячейке, которые указаны в полях В и С. В поле В записывается СЧА ячейки или параметра (X, XB, XH, P, PF, PH), а в поле C - номер ячейки или параметра, указанного в поле В. Если требуемый транзакт не активен, то текущий транзакт переходит в альтернативный блок, указанный в поле D. Если поле D не задано и транзакт неактивный, то возникает ошибка.

Пример:

LOCATE XH$TRANS, P, 3, INACT

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

 

3.2. БЛОКИ, ОПРЕДЕЛЯЮЩИЕ НАПРАВЛЕНИЕ ПЕРЕМЕЩЕНИЯ

ТРАНЗАКТОВ ПО МОДЕЛИ

 

TRANSFER A,B,С,D пересылает транзакт в требуемую точку модели, где A - режим передачи, B,C - следующие блоки, D - значение индекса, используемое в режиме ALL.

Возможны такие режимы работы блока, задаваемые полем А:

1. ПРОБЕЛ - транзакт передается в блок, задаваемый полем В (безусловный переход);

2. ЧИСЛО, начинающееся точкой, означающее вероятность перехода в блок С, а дополнение числа до 1 означает вероятность перехода в блок В;

3. ALL - транзакт последовательно пытается перейти в блоки, определяемые значениями B, B+D, B+2D, …, C;

4. BOTH - транзакт последовательно пытается войти сначала в блок В, а затем в блок С до тех пор, пока один из них не станет доступным;

5. FN - поле В является номером функции, и следующий блок определяется суммой значения этой функции и поля С;

6. P - поле В является номером параметра транзакта и следующий блок определяется суммой значения этого параметра и поля С;

7. PICK - следующий блок выбирается с равной вероятностью из блоков с номерами B, B+1,…,C;

8. SBR - режим перехода к программе - номер текущего блока перемещается в параметр, указанный в поле С, а транзакт передается в блок, номер которого указан в поле В.

Примеры.

1. TERANSFER,NEXT; безусловная передача транзакта на блок с меткой NEXT

2. TRANSFER.355, FC1, UST1; передача транзактов с вероятностью 0,645 в блок FC1 и с вероятностью 0.355 в блок UST1.

 

TEST_r A, B проверяет выполнение определенного условия, задаваемого отношением r между стандартными числовыми атрибутами A и В, т.е. отношением (A r B):

1) если это условие выполняется, то транзакт входит в данный блок TEST и будет пытаться передвигаться в следующий блок;

2) если условие не выполняется, то:

- если указан блок С, то транзакт передается в этот блок С,

- если же С не задан, то транзакт блокируется, т.е. задерживается в предыдущем блоке до снятия условия блокировки.

Отношение r может принимать следующие значения:

E - равно;

NE - не равно;

L - меньше чем;

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

G - больше чем;

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

Примеры.

1. TEST_E P$1,2,MET1; если значение первого параметра транзакта равно 2, то транзакт войдет в блок TEST и продолжит движение в следующий блок, иначе транзакт перейдет в блок с меткой MET1.

2. TEST_L FN$4,P$2; если значение функции 4 меньше значения параметра 2 данного транзакта, то транзакт входит в блок TEST, иначе задержится перед этим блоком (заблокируется движение данного транзакта).

 

GATE_R A,B проверяет значение внутреннего операнда R, являющегося стандартным логическим атрибутом и отражающего состояние устройства, памяти или ключа, номер которого задается полем А. При этом СЛА R может принимать значения:

U -устройство занято;

NU - устройство не занято;

I - устройство прервано;

NI - устройство не прервано;

SF - память заполнена;

SNF - память не заполнена;

SE - память пустая;

SNE - память не пустая;

LR - ключ выключен;

LS - ключ включен;

M - транзакт находится в состоянии синхронизации;

NM - транзакт не находится в состоянии синхронизации.

Примеры.

1. GATE_SF 1; если память номер 1 полна, то транзакт входит в блок GATE, иначе ждет ее заполнения.

2. GATE_NU P$2, МТК; если устройство, номер которого указан параметром 2, не занято, то транзакт входит в блок GATE, иначе он входит в блок с меткой МТК.

 

LOOP A,B используется для организации в модели циклов, т.е. с его помощью можно предусмотреть многократное прохождение транзактом заданной цепочки блоков. Здесь А - номер параметра, значение которого определяет число циклов; В - блок, на который переходит транзакт, если значение параметра с номером А не равно 0.

Пример.

LOOP 2, VTN; уменьшает значение параметра 2 на 1 и, если параметр 2 не равен 0, то переходит на блок с меткой VTN, иначе - к следующему блоку модели.

 

3.3. БЛОКИ, ОБЕСПЕЧИВАЮЩИЕ КОПИРОВАНИЕ И СИНХРОНИЗАЦИЮ ПЕРЕМЕЩЕНИЯ ТРАНЗАКТОВ ПО МОДЕЛИ

 

SPLIT A,B,C,D создает А копий текущего транзакта. Копии входят в блок, указанный в поле В, а текущий транзакт продолжает движение в следующий блок. Номера создаваемых копий транзактов записываются в параметры, номера которых указываются в поле С. Нумерация осуществляется таким образом: порядковый номер исходного транзакта после прохождения блока SPLIT увеличивается на 1, порядковый номер первой копии станет на 1 больше номера исходного транзакта, порядковый номер следующей копии станет на 1 больше порядкового номера предыдущей копии транзакта. В поле D указывается число параметров у транзактов-копий. Если поле D не задано, то число и тип параметров у копий такие же, как и у исходного транзакта.

Примеры.

SPLIT 4, THE

Создает 4 копии транзакта, которые посылаются в блок по метке ТНЕ, а текущий транзакт продолжает движение в следующий блок.

SPLIT 3,P$1,2,4

Создает 3 копии транзакта, которые поступают на блоки, указанные в первом параметре, номера транзактов-копий указываются во втором параметре, каждая копия будет иметь 4 параметра.

ASSEMBLE A объединяет транзакты одного семейства, накапливая и задерживая транзакты, являющиеся членами семейства, до тех пор пока их число не станет равным А. Когда последний транзакт войдет в блок, А-1 транзактов будет удалено из модели, кроме первого, который и продолжит движение.

GATHER A накапливает и задерживает транзакты, являющиеся членами семейства, до тех пор пока их число не станет равным А. Когда последний транзакт войдет в блок, все они одновременно (по времени моделирования) выходят из него в том порядке, в котором поступили.

МАТСН А синхронизирует два транзакта одного семейства: первый транзакт, достигнув блока MATCH, задерживается в нем до тех пор, пока другой транзакт данного семейства не достигнет сопряженного блока MATCH, указанного в поле А. Во время задержки устанавливается индикатор синхронизации. Он сбрасывается, когда транзакт того же семейства входит в соответствующий блок MATCH.

Пример.

АА МАТСН ВВ

……

ВВ МАТСН АА

 

ТRACE и UNTRACE - блоки без операндов - осуществляют трассировку, т.е. вызывают фиксацию в файле результатов каждого шага движения транзактов по блокам модели, начиная с блока TRACE и заканчивая блоком UNTRACE.

Их применение полезно при отладке моделей с разветвлениями и с параллельными процессами.

.

РАЗДЕЛ IV. ОСОБЕННОСТИ ПОСТРОЕНИЯ МОДЕЛЕЙ ДИСКРЕТНЫХ

ПРОЦЕССОВ НА ЯЗЫКЕ GPSS

Общая схемапрограммы на языке GPSS состоит из раздела объявлений, раздела операторов (блоков модели) и ряда управляющих операторов (обязательными из которых являются SIMULATE, START, END), располагающихся в следующем порядке:

[REALLOCATE]

Объявление имен

Объявление функций

Объявление переменных

Инициализация ячеек

Задание емкости памяти

SIMULATE

Последовательность блоков модели.

START

END

 

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

 

4.1. ИМЕНА В GPSS-ПРОГРАММЕ

Имена в GPSS-программе могут задаваться как символами (идентификаторами), так и числовыми кодами – номерами. Для установления однозначного соответствия имен и номеров объектов в разделе «объявление имен» каждому имени присваивается номер по форме:

имя EQU номер

где имя содержит не более 6 символов и располагается с первой позиции. Объектам каждого типа принято назначать номера, начиная с первого.

Примеры.

СР1 EQU 1

UST EQU 2

OZU EQU 1

Q1 EQU 1

Q2 EQU 2

Exp1 EQU 1

 

4.2. СЛУЧАЙНЫЕ ВЕЛИЧИНЫ В GPSS

Случайные величины в GPSS используются для задания времени появления транзакта в модели, т.е. для формирования потока заявок, поступающих в модель (блок GENERATE) и для задания времени задержки транзактов в модели (блок ADVANCE).

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

Примечание. Пуассоновское распределение количества заявок за единицу времени (дискретное распределение) эквивалентно экспоненциальному распределению интервалов времени между заявками (непрерывное распределение).

Значения случайной непрерывной величины, распределенной по экспоненциальному закону с интенсивностью 1, в GPSS определяются с помощью функции, задаваемой точками, которые были рассчитаны по формуле y = 1- e x :

Exp1 FUNCTION RN$1,C14; Ехр1 – имя, С14-непрерывная, задаваемая 14 точками

0.,0./.1,.104/.3,.555/.5,.69/.6,.915/.7,1.2/.8,1.6/.85,1.95/.9,2.3/

.950,3./.98,3.9/.99,4.6/.995,5.3/.999,7.

При этом в качестве базового используется равновероятное распределение на интервале (0,1), задаваемое одной из восьми встроенных функций RN$i, i=1,2,…,8.

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

Пример.

GENER 25, FN$Exp1; генерируется поток заявок, имеющий пуассоновское распределение с интенсивностью lambda=1/25 или время появления транзакта равно 25*Exp1

ADVANCE 15,FN$Exp1; задается задержка транзакта 15*Exp1

 

Примечание.

Если в поле В блоков GENERATE и ADVANCE задается не функция, а константа, то время задержки определяется как случайная величина, равномерно распределенная на интервале ( А-В, А+В ).

Примеры.

GENER 25, 15; генерируется поток заявок, появляющихся через интервалы

време ни, имеющие равномерное распределение на интервале (10; 40)

ADVANCE 15,7; задается задержка транзакта, значение которой выбирается из условий равновероятного распределения на интервале (8; 22).

 

4.3. ИМИТАЦИЯ ДИСКРЕТНОГО ПРОЦЕССА В GPSS

 

GPSS-модель представляет собой функционально законченную программу описания некоторого процесса обслуживания потока заявок, начиная от появления заявки в системе, что в модели соответствует генерации транзакта, до удаления заявки из системы, что в модели соответствует удалению транзакта. Таким образом, операторная часть модели, называемая сегментом, начинается блоком GENERATE и заканчивается блоком TERMINATE.

Примечание.

Структура строки GPSS-программы аналогична структуре строки программы на ассемблере:

[метка] имя_блока список_полей [; комментарий после символа “точка с запятой”]

* Строка-комментарий начинается с первой позиции символом “звездочка”’ *

 

Ниже приведен пример GPSS-программы, состоящей из одного сегмента, имитирующей обслуживание заявок в устройстве UST1 с неограниченной очередью Q1 заявок перед устройством.

*

REALL XAC, 150, FAC,1, QUE,1; Оператор управления задает в модели 150 *транзактов, одно устройство и одну очередь.

*объявление имен очереди, устройства и функции:

Q1 EQU 1

UST1 EQU 1

ЕХР EQU 1

*описание функции ЕХР:

*EXP FUNCTION RN$1, C24

0.0, 0.0 /.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915/.7,1.2/.75,1.38/.8,1.6 /.84,1.83/

.88,2.12/.9,2.3/.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9/.99,4.6/.995,5.3/.998,6.2/

.999,7/.9998,8

*

SIMULATE

* Операторная часть состоит из последовательности блоков модели:

GENERATE 5,3; генерируемые транзакты поступают в модель

* в случайные моменты времени, равновероятно распределенные на интервале 2..8

M1 QUEUE Q1; сбор статистики об ожидании транзактов в очереди Q1

* перед устройством UST1; метка должна занимать первую позицию строки

SEIZE UST1; вход транзакта в устройство UST1, если оно свободно

DEPART Q1; выход транзакта из очереди Q1

ADVANCE 4, FN$ EXP; обслуживание транзакта в устройстве в течение

* некоторого случайного времени 4*FN$EXP, имеющего экспоненциальное

* распределение с интенсивностью (1/4)

RELEASE UST1; выход транзакта из устройства

TRANSFER.4, М1, М2; транзакт с вероятностью 0.4 переходит на М2,

* а с вероятностью 0.6 – на метку М1

М2 TERMINATE 1; транзакт уменьшает число завершений на 1 и при нулевом

START 50; значении числа завершений моделирование заканчивается

END

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

Рассмотрим варианты задания длительности моделирования применением специально выделенного сегмента. Предполагается, что время моделирования определяется только этим сегментом, поэтому блоки завершения TERMINATE во всех остальных сегментах модели не должны иметь поля A и, следовательно, при прохождении транзактов через эти блоки счетчик завершения не меняется.

Во всех приведенных ниже примерах задаваемое время моделирования одно и то же и равно 1000 условных единиц времени.

Пример 1.

REALL XAC, 150, FAC,1, QUE,1

Q1 EQU 1

UST1 EQU 1

ЕХР EQU 1

*EXP FUNCTION RN$1, C24

0.0, 0.0 /.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915/.7,1.2/.75,1.38/.8,1.6 /.84,1.83/

.88,2.12/.9,2.3/.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9/.99,4.6/.995,5.3/.998,6.2/

.999,7/.9998,8

*

SIMULATE

*Сегмент 1: имитация процесса обслуживания заявок (повторение предыдущего *примера)

GENERATE 5,3;

M1 QUEUE Q1

SEIZE UST1;

DEPART Q1;

ADVANCE 4, FN$ EXP;

RELEASE UST1;

TRANSFER.4, М1, М2;

М2 TERMINATE

* Сегмент 2: задание времени моделирования

GENERATE 1000

TERMINATE 1

START 1

END

Примечание. В последующих трех примерах текст первого сегмента опущен, так как полностью совпадает с примером 1.

 

Пример 2.

* Сегмент 2: задание времени моделирования

GENERATE 200

TERMINATE 1

START 5

END

 

Пример 3.

* Сегмент 2: задание времени моделирования

GENERATE 100

TERMINATE 2

START 20

END

 

Пример 4.

 

* Сегмент 2: задание времени моделирования

GENERATE 10.

TERMINATE 1

START 100

END

Итак, время моделирования, задаваемое в примерах 1 – 4, одно и то же, равное 1000 условных единиц времени Однако длительность работы моделирующего алгоритма (процессорного времени компьютера) будет для этих вариантов различной: время работы ПЭВМ в последнем случае будет наибольшим, так как через каждые 10 единиц модельного времени возникает новый транзакт (выполняется подпрограмма блока GENERATE). Дапее выполняетсяподпрограмма блока TERMINATE. Эти действия повторяются 100 раз, в то время как в примере 1 сегментом 2 задания времени моделирования создается только один транзакт, поступающий в блок TERMINATE через 1000 единиц модельного времени и останавливает процесс моделирования. Следовательно быстродействие модели в примере 1 будет наивысшим.

 

4.4. МОДЕЛИРОВАНИЕ ПРОЦЕССОВ, СВЯЗАННЫХ ПО УСТРОЙСТВУ ОБСЛУЖИВАНИЯ

Для имитации обслуживания нескольких потоков заявок в одном устройстве в GPSS-программе следует предусмотреть генерацию этих потоков, имеющих в общем случае различные интенсивности и законы появления заявок и поэтому реализуемых различными блоками GENERATE. Дисциплины обслуживания, интенсивности и законы обслуживания в устройстве также могут быть различными. При этом под дисциплиной обслуживания понимается способ назначения транзакта для обслуживания в устройстве. В теории массового обслуживания рассматриваются три типовые дисциплины обслуживания: бесприоритетное обслуживание – в порядке поступления в очередь (FIFO), обслуживание с относительным приоритетом, то есть в соответствии с уровнем приоритета, но без прерывания, обслуживание с абсолютным приоритетом – дисциплина LIFO, то есть с прерыванием обслуживания заявки, не имеющей абсолютного приоритета. Ниже приводятся примеры построения программ моделирования работы устройства, обслуживающего два потока транзактов, с вариацией дисциплин обслуживания.

Пример1.

Программа формирования двух потоков транзактов, образующих очереди Q1, Q2 и имеющих одинаковые приоритеты, с выборкой транзактов из очередей по правилу FIFO для обслуживания одним и тем же устройством U1.В модели принято, что длительность обслуживания транзактов второго потока в среднем в два раза больше длительности обслуживания транзактов первого потока.

*

Q1 equ 1

Q2 equ 2

U1 equ 1

SIMULATE

GЕNERATE 20,15; начало первого сегмента

QUEUE Q1

SEIZE U1; занять устройство U1

DEPART Q1

ADVANCE 5,3

RELEASE U1

TERMINATE

GENERATE 20,15; начало второго сегмента

QUEUE Q2

SEIZE U1; занять устройство U1

DEPART Q2

ADVANCE 10,6

RELEASE U1

TERMINATE

GENER 2000; начало сегмента задания длительности моделирования

TERM 1

START 1

END

 

Пример2.

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

*

U1 equ 1

Q1 equ 1

Q2 equ 2

SIMULATE

GENERATE 10,5; начало первого сегмента

* по умолчанию приоритет транзактов равен 0

QUEUE Q1

SEIZE U1

DEPART Q1

ADVANCE 5,3

RELEASE U1

TERMINATE

GENERATE 20,15; начало второго сегмента

PRIORITY 1; транзактам присваивается приоритет, равный 1;

*возможно задание приоритета при генерации транзакта: GENERATE 20,15,,,1

QUEUE Q2

SEIZE U1

DEPART Q2

ADVANCE 10,6

RELEASE U1

TERMINATE

GENERATE 5000; начало сегмента задания длительности моделирования

TERMINATE 1

START 1

END

Пример 3.

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

U1 equ 1

Q1 equ 1

Q2 equ 2

SIMULATE

GENERATE 10,5; начало первого сегмента

QUEUE Q1

SEIZE U1

DEPART Q1

ADVANCE 5,3

RELEASE U1

TERMINATE

GENERATE 20,15; начало второго сегмента

QUEUE Q2

PREEMPT U1; захват устройства U1с прерыванием обслуживания транзакта *из первого потока, неприоритетного или имеющего относительный приоритет

DEPART Q2

ADVANCE 10,6

RETURN U1; завершение обслуживания и освобождение устройства

*с последующим дообслуживанием прерванного транзакта

TERMINATE

GENERATE 5000; начало сегмента задания длительности моделирования

TERMINATE 1

START 1

END

 

4.5. МОДЕЛИРОВАНИЕ И СИНХРОНИЗАЦИЯ ПАРАЛЛЕЛЬНЫХ ПРОЦЕССОВ

 

При моделировании ВС следует различать параллельные процессы трех типов:

· независимые параллельные процессы (не связанные по данным и по управлению);

· параллельные процессы, зависимые по данным, возникающие, например, при распараллеливании одной задачи, т.е. при выделении фрагментов алгоритма (программы) и назначении для выполнения этих фрагментов параллельно работающих процессоров с последующим объединением их в единый процесс при условии завершения и получения результатов по всем параллельно выполняемым фрагментам единой задачи;

· параллельные процессы, зависимые по управлению.

Ниже рассмотрены средства имитации параллельных процессов в GPSS.

 

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

4.5.1. МОДЕЛИРОВАНИЕ ПАРАЛЛЕЛЬНЫХ НЕЗАВИСИМЫХ

ПРОЦЕССОВ

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

Ниже приведен пример программы имитации двух независимых параллельных процессов (первые два сегмента). Длительность моделирования задается третьим сегментом.

Q1 equ 1

Q2 equ 2

U1 equ 1

U2 equ 2

SIMULATE

* Сегмент 1

GENERATE 9,5

QUEUE Q1

SEIZE U1

DEPART Q1

ADVANCE 7,6

RELEASE U1

TERMINATE

* Сегмент 2

GENERATE 12, 7

QUEUE Q2

SEIZE U2

DEPARTE Q2

ADYANCE 10,3

RELEANCE U2

TERMINATE

* Сегмент 3

GENERATE 3000

TERMINATE 1

START 1

END

 

4.5.2. МОДЕЛИРОВАНИЕ ПАРАЛЛЕЛЬНЫХ ПРОЦЕССОВ,

ЗАВИСИМЫХ ПО ДАННЫМ

Распараллеливание процессов в GPSS иммитируется созданием в блоке SPLIT копий текущего транзакта и последующим перемещением их по блокам модели. Транзакты-копии образуют вместе с транзактом-родителем одно семейство. В соответствии с логикой работы блока SPLIT транзакт-родитель после порождения транзактов-копий продвигается в блок, следующий за блоком SPLIT. Транзакты-копии предназначены для имитации параллельных зависимых (связанных по результатам завершения) процессов и перемещаются в блоки, имитирующие эти процессы и в программе определяемые меткой, записанной в поле В блока SPLIT. По завершении имитации зависимых процессов возможны два варианта продвижения транзактов семейства:

· накопление в блоке ASSEMBLE А транзактов одного семейства до количества, указанного в поле А этого блока, и слияние их в снова в один транзакт;

· накопление в блоке GATNER А транзактов одного семейства до количества, указанного в поле А этого блока, с последовательным продвижением всех накопленных транзактов в следующий блок по правилу FIFO.

Ниже приводится пример программы, имитирующей зависимые параллельные процессы, протекающие в устройствах U11,U12,U13, и последующее объединение их в устройстве U2:

*

GENERATE 20,5

SPLIT 3,МТ, 4,5; порождается 3 копии транзакта, поступающие в блок МТ.

*Порядковые номера копий хранятся в параметре 4, а число параметров у каждой

*копии равно 5.

*Исходный транзакт остается активным и передвигается в следующий блок модели:

QUEUE Q1

SEIZE U1

DEPART Q1

ADVANCE 15,10

RELEASE U1

TERMINATE

*

MT TRANSFER ALL, 10,21,4; копии-транзакты пытаются войти последовательно в *блоки с номерами 10,14,18; эти номера можно либо определить перечислением блоков *по исходному тексту программы-модели либо прочитать в.LST –файле (номера *представляются слева в строке каждого блока)

SEIZE U11

ADVANCE 10,6

RELEASE U11

TRANSFER, MK

*

SEIZE U12

ADVANCE 10,6

RELEASE U12

TRANSFER,MK

*

QUEUE Q2

SEIZE U13

DEPART Q2

ADVANCE 10,6

RELEASE U13

TRANSFER,MK

* Примечание: далее рассмотрены варианты моделей:

* Вариант 1 – слияние трех транзактов в блоке ASSEMBLE 3 в один с обслуживанием *этого транзакта в устройстве U2; в этом блоке накапливаются транзакты одного

*семейства, поэтому в нем одновременно могут задерживаться транзакты различных

*семейств, для которых еще не выполнены условия ассемблирования:

MK ASSEMBLE 3;

SEIZE U2

ADVANCE 15,5

RELEASE U2

TERMINATE

* Вариант 2 – накопление трех транзактов одного семейства в блоке GATHER 3

*с последующим обслуживанием их в устройстве U2 по правилу FIFO; очевидно, что

*в этом случае быстродействие устройства должно обеспечивать последовательное

* обслуживание всех трех транзактов-копий до появления следующей порции

*транзактов-копий:

MK GATHER 3

SEIZE U2

ADVANCE 15,3

RELEASE U2

TERMINATE

*Сегмент задания времени моделирования здесь не приводится.

 

4.5.3. МОДЕЛИРОВАНИЕ ПАРАЛЛЕЛЬНЫХ ПРОЦЕССОВ,

СВЯЗАННЫХ ПО УПРАВЛЕНИЮ

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

Например, в системе управления технологическим процессом для обеспечения высокой надежности предусмотрено дублирование расчетов на параллельно работающих ЭВМ с формированием сигнала управления по результатам работы обеих ЭВМ. При моделировании такой системы следует предусмотреть синхронизацию процессов с помощью блока MATCH А (см. 3.3).

Другим типичным примером параллельных процессов, связанных по управлению, может быть система «пассажир – маршрутное такси». Два независимых потока – пассажиров и маршрутных такси – пересекаются на остановке для посадки (здесь рассматривается модель взаимодействия только на начальной остановке маршрута, то есть только модель посадки). Взаимодействие этих процессов в модели отображается с помощью логического переключателя tr, корорый включается только при наличии машины на остановке, то есть когда возможна посадка, и выключается при заполнении всех мест в салоне машины (taxi1).

 

* Программа моделирования “Маршрутное такси”

taxi equ 1

pass equ 2

posadka equ 1

exp equ 1

tr equ 1

taxi1 equ 1

taxi1 storage 15

*

exp function rn$1,c14

0.,0./.1,.104/.3,.555/.5,.69/.6,.915

.7,1.2/.8,1.6/.85,1.95/.9,2.3/.95,3.

.98,3.9/.99,4.6/.995,5.3/.999,7.

*

Simulate

*

* процесс движения a/машин по маршруту:

*

gener,,,7; на маршрут выходит 7 а/машин

ost queue taxi; очередь машин на остановке

seize posadka; на посадку выходит только одна a/м

depart taxi

logic_s tr; установка индикатора готовности a/м к посадке

gate_lr tr; посадка закончена? Если нет, то ждать

release posadka; да, посадка закончена

advance 70,30; движение по маршруту в течение времени, *имеющего равновероятное распределение на интервале 40..100 мин

transfer,ost; возврат в начало маршрута

*

* процесс движения пассажиров:

*

gener 2,fn$exp; появление пассажиров через случайные *интервалы времени, распределенные по закону Пуассона

*с интенсивностью 0.5 пассажиров в минуту

queue pass; очередь пассажиров

gate_ls tr; возможна ли посадка? (индикатор tr установлен?)

enter taxi1; да, и пассажир занимает место в машине

depart pass

gate_sf taxi1,drop; все ли места заняты? (sf-storage full)

logic_r tr; да, и индикатор сбрасывается

leave taxi,15; сброс занятых мест storage

drop term

*

gener 1200; задание времени моделирования 20 часов

term 1

start 1

end

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

 

РАЗДЕЛ V. ЗАДАНИЯ К ЛАБОРАТОРНЫМ РАБОТАМ

5.1. ЗАДАНИЕ К ЛАБОРАТОРНОЙ РАБОТЕ № 1

Тема: обработка заявок объектами типа устройство (FACILITY) в системе без потерь (с неограниченной очередью) по дисциплинам:

а) без приоритета – по правилу FIFO;

б) с относительным приоритетом - без прерывания;

в) с абсолютным приоритетом, с прерыванием – по правилу LIFO.

 

1. Построить имитационную модель однопроцессорной системы обработки двух потоков задач. Длины очередей не ограничены. Потоки задач – пуассоновские, времена решения задач в процессоре распределены по экспоненциальному закону. Для обоих потоков задать одинаковые интенсивности ввода и одинаковые интенсивности обслуживания задач в процессоре, обеспечивающие загрузку процессора не менее 90%.

Провести исследования на модели:

1.1. Определить длительность переходных процессов ТМпп в модели как минимальное время моделирования ТМmin=ТМпп, обеспечивающее завершение переходного процесса. Будем считать,что переходной процесс завершен, если оценки характеристик моделируемой системы статистически независимы от длительности процесса моделирования. Для определения длительности переходных процессов провести на модели серию экспериментов и построить зависимости характеристик системы (средней длины очереди, среднего времени ожидания заявок в очередях и обслуживания в процессоре) от времени моделирования в диапазоне ТМ = 500 – 5000.

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

Все дальнейшие исследования на модели проводить при ТМ>=ТМпп.

1.2. Определить и сравнить максимальную и среднюю длину очереди, загрузку процессора в целом и отдельно для первого и второго потока задач:

а) при отсутствии приоритетов в решении задач;

б) при условии,что приоритет задач первого потока выше приоритета задач второго потока;

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

2. Построить имитационную модель узла (процессора) вычислительной сети. На вход процессора поступают два потока задач, образующие две очереди: Q1 – фоновые задачи, занимающие процессор, если он свободен; Q2 – диалоговые задачи (от пользователей) или задачи управления, требующие оперативного решения и поэтому прерывающие решение фоновой задачи. Прерванная задача возвращается в очередь Q1 для дообслуживания. Потоки задач – пуассоновские, времена решения задач в процессоре распределены по экспоненциальному закону. Длины очередей не ограничены. Для обоих потоков задать одинаковые интенсивности ввода и одинаковые интенсивности обслуживания задач в процессоре, обеспечивающие загрузку процессора не менее 90%.

Провести исследования модели:

2.1. Определить и сравнить максимальную и среднюю длину очереди, время ожидания в очереди, загрузку процессора в целом и отдельно загрузку процессора задачами первого и второго потока.

2.2. Уменьшая интенсивность задач потока Q2 в два (три, четыре…) раза, определить, при каких соотношениях интенсивностей входных потоков влияние приоритета на характеристики процесса обслуживания компенсируется.

 

5.2. ЗАДАНИЕ К ЛАБОРАТОРНОЙ РАБОТЕ № 2

Тема: обработка заявок объектами типа устройство (FACILITY) в системе с потерями (с ограниченной очередью).

 

1. Построить имитационную модель однопроцессорной системы обработки одного потока задач. Длина очереди R ограничена и не может быть больше Qd. Поток задач пуассоновский, время решения задачи в процессоре распределено по экспоненциальному закону. Интенсивность ввода L и интенсивность обслуживания задач в процессоре M задать такими, которые приводили бы к перегрузке процессора (коэффициент загрузки Z = L / М более 100%). Задача, поступающая в систему при максимальном заполнении ограниченной очереди, покидает систему без обслуживания в процессоре.

2. Провести исследования на модели:

2.1. Определить длительность перехрдных процессов ТМпп в модели и сравнить с результатами оценки ТМпп, полученными в п. 1.1. лабораторной работы №1.

2.2. Найти зависимость характеристик моделируемой однопроцессорной системы от заданного ограничения длины очереди Qd.

3. Построить модель

 

Потоки 1 и 2- Пуассоновские с интенсивностью L1=0.5 1/мин и L2=0.2 1/мин соответственно. Распределение времени решения задач в процессоре- равновероятное с интервалами Тр1=0.5 – 4.5 мин и Тр2=2 – 6 мин соответственно. Если длина очереди диалоговых задач больше Qd (например, больше 5), то очередная диалоговая задача поступает на решение в другой процессор сети, но на поиск свободного процессора и передачу ему задачи требуется дополнительн







Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор...

ЧТО И КАК ПИСАЛИ О МОДЕ В ЖУРНАЛАХ НАЧАЛА XX ВЕКА Первый номер журнала «Аполлон» за 1909 г. начинался, по сути, с программного заявления редакции журнала...

Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все...

ЧТО ТАКОЕ УВЕРЕННОЕ ПОВЕДЕНИЕ В МЕЖЛИЧНОСТНЫХ ОТНОШЕНИЯХ? Исторически существует три основных модели различий, существующих между...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.