Прерывание работы устройства

Блок PREEMPT - захватить устройство. Транзакт, попадающий в блок PREEMPT, захватывает устройство, имя которого указано в поле А блока. Если при захвате устройства оно свободно, то транзакт просто занимает устройство, в этом случае блок PREEMPT работает аналогично блоку SEIZE. Если при входе транзакта в блок PREEMPT устройство занято другим транзактом, то в этом случае транзакт входит в блок PREEMPT, а устройство прерывает обслужива­ние занимающего его транзакта и переключается на обслуживание транзакта, вошедшего в блок PREEMPT. При этом из состояния "занято" устройство пере­ходит в состояние "захвачено". Когда транзакт, захватывающий устройство, ос­вободит его, устройство возобновит прерванное обслуживание другого транзакта и перейдет в состояние «занято».

Если прерываемый транзакт в момент прерывания находится в блоке ADVANCE, то, начиная с момента прерывания, отсчет времени пребывания транзакта в этом блоке прекращается до тех пор, пока не будет восстановлено обслуживание транзакта. Таким образом, в момент восстановления прерванного обслуживания транзакта время, оставшееся этому транзакту до выхода из блока ADVANCE, такое же, каким оно считалось непосредственно в момент прерыва­ния. Такое прерывание обслуживания называется прерыванием с последующим дообслуживанием.

Все транзакты, задержанные при обращении к устройству, упорядочива­ются по приоритету. Кроме поля А, в блоке PREEMPT могут быть заданы опе­ранды В, С, D и Е. Операнд В записывается в виде обозначения PR, задающего приоритетный режим работы блока. В этом режиме транзакт захватывает уст­ройство, если оно свободно или обслуживает менее приоритетный транзакт. Прерывание обслуживания менее приоритетного транзакта происходит с после­дующим дообслуживанием.

Для определения последующего движения прерванных транзактов ис­пользуются другие операнды. В поле С может быть указана метка какого-либо блока, на который будет передан прерванный транзакт. При этом прерванный транзакт продолжает претендовать на данное устройство. В поле D блока может быть задан номер параметра транзакта. Тогда, если прерванный транзакт нахо­дится в блоке ADVANCE, то вычисляется остаток времени обслуживания (вре­мя дообслуживания), и полученное значение помещается в параметр, заданный а поле D. Прерванный транзакт при этом будет послан в блок, указанный в поле С. Прерванный транзакт продолжает претендовать на данное устройство. Если в поле Е блока записано обозначение RE, то прерванный транзакт больше не бу­дет претендовать на данное устройство.

Блок RETURN -освободить устройство. Этот блок используется в паре с блоком PREEMPT. Если транзакт захватил устройство посредством блока PREEMPT, то освободить его он может только в блоке RETURN. Имя освобож­даемого устройства задается в поле А блока.

Пример 9

Оперативная память однопроцессорной ЭВМ разбита на три раздела с номерами 0,1 и 2. В каждом разделе находится по одной программе. Приоритет программы тем выше, чем меньше номер ее раздела. Программы вызываются на выполнение по требованиям пользователей, поступающим в случайные мо­менты времени.

Программа нулевого раздела вызывается с интервалами длительностью 10±8 с, время ее выполнения в зависимости от обрабатываемых данных равно 3±2 с. Программа первого раздела вызывается через каждые 2 мин и выполня­ется в течение 30±15 с. Через полчаса после начала поступления требований в нулевой и первый разделы начинают поступать требования во второй раздел с интервалами по 5±4 мин и обрабатываются 1 мин.

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

Промоделировать 1 ч описанного процесса. При моделировании подсчи­тать число поступивших и число обслуженных требований каждого вида

SIMULATE

* модель нулевого раздела

GENERATE 10,8,,,2

SAVE VALUE 1+,1                       подсчет требований                                                                                                               

PREEMPT PROC,PR                     захват процессора                                                                                            

ADVANCE 3,2

RETURN PROC                            освобождение процессора                                                                                                                            

SAVEVALUE 2+,1

TERMINATE

 

 

* модель первого раздела

GENERATE 120„„1

SAVEVALUE 3+,1

PREEMPT PROC,PR

ADVANCE 30,15

RETURN PROC

SAVEVALUE 4+,1

TERMINATE

* модель второго раздела

GENERATE 300,240,1800

SAVEVALUE 5+,1

PREEMPT PROC,PR

ADVANCE 60

RETURN PROC

SAVEVALUE 6+,1

TERMINATE

* таймер

GENERATE 3600

TERMINATE 1

START 1

END

 

 

Управляющие блоки

Блок SIMULATE означает начало имитации и указывает симулятору на необходимость выполнения моделирования. В этом блоке может использовать­ся поле А, в котором в этом случае указывается количество повторений модели­рования. Например, SIMULATE 5 показывает, что модель должна быть выпол­нена пять раз. По умолчанию модель выполняется один раз.

Блок START воспринимается как команда симулятору начать выполнение прочитанной части модели. В этом блоке в поле А также задается начальное значение счетчика транзактов. Здесь также может быть использовано поле В в значении NP, что означает - не выводить статистику по окончании моделирова­ния. Если задан блок

START 1,NP,

то подавляется вывод всей информации об устройствах, памятях, очередях, таб­лицах и ячейках.

В этом случае выводится только информация о переменных, указанных в блоках PRINT. Блок PRINT выводит информацию о переменных, СЧА которых указано в поле А этого блока.

В поле С блока START можно задать начальное значение счетчика про­межуточной печати. Содержимое этого счетчика уменьшается при входе тран­зактов в блок TERMINATE так же, как содержимое счетчика в поле А. Когда значение счетчика в поле С становится равным нулю или отрицательным, про­изводится выдача статистики в обычном формате и восстанавливается началь­ное значение этого счетчика. После этого выполнение модели продолжается. Например, при использовании карты

START 5„1

совместно с блоком TERMINATE 1 выдача статистики в процессе моделирова­ния будет произведена 5 раз.

Блок RESET предназначается для стирания в заданный момент времени статистики о предыстории процесса. Достигнутое состояние объектов при этом сохраняется.

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

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

Блок CLEAR переводит всю модель - всю статистику и все объекты - в исходное состояние. Исключением является лишь датчик случайных чисел - он не возвращается к начальному значению. Применение блока CLEAR позволяет осуществить независимые реализации моделируемого случайного процесса.

 

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: