Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по самому GPSS - для студентов.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
153.76 Кб
Скачать

Логика работы интерпретатора

Теперь рассмотрим более подробно логику работы интерпретатора GPSS.

В любой момент времени место транзакта может быть определено двояко:

1. Он находится в каком-либо конкретном блоке.

2. Он находится (отмечен) в одном или нескольких цепях (списках) gpss.

В GPSS World имеются 8 видов цепей:

  • цепь текущих событий (CURRENT Events Chain);

  • цепь будущих событий (Future Events Chain);

  • цепь задержки (Delay Chain); и др. цепи.

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

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

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

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

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

1) транзакт входит в блок TERMINATE;

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

3) транзакт "пытается" войти в следующий блок, однако блок "отказывается" принять его. В этом случае транзакт удаляется из ЦТС и помещается в цепь задержки, связанную с данным моделирующим элементом GPSS (например, с прибором TLG из предыдущего примера). С точки зрения пользователя он как бы остается в том блоке, где находился, и позднее будет повторять свою попытку войти в следующий блок. Когда условия в модели изменятся, такая попытка может оказаться успешной, и транзакт сможет продолжить свое перемещение по блок-схеме.

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

Итак, логика работы интерпретатора состоит в следующем:

  1. Активный транзакт продвигается по модели от блока к блоку.

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

  3. Если приоритеты в модели разные, то в ЦТС могут попасть транзакты, имеющие более высокий приоритет, чем у активного транзакта, и тогда происходит смена активного транзакта.

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

Проходя через блоки модели, каждый транзакт вносит вклад в содержимое счетчиков блоков. Значения этих счетчиков доступны программисту через СЧА блоков: W - текущее содержимое блока и N - общее количество входов в блок.

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

Таймер GPSS World имеет следующие особенности: