Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИМ -лабораторные_работы.doc
Скачиваний:
11
Добавлен:
01.07.2025
Размер:
5.01 Mб
Скачать

Транзакта, прерванные во время пребывания в блоке match

Допустим, что транзакт, переведенное в состояние синхронизации в блоке MATCH, ранее заняло некоторое устройство. Может случиться так, что во время пребывания этого транзакта в блоке MATCH, другое транзакт войдет в блок PREEMPT и вызовет прерывание первого транзакта на занимаемом им устройстве. Для прерванных в блоке MATCH сообщений выполняются точно такие же операции, как для сообщений, прерванных в блоке ASSEMBLE.

Вход прерванных сообщений в блок MATCH

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

Стандартным числовым атрибутом, связанным с описываемым оператором является:

МВ<номер блока> — флаг синхронизации. Возвращает 1, если транзакт, находящееся в блоке <номер блока> принадлежит к тому же семейству, что и текущее.

Блоки GATE М и GATE NM

Блоки GATE М и GATE NM проверяют значения логических условных операторов M и NM и, в зависимости от результатов проверки, управляют движением сообщений одного семейства. Блок GATE может задержать транзакт на входе, если не задан альтернативный выход. Логические условные операторы, записываемые во вспомогательном поле операции имеют следующие значения:

М — имеет значение "истина", если другое транзакт, принадлежащее к тому же семейству, что и транзакт, вошедшее в блок GATE или находящееся в блоке GATE, находится в состоянии синхронизации в блоке, номер которого определяется полем А блока GATE;

NM — имеет значение "истина", если в блоке с номером, определяемым значением поля А блока GATE, нет сообщений, принадлежащих к тому же семейству, что и транзакт, вошедшее в блок GATE или находящееся в блоке GATE.

Поле А задает номер блока, в котором проверяется выполнение условия синхронизации. Считается, что транзакт находится в состоянии синхронизации, если индикатор синхронизации установлен в единицу. Условие синхронизации выполняется в следующих трех случаях:

1) другое транзакт, принадлежащее к тому же семейству, что и транзакт в блоке GATE, является исходным транзактм в блоке ASSEMBLE, номер j которого является аргументом поля А блока GATE;

2) одно или более сообщений, принадлежащих к тому же семейству, что и транзакт в блоке GATE, участвует в процессе накопления в блоке GATHER, номер j которого является значением аргумента поля А блока GATE;

3) другое транзакт из того же семейства, что и транзакт в блоке GATE, находится в блоке MATCH, номер j которого является значением аргумента поля А блока GATE и ожидает поступления транзакта в сопряженный блок MATCH.

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

Наличие в поле В блока GATE аргумента, определяющего номер следующего блока, указывает на то, что транзакта не задерживаются на входе блока GATE. Если логический условный оператор (M или NM) имеет значение "истина", то транзакта переходят к следующему по номеру блоку; если значение атрибута — "ложь", то транзакт переходит к блоку, номер которого определяется значением аргумента поля В. Если номер следующего блока не задан, блок GATE будет задерживать транзакт на входе до тех пор, пока указанный логический условный оператор не примет значение "истина". Тогда транзакт может перейти к блоку, следующему по номеру за блоком GATE.

Транзакта, которые не могут войти в блоки GATE M и GATE NM, работающие в режиме условного входа, не удаляются из списка текущих событий, и интерпретатор пытается продвинуть эти транзакта при каждом просмотре. Таким образом, применение блоков GATE M и GATE NM в режиме условного входа может привести к увеличению времени счета. Следует отметить, что состояние других членов семейства, к которому принадлежит транзакт, не меняется, когда это транзакт входит в блоки GATE M и GATE NM, проверяющие одно из условий синхронизации.