Имитационное моделирование на языке GPSS. Методическое пособие по дисциплине "Компьютерное моделирование". Алтаев А.А. - 37 стр.

UptoLike

Составители: 

37
Блок PREEMPT фиксирует использование устройства на более высоком уровне, чем
блок SEIZE, а также приостанавливает обслуживание транзакта, захватившего устройства
ранее, и дает возможность прерванному транзакту захватить устройство после того, как
закончится обслуживание прервавшего транзакта.
Если при выполнении блока PREEMPT оказывается, что одно прерывание уже
произошло (устройство обслуживает прерывание), то блок не выполняется и
соответствующий
транзакт задерживается до тех пор, пока не освободится устройство.
Затем обслуживается новый прерывающий транзакт» а не прерванный. Исключением из
описанных выше правил является случай, когда блок PREEMPT работает в режиме
приоритетов, т. е. в поле В стоит PR. При этом в действиях блока PREEMPT
предусмотрен случай разрешения прерывания на основании результата анализа
приоритетов
транзактов.
Для последующей обработки прерванных транзактов существуют следующие
возможности:
в поле С может быть описан какой-либо блок, на который будет передан прерванный
транзакт. При этом прерванный транзакт продолжает претендовать на данное
устройство;
если прерванный транзакт находится в блоке ADVANCE, то вычисляется остаток
времени (от момента прерывания до момента выхода из блока ADVANCE) и
полученное значение помещается в параметре, описанном в поле D блока PREEMPT. В
этом случае прерванный транзакт будет послан в блок, указанный в поле С блока
PREEMPT. Прерванный транзакт продолжает претендовать на данное устройство;
если в поле Е блока PREEMPT стоит запись RE, то будут производиться обычные
операции, за исключением того, что прерванный транзакт не участвует больше в
конфликте из-за захвата устройства.
Блок RETURN сигнализирует об окончании прерывания. При входе в блок задержка
возникнуть не может, но закончить прерывание может только тот транзакт, который перед
этим прошел
блок PREEMPT, относящийся именно к данному устройству. Прерывание
заканчивается в момент входа в блок RETURN. Время, в течение которого транзакт
находится в прерванном состоянии, не фиксируется. На прерывания имеются следующие
ограничения: нельзя производить прерывание транзакта, захватившего или прервавшего
обслуживание других транзактов более чем на 255 устройствах одновременно, задержка
прерванного транзакта начинается с момента
первого прерывания и оканчивается в
момент окончания последнего. Неважно, занято или свободно устройство, для которого
выполняется блок PREEMPT.
Рассмотрим пример использования блоков PREEMPT и RETURN:
PREEMPT 16
ADVANCE 150
RETURN 16
(т. е. реализуется прерывание на устройстве 16, задержка на 150 единиц, а затем
возврат устройства).
Блок FUNAVAIL
17
выполняет операции, переводящие устройство в состояние
недоступности. Недоступность устройства предупреждает занятие или прерывание
устройства последующими сообщениями. При этом возможно задание специальных
режимов работы блока FUNAVAIL, обеспечивающих окончание обслуживания
последнего транзакта, передачу его на обслуживание к другому блоку, дообслуживание
транзакта после окончания периода недоступности. Номер или диапазон номеров
устройств, переводимых в состояние
недоступности, записывается в поле А. Поля В...Н
предназначены для задания специальных режимов.
17
F - FACILITIES (устройства), UNAVAIL (сделать недоступным)
    Блок PREEMPT фиксирует использование устройства на более высоком уровне, чем
блок SEIZE, а также приостанавливает обслуживание транзакта, захватившего устройства
ранее, и дает возможность прерванному транзакту захватить устройство после того, как
закончится обслуживание прервавшего транзакта.
    Если при выполнении блока PREEMPT оказывается, что одно прерывание уже
произошло (устройство обслуживает прерывание), то блок не выполняется и
соответствующий транзакт задерживается до тех пор, пока не освободится устройство.
Затем обслуживается новый прерывающий транзакт» а не прерванный. Исключением из
описанных выше правил является случай, когда блок PREEMPT работает в режиме
приоритетов, т. е. в поле В стоит PR. При этом в действиях блока PREEMPT
предусмотрен случай разрешения прерывания на основании результата анализа
приоритетов транзактов.
   Для последующей обработки прерванных транзактов существуют следующие
возможности:
 • в поле С может быть описан какой-либо блок, на который будет передан прерванный
   транзакт. При этом прерванный транзакт продолжает претендовать на данное
   устройство;
 • если прерванный транзакт находится в блоке ADVANCE, то вычисляется остаток
   времени (от момента прерывания до момента выхода из блока ADVANCE) и
   полученное значение помещается в параметре, описанном в поле D блока PREEMPT. В
   этом случае прерванный транзакт будет послан в блок, указанный в поле С блока
   PREEMPT. Прерванный транзакт продолжает претендовать на данное устройство;
 • если в поле Е блока PREEMPT стоит запись RE, то будут производиться обычные
   операции, за исключением того, что прерванный транзакт не участвует больше в
   конфликте из-за захвата устройства.
   Блок RETURN сигнализирует об окончании прерывания. При входе в блок задержка
возникнуть не может, но закончить прерывание может только тот транзакт, который перед
этим прошел блок PREEMPT, относящийся именно к данному устройству. Прерывание
заканчивается в момент входа в блок RETURN. Время, в течение которого транзакт
находится в прерванном состоянии, не фиксируется. На прерывания имеются следующие
ограничения: нельзя производить прерывание транзакта, захватившего или прервавшего
обслуживание других транзактов более чем на 255 устройствах одновременно, задержка
прерванного транзакта начинается с момента первого прерывания и оканчивается в
момент окончания последнего. Неважно, занято или свободно устройство, для которого
выполняется блок PREEMPT.
   Рассмотрим пример использования блоков PREEMPT и RETURN:
 PREEMPT 16
 ADVANCE 150
 RETURN 16
   (т. е. реализуется прерывание на устройстве 16, задержка на 150 единиц, а затем
возврат устройства).
Блок FUNAVAIL17 выполняет операции, переводящие устройство в состояние
недоступности. Недоступность устройства предупреждает занятие или прерывание
устройства последующими сообщениями. При этом возможно задание специальных
режимов работы блока FUNAVAIL, обеспечивающих окончание обслуживания
последнего транзакта, передачу его на обслуживание к другому блоку, дообслуживание
транзакта после окончания периода недоступности. Номер или диапазон номеров
устройств, переводимых в состояние недоступности, записывается в поле А. Поля В...Н
предназначены для задания специальных режимов.


  17
       F - FACILITIES (устройства), UNAVAIL (сделать недоступным)
                                                                                   37