Опубликован: 16.11.2010 | Уровень: специалист | Доступ: платный
Лекция 7:

Моделирование в GPSS World

6.2.10. Построение моделей систем с многоканальными устройствами и переключателями

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

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

МКУ определяется до его использования командой STORAGE. Формат команды:

Name    STORAGE        A

Name - имя МКУ. Символическому имени может быть поставлен в соответствие номер командой EQU. Это необходимо, если требуется обращаться к нескольким МКУ в блоках SELECT и COUNT или в других случаях. Операнд А может быть только целым положительным числом. Иные способы задания емкости вызывают ошибку.

В модели можно организовать функционирование МКУ в двух режимах:

  • занятие и освобождение МКУ;
  • недоступность МКУ.
6.2.10.1. Занятие многоканального устройства и его освобождение

Занятие и освобождение МКУ имитируется блоками ENTER (войти) и LEAVE (выйти). Форматы блоков:

ENTER             A,[B]
LEAVE             A,[B]

Операнд А в обеих блоках используется для указания имени, соответствующего МКУ. Операнд B задает число устройств (элементов памяти), которое должно быть занято в блоке ENTER или освобождено в блоке LEAVE. По умолчанию операнд В = 1. При В = 0 блок считается неработоспособным.

Когда транзакт входит в блок ENTER, операнд А используется для нахождения МКУ с указанным именем. Если такого МКУ нет, происходит останов по ошибке "Обращение к несуществующей памяти". Если МКУ существует и задан операнд B, он вычисляется, округляется до целого и полученный результат используется для оценки свободной емкости. Транзакт может войти в блок ENTER, если МКУ находится в доступном состоянии и достаточно емкости для выполнения запроса. В противном случае транзакт помещается в список задержки устройства в соответствии с приоритетом.

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

  • увеличивает на 1 счетчик входов МКУ;
  • увеличивает на значение операнда B (по умолчанию на 1 ) текущее содержимое МКУ;
  • уменьшает на значение операнда B (по умолчанию на 1 ) доступную емкость МКУ.

Если транзакт при входе в блок ENTER запрашивает больше устройств (элементов памяти), чем определено командой STORAGE, т. е. ее операнд А меньше операнда B блока ENTER, возникает ошибка "Запрос элементов памяти превышает ее общую емкость".

МКУ никогда не может быть удалено из текущей модели, даже если команда STORAGE удаляется из рабочей программы. МКУ можно переопределить, т. е. изменить емкость другой командой STORAGE с тем же самым именем. Например:

Batr      STORAGE        18

Повторное описание:

Batr      STORAGE        24

Имитация обслуживания транзакта в течение какого-то промежутка времени также осуществляется блоком ADVANCE.

Пример 1.

Nak     STORAGE       20
        . . .
        ENTER         Nak,2
        ADVANCE       120,40
        LEAVE         Nak,2
. . .

Командой STORAGE определяется МКУ с именем Nak емкостью 20 единиц. При входе транзакта в блок ENTER занимается 2 единицы и столько же освобождается в блоке LEAVE при выходе из МКУ.

Пример 2.

Nak       STORAGE        20 . . .
ENTER             Nak,21
ADVANCE       120,40
LEAVE             Nak,2 . . .

При входе транзакта в блок ENTER произойдет останов по ошибке, так как транзакт будет пытаться занять больше каналов (21), чем определено (20) командой STORAGE. То же самое произойдет, если при выходе из блока LEAVE транзакт будет пытаться освободить каналов больше, чем определено командой STORAGE.

Пример 3.

Pun1     EQU            1
Pun2     EQU            2
Pun3     EQU            3
Pun1     STORAGE        6
Pun2     STORAGE        5
Pun3     STORAGE        3
. . .
ENTER             *1
ADVANCE       MX$NorVr(P2,P3)
LEAVE            *1
. . .

В данном примере определены три МКУ с именами Pun1, Pun2, Pun3 и емкостями 6, 5 и 3 соответственно. Именам командами EQU поставлены в соответствие номера 1, 2 и 3.

Предполагается, что при входе транзакта в блок ENTER в его первом параметре (ссылка *1) содержится какой-либо один из трех номеров. Согласно этому номеру и занимается МКУ, а затем освобождается. Операнд B в блоках ENTER и LEAVE не используется, поэтому транзактом занимается и освобождается одна единица емкости МКУ.

Ранее (см. табл. 6.1) для МКУ был употреблен термин "память". Это связано с тем, что блоки ENTER и LEAVE могут быть использованы для имитации функционирования запоминающих устройств, например, оперативного или внешних устройств памяти. В этом случае в качестве операнда B этих блоков может быть использован один из параметров транзакта, имитирующего, например, сообщение, содержащий количество занимаемых (освобождаемых) ячеек памяти. Пример такого использования блоков ENTER и LEAVE приведен в 6.7.5.

6.2.10.2. Перевод многоканального устройства в недоступное состояние и восстановление его доступности

