Аппаратная категория

В аппаратную категорию входят объекты трёх типов: устройства, памяти и логические ключи.

Устройство – это объект, который может находиться в одном из двух состояний: либо быть свободным, либо занятым только одним транзактом. Изменять состояние устройства можно с помощью следующих блоков:

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,G записываются символы RE (для каждой категории, независимо от других). В этом случае в операндах C,F,H указываются метки, к которым направляются данные категории транзактов. В операнде D можно указать идентификатор параметра, в который будет записано время, оставшееся на дообслуживание для прерываемого транзакта.

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

Состояние памяти могут менять следующие четыре блока:

ENTER A,B

LEAVE A,B

SUNAVAIL A

SAVAIL A

Первый блок дает указание занять память, второй – освободить. Третий устанавливает режим недоступности, четвертый восстанавливает режим доступности. В операнде А всех блоков указывается идентификатор памяти. В операнде В первых двух блоков можно указать количество занимаемых и освобождаемых мест памяти одним транзактом. По умолчанию принимается один транзакт. Для использования памяти требуется обязательно её определить командой NAME STORAGE A, в поле метки которой указывается имя памяти, а в операнде А количество мест в памяти. Если количество мест не ограничено, то в операнде А записывается какое-то большое число, например, 1000000.