Основной алгоритм работы интерпретатора

Схема функционирования GPSS World

107.0 - 127.0 7 100.0

87.0 - 107.0 14 93.0

67.0 - 87.0 21 79.0

47.0 - 67.0 21 58.0

27.0 - 47.0 6 37.0

7.0 - 27.0 29 31.0

TAB 58.042 33.

- 7.0 2 2.0




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

Для создания временной последовательности событий, интерпретатор использует таймер модельного времени.

Последовательность событий интерпретатор определяет, используя списки (цепи) событий

· Список текущих событий (CEC ‑ Chain of Current Events)транзакты, планируемое время продвижения которых равно или меньше текущего модельного времени (к последним относятся транзакты, движение которых было заблокировано ранее). Этот список организуется в порядке убывания приоритетов транзактов, а в пределах каждого уровня приоритета - в порядке поступления транзактов

· Список будущих событий (FEC ‑ Chain of Future Events) транзакты, планируемое время продвижения которых больше текущего времени, Этот список организуется в порядке возрастания планируемого времени продвижения транзактов

· Список задержки

· Другие


«Активный» транзакт перемещается от блока к блоку по маршруту, предписанному в модели.

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

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

1) транзакт входит в блок, функцией которого является удаление транзакта из модели;

2) транзакт входит в блок, функцией которого является задержка транзакта на некоторое определенное в модели время;

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

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



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: