Операторы, имитирующие работу аппаратной категории объектов.
В аппаратную категорию входят объекты трёх типов: устройства (ОКУ), памяти (МКУ) и логические ключи.
Устройство – это объект, который может находиться в одном из двух состояний: либо быть свободным, либо занятым только одним транзактом. Изменять состояние устройства можно с помощью блоков (см. Таблица 1.5).
Таблица 1.6 Операторы, изменяющие состояние устройства
№ | Блок | Описание |
SEIZE A | Занятие устройства | |
RELEASE A | Освобождение устройства | |
PREEMPT A,B,C,D,E | Занятие устройства по приоритету | |
RETURN A | Освобождение устройства по приоритету | |
FUNAVAIL A,B,C,D,E,F,G,H | Установление устройства в режим недоступности | |
FAVAIL A | Установление устройства в режим доступности |
В операнде А всех указанных выше блоков указывается идентификатор устройства, который может быть именем или номером с прямой или косвенной адресацией.
Блок занятия по приоритету относится к сложным блокам. В операнде В можно указать приоритетный режим PR. В операнде С можно указать метку, к которой направляется транзакт, обслуживание которого было прервано транзактом более высокого приоритета. В этом случае в операнде Е обязательно записывается символ RE. В операнде D можно указать идентификатор параметра, в который будет записано время, оставшееся на дообслуживание прерываемого транзакта. Если операнды С и Е «нулевые» (не заполнены), то транзакт, обслуживание которого прервано, будет обслужен после завершения обслуживания прервашего его транзакта.
Блок FUNAVAIL. Операнды B, C, D устанавливают режим для прерываемых транзактов. Операнды E, F – для транзактов, прерванных на данном устройстве ранее. Операнды G, H – для транзактов, ожидающих освобождения устройства. Если эти три категории транзактов не претендуют на дообслуживание после восстановления режима доступности, то в операндах B, E, H записываются символы RE (для каждой категории, независимо от других). В этом случае в операндах C, F, H указываются метки, к которым направляются данные категории транзактов. В операнде D можно указать идентификатор параметра, в который будет записано время, оставшееся на дообслуживание для прерываемого транзакта. Тысячилетие составление
Памяти можно использовать по прямому назначению для имитации работы памятей компьютеров, складов и т.п. Кроме того, их можно рассматривать как многоканальные устройства и в отличие от классических устройств, рассмотренных в предыдущем разделе, памяти могут заниматься и обслуживаться несколькими транзактами одновременно.
Состояние памяти могут менять четыре блока (см. Таблица 1.6).
Таблица 1.7 Операторы, изменяющие состояние памяти
№ | Блок | Описание |
ENTER A,B | Занятие памяти | |
LEAVE A,B | Освобождение памяти | |
SUNAVAIL A | Установление памяти в режим недоступности | |
SAVAIL A | Установление памяти в режим доступности |
В операнде А всех блоков указывается идентификатор памяти. В операнде В первых двух блоков можно указать количество занимаемых и освобождаемых мест памяти одним транзактом. По умолчанию принимается один транзакт. Для использования памяти требуется обязательно её определить командой NAME STORAGE A, в поле метки которой указывается имя памяти, а в операнде А количество мест в памяти. Если количество мест не ограничено, то в операнде А записывается какое-то большое число, например, 1000000.
Имитация процессов коммутации в GPSS выполняется с использованием логических ключей, имеющих два состояния «Включено» – «Выключено». Работа логических ключей отображается блоком LOGIC r A, где А – имя логического ключа, r – внутренний оператор, принимающий значения I – переключить, R – выключить, S – включить. При входе транзакта в блок LOGIC происходит срабатывание соответствующего ключа. Ключи не имеют СЧА.
Примеры использования описанных выше блоков приведены в таблице 1.8.
Таблица 1.8 Примеры использования операторов, имитирующих работу аппаратной категории объектов
Пример использования оператора | Комментарии |
SEIZE PK | Занятие устройства с именем PK |
SEIZE P$NUMBER_OF_FACILITY | Занятие устройства, номер которого записан в параметре NUMBER_OF_FACILITY |
RELEASE P$NUMBER_OF_FACILITY | Освобождение устройства, номер которого записан в параметре NUMBER_OF_FACILITY |
PREEMPT FACILITY_1 | Когда транзакт входит в блок PREEMPT, ему предоставляется право занять устройство, если оно в настоящий момент не занято с вытеснением |
PREEMPT FACILITY_1,, FACILITY_2,101,RE | Транзакт может в блок и занять устройство, если устройство еще не занято вытесняющим транзактом. Приоритеты транзактов игнорируются. Когда транзакт вытесняется все оставшееся в блоке ADVANCE время записывается в параметр 101 вытесненного транзакта. Вытесненный транзакт исключается из состязания за устройство и направляется к блоку с меткой FACILITY_2 |
PREEMPT FACILITY_1,PR, FACILITY_2 | Транзакт может зайти в блок и занять устройство, если устройство не занято транзактом с равным или более высоким приоритетом. Любой вытесненный транзакт не исключается из состязания за устройство. Вытесненные транзакты могут продолжать двигаться в процессе моделирования и в данном случае направляются к блоку с меткой FACILITY_2 |
RETURN FACILITY_1 | Если транзакт, занимающий устройство входит в блок RETURN, он освобождает данное устройство |
FUNAVAIL | |
FUNAVAIL | |
ENTER STORAGE_1,2 | Занятие в памяти двух мест одним транзактом |
LEAVE STORAGE_1б2 | Освобождение в памяти двух мест одним транзактом |
Дата добавления: 2015-01-13; просмотров: 951;