- •Построение имитационных моделей с помощью инструментального средства gpss World
- •Установка параметров моделирования
- •Моделирование одноканальной разомкнутой системы массового обслуживания
- •Generate а, в, с, d, е
- •Queue a, b
- •Seize a
- •Depart а, в
- •Advance a, b
- •Release а
- •Terminate a
- •Start а, в, с, d
- •Многоканальная разомкнутая система массового обслуживания
- •Name storage a
- •Test o a, b, c
- •Enter а, в
- •5. Определение движения требований по каналам.
- •Transfer all, kaNl, kan3, 3
- •Transfer a, в, c, d
- •Transfer, New_Plaсе
- •Transfer both, First_Place, Second_Place
- •Seize a
- •7. Запоминание канала, в который требование попало на обслуживание.
- •Assign 1, can1
- •Assign a, b, с
- •Seize a
- •Assign 1, can1
- •Освобождение элементов памяти.
- •Leave а, в
- •Terminate 1
- •Terminate a
- •Библиографический список
Test o a, b, c
Операнды:
О – оператор отношения. Соотношение операнда А с операндом B, которое должно выполняться при проверке. Обязательный операнд Допустимые значения: Е, G, GE, L, LE или NE.
А – проверяемое значение. Обязательный операнд. Допустимые значения: Name, Number, String, ParenthesizedExpression, SNA или SNA'Parameter.
В – контрольное значение. Обязательный операнд. Допустимые значения: Name, Number, String, ParenthesizedExpression, SNA или SNA'Parameter.
С – номер блока назначения. Необязательный операнд. Допустимые значения: Null, Name, PosInteger, ParentnesizedExpression, SNA или SNA'Parameter.
Действие:
Блок TEST функционирует в режиме отказа и в режиме альтернативного выхода. В любом случае операнды А и В вычисляются и сравниваются.
Если операнд С не используется, блок TEST функционирует в режиме отказа. Когда транзакт пытается войти в блок TEST, работающий а режиме отказа, и заданное условие не выполняется, транзакт блокируется, т. е. ему не позволяется войти в блок TEST, проверка повторяется до тех пор, пока условие не будет выполнено. После выполнения заданного условия активный транзакт входит в блок TEST и затем переходит к следующему по порядку блоку.
Блокированные транзакты помещаются в список повторных попыток всех объектов, участвующих в сравнении. Когда состояние любого из этих объектов изменяется, заблокированный транзакт активизируется, проверка, определенная блоком TEST, повторяется, и, если условие выполняется, транзакту позволяется войти в блок TEST.
Если операнд С используется, блок TEST функционирует в режиме альтернативного выхода. Когда транзакт пытается войти в такой блок TEST и проверяемое условие не выполняется, транзакт входит в блок TEST, ему назначается альтернативный блок назначения, указанный в операнде С, и он помещается в список текущих событий впереди всех транзактов, равных ему по приоритету. Если проверяемое условие выполняется, активный транзакт входит в блок TEST и затем переходит к следующему по порядку блоку.
Оператор отношения обязателен. Его допустимые значения: E, G, GE, L, LE или NE. Условия определяются следующим образом:
Е: значение операнда А должно быть равно значению операнда В.
G: значение операнда А должно быть больше значения операнда В.
GE: значение операнда А должно быть больше или равно значению операнда В.
L: значение операнда А должно быть меньше значения операнда В.
LE: значение операнда А должно быть меньше или равно значению операнда В.
NE: значение операнда А должно быть не равно значению операнда B.
Когда транзакт пытается войти в блок ENTER, он либо занимает, либо ожидает освобождения определенного количества элементов памяти:
Enter а, в
Операнды:
А – имя или номер памяти. Обязательный операнд. Допустимые значения: Name, PosInteger, ParenthesizedExpression, SNA или SNA'Parameter.
В – количество элементов, на которое уменьшается доступная емкость памяти. По умолчанию равно 1. Необязательный операнд. Допустимые значения: Null, Name, PosInteger, ParenthesizedExpression, SNA или SNA'Parameter.
Действие
Когда транзакт входит в блок ENTER, операнд А вычисляется и используется для поиска памяти с таким номером. Если такая память не существует, происходит остановка по ошибке. Память должна определяться командами STORAGE.
Если память существует, операнд В служит для определения требуемого объема памяти. Если операнд В задан, он вычисляется, округляется и используется в качестве результата. Если операнд В не задан, по умолчанию используется значение 1.
Если память в доступном состоянии и если существует достаточное количество элементов памяти для удовлетворения потребности транзакта, транзакту позволяется войти, а блок ENTER и его потребность удовлетворяются уменьшением текущего количества свободных элементов на число требуемых. В противном случае транзакт помещается для ожидания в список задержки памяти в порядке приоритета.
Когда элементы памяти освобождаются блоками LEAVE, для выбора транзакта, которому позволяется войти в блок ENTER, используется правило «первого подходящего». Проверяются все транзакты в списке задержки, начиная с самого старшего по приоритету, и из него выбирается первый подходящий, затем снова проверяются все транзакты. Все это осуществляется до того, как активный транзакт покинет блок LEAVE. Это предотвращает возникновение конфликтных ситуаций.
Когда транзакт входит в блок ENTER или LEAVE, обновляется статистика, накапливаемая по данной памяти.