Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки? Спасибо! |
Моделирование в 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" (первый подходящий с пропусками).
Транзакты, которым будет отказано в занятии МКУ, остаются в его списке задержки.
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 - метка блока, к которому будет направлен тран-закт при невыполнения условия, заданного оператором Х.
Условный оператор может принимать значения: