Блоки, определяющие аппаратную категорию
Блоки, определяющие аппаратную категорию.
PREEMPT A,B,C,D,E
Фиксирует использование устройства на более высоком уровне, чем блок SEIZE, а так же приостанавливает обслуживание транзакта захватившего устройство ранее и предоставляет возможность прерванному транзакту захватить устройство после того, как закончится обслуживание прервавшего транзакта. Если при реализации данного блока оказывается, что одно прерывание уже произошло (устройство обслуживает прерывание), то данный блок не может выполниться, и транзакт задерживается до тех пор, пока не освободится устройство. Затем обслуживается новый прерывающий транзакт (а не прерванный).
Исключение: когда блок PREEMPT работает в режиме приоритетов (т.е. в поле В стоит мнемоническое значение PR), он подразумевает разрешение прерывания в зависимости от приоритетности транзактов.
Для последующей обработки прерванных транзактов существуют следующие возможности.
В поле С может быть описан какой-либо блок, на который будет передан прерванный транзакт. При этом прерванный транзакт будет претендовать на тот блок, который указан в поле А. Если прерванный транзакт находится в поле ADVANCE, то вычисляется остаток времени от момента прерывания до момента выхода из блока ADVANCE, и полученное значение помещается в параметр описанный в поле D. Если в поле Е данного блока стоит мнемоническое обозначение RE, то блок будет проводить обычные операции за исключением того, что прерванный транзакт больше не участвует в конфликте из-за захвата устройства.
RETURN A
Говорит об окончании прерывания. При входе в блок, задержки возникнуть не может, но закончить прерывание может только тот транзакт, который перед этим прошел блок PREEMPT, относящийся именно к данному устройству. Прерывание заканчивается в момент входа транзакта в блок RETURN.
Время, в течение которого транзакт находится в прерванном состоянии, не фиксируется.
Рекомендуемые материалы
На прерывания имеются следующие ограничения: нельзя производить прерывание транзакта, захватившего или прервавшего обслуживание других транзактов.
Имя_устройства, задержка, конец_прерывания.
FUNAVAIL A, B–H
Выполняет операции переводящие устройства в состояния недоступности. Недоступность устройства предупреждает прерывания или занятие устройства последующими сообщениями. При этом возможно задание специальных режимов работы для данного блока обеспечивающих окончание обслуживания последнего транзакта, передачу его другому блоку до обслуживания транзакта после окончания периода недоступности устройства.
В поле А – номер или диапазон номеров, переводимых в состояние недоступности
Поля B–H – для задания специальных режимов.
FAVAIL A
Делает доступным устройство с указанным номером или диапазоном в поле А. Отменяет все режимы, заданные блоком FUNAVAIL для данного устройства.
Пример.
FUNAVAIL 1-15
ADVANCE 30
FUNAVAIL 1-10
ADVANCE 15
FANAVAIL 11-15
Устройства 1-15 становятся доступными через 30 ед. времени, 11-15 через 45.
Элементы исследуемой системы предназначеные для хранения или обработки нескольких транзактов называются памятью. Для того чтобы описать память используют команду STORAGE. А изменение состояния памяти производится операторами ENTER, LEAVE, SUNAVAIL, SAVAIL.
ENTER A,B
Поле А – интерпретируется как номер памяти.
Поле В указывает число единиц памяти, занимаемых транзактом при входе в блок.
При выходе транзактов из блока ENTER никаких изменений в содержимом памяти не происходит. Если поле В пусто, то число единиц памяти полагают = 1. Если в памяти нет достаточного числа свободных единиц, чтобы удовлетворить запрос транзакта, то этот транзакт не может быть обслужен оператором ENTER. А если для последующего это число единиц достаточно, то он входит в память раньше первого.
LEAVE A,B
Поле А определяет имя памяти.
Поле В — число единиц, которые надлежит освободить при входе транзакта в блок.
Не всегда освобождается такое же число единиц памяти, какое было занято. Транзакт, освобождающий память, не обязательно должен был ее занимать. Однако необходимо, чтобы в сумме освобождалось столько единиц памяти, сколько было занято. Освобождать можно 0 единиц.
При реализации блока LEAVE задержка не возникает.
Пример.
ENTER 1,1
SEIZE 2
LEAVE 1,*2
// * - косвенная адресация (т.е. освободим ровно столькло сколько содеражалось в 2.
Реализуется занятие единицы памяти памяти №1, а затем происходит освобождение числа ед. памяти равное содержимому параметра 2.
SUNAVAIL A
Переводит накопитель в состояние недоступности, при котором транзакты не могут войти в накопитель. Уменьшение содержимого накопителя в этот период может происходить путем прохождения транзакта через блок LEAVE.
Номер пли диапазон номеров накопителей, переводимых в состояние недоступности, записывается в поле А.
SAVAIL A
Оператор SAVAIL переводит заданный накопитель из состояния недоступности в состояние доступности. Если данный накопитель уже доступен, то оператор SAVAIL никаких действий не выполняет.
Номер или номера накопителей, переводимых в состояние доступности, записываются в поле А.
Пример.
SUNAVAIL 2-5 - делаются недоступными накопители с именами 2, 3, 4, 5
SAVAIL 2-5 - делаются доступными накопители с именами 2, 3, 4, 5.
Логические ключи предназначены для описания элементов моделируемой системы, которые могут находиться только в двух состояниях. Статистика о работе ключей не собирается. Логические ключи не имеют СЧА (стандартных числовых атрибутов). Но зато они имеют два логических атрибута, принимающих 0 при не выполнении и 1 при выполнении следующих условий:
LR ключ в состоянии 0.
LS ключ в сотоянии 1.
В начале моделирования ключи могут быть установлены в состояние 1 с помощью команды INITIAL. А изменение состояние в процессе моделирования производится блоком LOGIC, который используется для установки логических ключей, состояние которых может быть запрошено в любом другом месте модели.
При входе в блок LOGIC задержки не возникает.
Состояние логического объекта, указанного в поле А изменяется одним из 3х способов:
LOGIC S – установлен
R – сброшен
Обратите внимание на лекцию "Учебно-методическое обеспечение дисциплины".
I – инвертирован
Вид изменения определяется соответствующим мнемоническим обозначением, идущим сразу за блоком LOGIC.
Пример:
LOGICS 4 // установить ключ 4
LOGICR 65 // сбросить ключ 65
LOGICI 4 // инвертировать ключ 4