Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие Моделирование.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
843.26 Кб
Скачать

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

Событие – любое перемещение транзакта по системе, а также изменение его состояния (обслуживается, заблокирован, в очереди и т.п.)

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

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

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

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

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

В списке текущих событий транзакты располагаются в порядке убывания приоритетов соответствующих событий; при равных приоритетах – в порядке поступления в список.

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

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

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

Пример. В систему поступают заявки 3-х типов, каждая из которых обслуживается отдельным устройством. Известны законы поступления транзактов и длительность их обслуживания. Т.о. в системе существует 3 независимых параллельных процесса.

Возможный сценарий развития событий приведен на рис.3.7

Р ис. 3.7 Пример параллельных процессов

Cij—события, относящиеся к соответствующему процессу (i). Для каждого процесса строится своя цепь событий, однако списки событий – общие для модели.

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

Затем, событие с наименьшим временем переносится в список текущих событий. Если одновременно с ним событий нет, то оно обрабатывается и исключается из списка текущих событий. Процесс формирования и обработки списков приведен в таблице 3.2.

Таблица 3.2 Ведение списков событий

tмод

0

t11

t21

t31

t12

t22

t32

t13

t23

Список будущих событий

с11

с21

с31

с21

с31

с12

с31

с12

с22

с12

с22

с32

с22

с32

с13

с32

с13

с23

с13

с23

с33

с23

с33

--

Список текущих событий

0

с11

с21

с31

с12

с33

с32

с13

с23

с33

( ! На шаге t22 в списке будущих событий нет с33, так как не запущен еще процесс (событие) с32 и неизвестно время его окончания).

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