Моделирование и синхронизация параллельных процессов


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

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

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

Моделирование параллельных независимых процессов

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

Моделирование параллельных процессов, зависимых по данным

Распараллеливание процессов в 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

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

Моделирование параллельных процессов, зависимых по управлению

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

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

Другим типичным примером параллельных процессов, связанных по управлению, может быть система «пассажир – маршрутное такси». Два независимых потока – пассажиров и маршрутных такси – пересекаются на остановке для посадки (здесь рассматривается модель взаимодействия только на начальной остановке маршрута, то есть только модель посадки). Взаимодействие этих процессов в модели отображается с помощью логического переключателя 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

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


Комментарии запрещены.




Статистика