Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Opisanie_yazyka_GPSS_World.rtf
Скачиваний:
44
Добавлен:
16.03.2015
Размер:
1.52 Mб
Скачать

2.2.2 Многоканальное устройство

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

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

Количество устройств, которое моделируется каждым из накопителей, определяется пользователем. В этом смысле употребляют термин «емкость накопителя». Эта емкость заранее должна быть определена пользователем, чтобы интерпретатор знал, сколько устройств использует данный накопитель.

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

Формат оператора задания емкости накопителя STORAGE:

<имя> STORAGE <A>

  • поле метки – имя накопителя,

  • поле операции – STORAGE,

  • поле операнда <A> – емкость накопителя.

MEM STORAGE 100

Блоки ENTER (ВОЙТИ) и LEAVE (ВЫЙТИ). Использование МКУ аналогично использованию одиночного устройства. Элементом, который занимает и использует накопитель, является транзакт. При моделировании накопителя события происходят в следующем порядке:

1) транзакт ожидает своей очереди, если это необходимо;

2) транзакт занимает устройство;

3) устройство осуществляет обслуживание на протяжении некоторого интервала времени;

4) транзакт освобождает устройство.

Формат блоков ENTER и LEAVE:

ENTER <A>[,<B>]

LEAVE <A>[,<B>]

Поля операндов имеют следующий смысл:

  • <A> – номер или имя накопителя,

  • <B> – количество занимаемых одновременно единиц емкости накопителя.

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

  • увеличивает счетчик входов накопителя на значение операнда <B>;

  • увеличивает текущее содержимое накопителя на значение операнда <B>;

  • уменьшает доступную емкость накопителя на значение операнда <B>.

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

  • уменьшает текущее содержимое накопителя на значение операнда <B>;

  • увеличивает доступную емкость накопителя на значение операнда <B>.

Операнду <B> можно присвоить значение, отличное от единицы. По умолчанию значение операнда <B> равно 1. Освобождение накопителя может быть произведено не только тем транзактом, который его занял, а любым другим транзактом. Перед многоканальным устройством так же, как и перед одноканальным устройством, может возникнуть очередь транзактов.

Пример использования операндов ENTER и LEAVE:

ENTERMEM

LEAVEMEM

2.2.3 Логический переключатель

Логический переключатель (ключ) используется для моделирования объектов, имеющих всего два положения: «включен» (set или 1) и «выключен» (reset или 0).

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

Формат блока LOGIC:

LOGIC <Х> <А>

В поле операнда <А> указывается номер или имя ключа.

Когда транзакт входит в блок LOGIC, положение ключа, номер которого задан в операнде <А>, изменяется в зависимости от значения вспомогательного оператора <Х> следующим образом:

  • S – ключ устанавливается в положение «включен»;

  • R – ключ устанавливается в положение «выключен»;

  • I – ключ инвертируется, то есть положение его изменяется на противоположное.

Пример использования блока LOGIC:

LOGICSKEY

По умолчанию перед началом моделирования ключи находятся в положении «выключен». Установить ключ в состояние «включен» перед началом моделирования можно с помощью инструкции

INITIALLSKEY

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]