Недоступность МКУ моделируется блоком SUNAVAIL (символ S означает МКУ, UNAVAIL - недоступный). Формат блока:

SUNAVAIL        A

Операнд А - имя или номер МКУ, может быть именем, положительным целым числом, выражением в скобках, СЧА, СЧА*параметр.

Например:

SUNAVAIL        Batr

Когда транзакт входит в этот блок, МКУ Batr становится недоступным. Если при переводе в недоступное состояние в МКУ находились транзакты, т. е. текущее содержимое МКУ не равнялось нулю, то обслуживание этих транзак-тов продолжается, пока текущее содержимое не станет равным нулю.

Транзакты, которые пытаются занять МКУ во время нахождения его в недоступном состоянии, не входят в блок ENTER и помещаются в список задержки МКУ.

Нахождение в недоступном состоянии продолжается до тех пор, пока транзакт не войдет в блок SAVAIL.

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

SAVAIL           A

Операнд А - имя или номер МКУ. Может быть таким же, как операнд А в блоке SUNAVAIL.

Если в момент перевода МКУ в доступное состояние в его списке задержки были транзакты, им предоставляется возможность занять МКУ в соответствии с дисциплиной "first-fit-with-skip" (первый подходящий с пропусками).

Транзакты, которым будет отказано в занятии МКУ, остаются в его списке задержки.

Замечание. Имитация выхода МКУ из строя, при котором все транзакты, находившиеся в МКУ на обслуживании, теряются, блоками SUNAVAIL и SAVAIL невозможна. Такая имитация возможна с использованием блока DISPLACE (см. п. 6.8.2).
6.2.10.3. Проверка состояния многоканального устройства

Состояние МКУ, как и состояние ОКУ, проверяется блоком GATE такого же формата

GATE X           A,[B]

Отличие состоит в значениях условного оператора Х, которые могут быть следующими:

  • SE - МКУ, заданное операндом А, пусто;
  • SF - МКУ, заданное операндом А, заполнено;
  • SNE - МКУ, заданное операндом А, не пусто;
  • SNF - МКУ, заданное операндом А, не заполнено;
  • SNV - МКУ, заданное операндом А, не доступно;
  • SV - МКУ, заданное операндом А, доступно. Блок GATE также работает в двух режимах:
  • отказа во входе;
  • разрешении во входе и альтернативном выходе.

Например:

GATE SNF        Can,Met5

Если МКУ с именем Can не заполнено, т. е. имеются свободные каналы (элементы памяти), заданное в блоке GATE условие выполняется, и транзакт будет направлен к следующему блоку. Если МКУ заполнено, транзакт будет направлен к блоку с меткой Met5.

Блок GATE позволяет только определить состояние не заполненности МКУ, т. е. наличие свободных каналов, но достаточно ли их для удовлетворения запроса, он не определяет.

Для проверки состояния МКУ могут также использоваться булева переменная и блок TEST [5]. Их использование позволяет расширить возможности по осуществлению проверок состояния, а также сократить машинное время, так как в одном блоке с помощью булевой переменной может проверяться сразу несколько условий.

6.2.10.4. Моделирование переключателей

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

  • включен ( ON или 1 );
  • выключен ( OFF или 0 ). В зависимости от состояния ключа изменяется направление движения транзактов.

Логический ключ моделируется блоком LOGIC. Формат блока:

LOGIC X          A

Операнд А - имя или номер логического ключа. Может быть именем, положительным целым числом, выражением в скобках, СЧА или СЧА*параметр.

Логический оператор Х - состояние логического ключа устанавливается в зависимости от следующих его значений:

  • S - ключ, заданный операндом А, включается;
  • R - ключ, заданный операндом А, выключается;
  • I - логический ключ инвертируется, т. е. состояние его меняется на противоположное, например, если был включен, будет выключен.

Состояние логического ключа проверяется также блоком GATE. Блок GATE имеет такой же формат, как и при проверке состояний ОКУ и МКУ, и два режима работы:

GATE X           A,[B]

Операнд А - имя или номер проверяемого ключа. Может быть именем, положительным целым числом, выражением в скобках, СЧА или СЧА*параметр.

Операнд B - метка блока, к которому будет направлен тран-закт при невыполнения условия, заданного оператором Х.

Условный оператор может принимать значения:

  • LS - равен 1, если логический ключ, заданный операндом А, включен; 0 - если выключен;
  • LR - равен 1, если логический ключ, заданный операндом А, выключен; 0 - если включен.
Владислав Нагорный
Владислав Нагорный

Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки?

Спасибо!

Лариса Парфенова
Лариса Парфенова

1) Можно ли экстерном получить второе высшее образование "Программная инженерия" ?

2) Трудоустраиваете ли Вы выпускников?

3) Можно ли с Вашим дипломом поступить в аспирантуру?

 

Виктор Погула
Виктор Погула
Россия, Новокузнецк, СибГИУ, 2002
Анастасия Кузнецова
Анастасия Кузнецова
Россия