3. ВНУТРЕННЯЯ ОРГАНИЗАЦИЯ ИНТЕРПРЕТАТОРА

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

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

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

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

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

В случае, когда события распределены во времени не равномер но, как обычно и бывает при исследовании большинства систем, второй из описанных способов, сточкизрения затрат машинного времени, более выгоден. В GPSS/PC использован именно этот способ.

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

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

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

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