Разделы

Авто
Бизнес
Болезни
Дом
Защита
Здоровье
Интернет
Компьютеры
Медицина
Науки
Обучение
Общество
Питание
Политика
Производство
Промышленность
Спорт
Техника
Экономика

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

Лекция №3

Пример №2.3

TRANSFER A,B,C

А - числовое значение меньшее единицы.

В и С - метки блоков.

Транзакт, поступающий на блок TRANSFER, с вероятностью, указанной в операнде А, переходит на блок с меткой, указанной в операнде С, и с дополнительной - на блок с меткой, указанной в операнде В. Тогда программа, написанная в примере №2.2, будет выглядеть следующим образом:

 

  GENERATE
  SEIZE
  TRANSFER .3,M,N
M ADVANCE 20,5
  TRANSFER ,L
N ADVANCE 15,4
L RELEASE
  TERMINATE  

 

Существует возможность, чтобы ОП реализовывалось тоже как устройство. БП имитируется очередью, реализованной самим интерпретатором, и имеет бесконечную длину, но мы моделируем систему в ЭВМ следовательно есть ограничение на длину очереди. Если очередь в системе забита, то поступление нового транзакта вызовет программную ошибку.

Программа в системе моделирования состоит из сегментов. Сегменты можно переставлять, но это может повлиять на результат моделирования. Примеры сегментов - связки блоков, расписанных в примере №2.1 и примере №2.2.

В конце моделирования выводится статистика:

1) доля времени, в течении которого прибор был занят;

2) сколько транзактов прошло через устройство;

3) сколько времени в среднем транзакт находится в устройстве и т.д.

Но иногда такой статистике мало: хотелось бы иметь информацию об очереди к устройству. Для этого служат блоки

QUEUE A - транзакт попадает в очередь с именем, указанном в операнде А.

DEPART A - освобождение транзактом очереди.

С помощью этих двух блоков можно узнать:

1) наибольшее значение содержимого очереди за время моделирования;

2) общее число заявок, вошедших в очередь;

3) среднее время, проведенное одной заявкой в очереди и т.д.

  GENERATE
  QUEUE A
  SEIZE
  DEPART A
  ADVANCE 20,10
  RELEASE
  TERMINATE  

 

Листинги, которые появляются в процессе моделирования.

1. Текст программы.

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

2. Проверка синтаксических ошибок.

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

3. Осуществляется прогон программы, сообщаются результаты моделирования.

 

 

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

- цепь текущих событий (одна цепь в системе);

- цепь будущих событий (одна цепь в системе).

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

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

1. Транзакт попал в блок ADVANCE и, до некоторого момента, нет возможности продвинуть его в следующий блок модели.

2. Транзакт должен войти в модель в некоторый более поздний момент времени через блок GENERATE.

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

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

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

3. Транзакт входит в блок TERMINATE. В этом случае интерпретатор удаляет его из цепи текущих событий и из всей модели.

Когда транзакт прекратит свое движение, интерпретатор выполняет одно из двух действий:

1. Выбирается следующий по очереди транзакт из цепи текущих событий.

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

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

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

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

 

Дата публикации:2014-01-23

Просмотров:472

Вернуться в оглавление:

Комментария пока нет...


Имя* (по-русски):
Почта* (e-mail):Не публикуется
Ответить (до 1000 символов):







 

2012-2018 lekcion.ru. За поставленную ссылку спасибо.