Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Прерывания в обслуживании
Альтернативой операции «занять прибор» (SEIZE) служит операция «захватить прибор» (PREEMPT).
Захват прибора – при нем транзакт–захватчик не ждет, пока закончится обслуживание текущего транзакта в приборе, а немедленно прерывает этот процесс. Транзакт, обслуживание которого было временно прекращено (прерванный транзакт), ожидает окончания прерывания – момента, когда захватчик покинет прибор, и возвращается для «дообслуживания».
Для реализации захвата прибора в GPSS существуют блоки PREEMPT и RETURN.
Блок PREEMPT («Захватить») – транзакт, вошедший в этот блок, становится «захватчиком», т.е. может осуществлять прерывание указанного в операнде А прибора.
√ B – (по умолчанию B = 0) определяет вид захвата:
1) Одноуровневый захват (B = 0) – возможен, если только транзакт, обслуживание которого планируется прервать, сам не является «захватчиком»;
2) Многоуровневый захват (B = PR) – или прерывание по приоритету. Захват осуществляется, если приоритет «захватчика» выше, чем уровень приоритета прерываемого транзакта.
Блок RETURN («Вернуть») – транзакт-захватчик возвращает прибор прерванному транзакту.
Приоритет транзактов
Уровень приоритета транзактов может быть задан в момент их создания (операнд Е блока GENERATE, по умолчанию Е = 0 (самый низкий), E может принимать значения 0 ¸ 127).
Кроме того, приоритет транзакта может быть изменен динамически, т.е. при движении транзакта по модели.
БЛОК Priority ( «Назначить приоритет» ) – транзакт, вошедший в этот блок, получает уровень приоритета, указанный в операнде А.
Проверить уровень приоритета любого транзакта в любой точке модели можно, воспользовавшись соответствующим СЧА.
PR 1 – уровень приоритета текущего транзакта.
Дата публикования: 2015-04-07; Прочитано: 253 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!