Start 1

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

3.3.3. Моделирование работы одноканальных устройств

Устройства используются при моделировании систем для имитации работы оборудования единичной ёмкости, например, процессор, канал передачи данных, человек, компьютер. Устройство в любой момент времени может обрабатывать только одно сообщение (транзакт). Одноканальные устройства заранее не описываются.

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

· ждать очереди, если необходимо;

· когда подходит очередь, занять устройство;

· пропустить время, необходимое на обслуживание;

· когда обслуживание закончится, освободить устройство.

Второй и четвёртый шаги реализуются блоками SEIZE и RELEASE.

Блок SEIZE (занять устройство)имеет следующий формат:

SEIZE A

Аргумент А задаёт номер или имя занимаемого устройства.

Свободный блок SEIZE позволяет вошедшему в него сообщению занять указанное устройство. Блок SEIZE задерживает сообщение, если устройство занято или находится в состоянии недоступности. Сообщение, занявшее уст­ройство, затем пытается перейти к следующему по номеру блоку. Уст­ройство остаётся занятым до тех пор, пока занимающее его сообщение не войдёт в соответствующий блок RELEASE. Прежде чем освободить устройство, сообщение может пройти через неограниченное число блоков.

Блок RELEASE (освободить устройство)имеет следующий формат:

RELEASE A

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

Транзакты обслуживаются устройствами в течение некоторого промежутка времени. Для моделирования такого обслуживания, т. е. для задержки транзактов на определённый отрезок модельного времени служит блок ADVANCE (задержать), имеющий следующий формат:

ADVANCE A,B

Операнды A и B имеют тот же смысл, что и в соответствующих полях блока GENERATE. Операнд А обязателен. Любой транзакт входит в блок ADVANCE беспрепятственно.

Пример.

GENERATE 5,2

SEIZE 1

ADVANCE 4,2


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



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