Leave А, в

Операнды:

А – имя или номер памяти. Обязательный операнд. Допустимые значения: Name, PosInteger, ParenthesizedExpresston, SNA или SNA'Parameter.

B – количество элементов памяти. Значение по умолчанию – 1. Необязательный операнд. Допустимые значения: Null, Name, PosInteger, Parenthesi-
zedExpression, SNA
или SNA'Parameter.

Действие:

Когда транзакт входит в блок LEAVE, операнд А вычисляется и округляется, и отыскивается соответствующая память. Если такой объект не существует, то происходит остановка по ошиб­ке. Памяти должны определяться командами STORAGE.

Количество освобождаемых единиц памяти определяется операндом В. Если В не используется, то он при­нимается равным 1.

Затем количество доступных элементов памяти увеличивается на значение операнда В. Если результат превосходит исходную емкость памяти, то происходит остановка по ошибке.

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

Когда память становится доступной, список задержки памяти просматривается в порядке убывания приоритетов, и определяются транзакты, потребность в обслуживании которых может быть удовлетворена. Используется правило «first-fit-with-skip» – «первый подходящий с пропус­ками». Успешным транзактам позволяется войти в блок ENTER, который отказывал им во входе, затем они заносятся в список текущих событий после всех транзактов, имеющих тот же приоритет. Это происходит до того, как текущий активный транзакт, находящийся в блоке LEAVE, продолжит движение в процессе моделирования. Таким образом, ни один транзакт не может изменить порядок следования транзактов, ожидающих в списке задержки памяти. Это можно посмотреть в окне «Blocks» («блоки»). Здесь видно как транзакт входит в блок ENTER и задерживается там. После этого текущий активный транзакт в блоке LEAVE продолжает свое движение.

12. Блок ADVANCE задерживает продвижение транзакта на заданный отрезок модельного времени:

ADVANCE A, B

13. Выход из канала обслуживания. После обслуживания требование выходит из канала обслуживания, и должен появиться сигнал об освобождении последнего. Это делается с помощью операто­ра RELEASE (Освободить):

RELEASE

Блок RELEASE освобождает занятое устройство или исключает вытесненный транзакт из состязания за устройство:


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



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