Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Ввод транзактов в список пользователя в безусловном режиме





В безусловном режиме, блок LINK имеет формат записи: [имя] LINK A,B

Операндом А задается имя или номер списка пользователя, в который безусловно помещается транзакт, вошедший в блок LINK.

Операнд B определяет, в какое место списка пользователя следует поместить вошедший транзакт. Допустимые значения:

  • FIFO - транзакт помещается в конец списка;
  • LIFO - транзакт помещается в начало списка;
  • PR - транзакты помещаются по убыванию приоритета;
  • Р - транзакты помещаются позади тех транзактов, значения соответствующего параметра которых меньше (в порядке возрастания значения параметра);
  • М1 - транзакты помещаются в порядке возрастания относительного времени их пребывания в модели.

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

LINK 3,FIFO

помещает транзакты в конец списка пользователя с номером 3 в порядке их поступления в блок. Блок

LINK Otst,P$Pol

помещает транзакты в список пользователя с именем Otst, упорядочивая их по возрастанию значения параметра с именем Pol.

Условия, при которых транзакт помещается в список пользователя, в безусловном режиме проверяются средствами, предусмотренными разработчиком модели. Например, направить транзакт в список пользователя в случае занятости ОКУ можно так, как показано ниже.

...

GATE NU Rem1,Wait

SEIZE Rem1

...

Wait LINK Otst,FIFO

...

Если ОКУ Rem1 занято, блок GATE не впускает транзакт в блок SEIZE, а направляет его в блок LINK с именем Wait, и тран-закт вводится в конец списка пользователя с именем Otst.

В том же фрагменте модели список пользователя можно разместить и иначе.

...

GATE U Rem1,Met1

LINK Otst,FIFO

Met1 SEIZE Rem1

...

Здесь ОКУ Rem1 проверяется на занятость. Если ОКУ занято, транзакт проходит к следующему блоку LINK и помещается в список пользователя с именем Otst. В случае незанятости ОКУ, транзакт направляется к блоку SEIZE с меткой Met1 и занимает свободное ОКУ.

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

Emk EQU 10

...

GATE NU Rem1,Wait

SEIZE Rem1

...

Wait TEST L CH$Otst,Emk,Term1

LINK Otst,LIFO

Если ОКУ Rem1 занято, то блок GATE не впускает транзакт в блок SEIZE, а направляет его в блок TEST с меткой Wait, находящийся перед блоком LINK. Если текущее содержимое списка пользователя с именем Otst меньше заданной емкости Emk, тран-закт проходит в список пользователя, в противном случае направляется к блоку с меткой Term1.

Приведем еще возможный вариант этого же фрагмента модели.

Emk EQU 10

...

GATE U Rem1,Met1

TEST L CH$Otst,Emk,Term1

LINK Otst,LIFO

Met1 SEIZE Rem1

Если ОКУ Rem1 занято, блок GATE пропускает транзакт к блоку TEST. Если текущее содержимое списка пользователя с именем Otst меньше заданной емкости Emk, транзакт проходит в список пользователя, в противном случае направляется к блоку с меткой Term1. Если ОКУ незанято, транзакт направляется к блоку SEIZE с меткой Met1 и занимает свободное ОКУ Rem1.







Date: 2015-07-17; view: 470; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.013 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию