Лекция: Практическое занятие №9

Прерывания в обслуживании

Альтернативой операции «занять прибор» (SEIZE) служит операция «захватить прибор» (PREEMPT).

Захват прибора – при нем транзакт–захватчик не ждет, пока закончится обслуживание текущего транзакта в приборе, а немедленно прерывает этот процесс. Транзакт, обслуживание которого было временно прекращено (прерванный транзакт), ожидает окончания прерывания – момента, когда захватчик покинет прибор, и возвращается для «дообслуживания».

Для реализации захвата прибора в GPSS существуют блоки PREEMPT и RETURN.

Блок PREEMPT («Захватить») – транзакт, вошедший в этот блок, становится «захватчиком», т.е. может осуществлять прерывание указанного в операнде А прибора.

B – (по умолчанию B = 0) определяет вид захвата:

1)Одноуровневый захват (B = 0) – возможен, если только транзакт, обслуживание которого планируется прервать, сам не является «захватчиком»;

2)Многоуровневый захват (B = PR) – или прерывание по приоритету. Захват осуществляется, если приоритет «захватчика» выше, чем уровень приоритета прерываемого транзакта.

Блок RETURN («Вернуть») – транзакт-захватчик возвращает прибор прерванному транзакту.

Приоритет транзактов

Уровень приоритета транзактов может быть задан в момент их создания (операнд Е блока GENERATE, по умолчанию Е = 0 (самый низкий), E может принимать значения 0 ¸ 127).

Кроме того, приоритет транзакта может быть изменен динамически, т.е. при движении транзакта по модели.

БЛОК Priority(«Назначить приоритет») – транзакт, вошедший в этот блок, получает уровень приоритета, указанный в операнде А.

Проверить уровень приоритета любого транзакта в любой точке модели можно, воспользовавшись соответствующим СЧА.

PR 1 – уровень приоритета текущего транзакта.

еще рефераты
Еще работы по информатике