Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по самому GPSS - для студентов.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
154 Кб
Скачать
☆

Моделирование сетей массового обслуживания

Модель разомкнутой СеМО (без косвенной адресации)

1,2 Узел – 1 канал,3 узел – 2 канала

node3 storage 2

rtime table mp$rtime,50000,20000,15

generate (exponential(14,0,10000))

mark rtime

met1 queue node1

seize node1

depart node1

advance (exponential(16,0,5000))

release node1

transfer 0.1,,met2

transfer 0.6,,out

queue node3

enter node3

depart node3

advance (exponential(17,0,6000))

leave node3

transfer ,met1

met2 queue node2

seize node2

depart node2

advance (exponential(18,0,6000))

release node2

transfer ,met1

out tabulate rtime

terminate 1

start 1000

Модель СеМО ЗАМКНУТОЙ (без косвенной адресации)

1,2 Устройства – одноканальные, 3-4 канала

Пример на стр.21 нашего пособия для ФПК №2

node3 storage 4

ctime table mp$ctime,50000,50000,15

generate ,,,4

mark ctime

met3 queue node3

enter node3

depart node3

advance (exponential(1,0,120000))

leave node3

tabulate ctime

mark ctime

test le tc$ctime,1000,out

met1 queue node1

seize node1

depart node1

advance (exponential(17,0,450))

release node1

transfer 0.08,,met3

queue node2

seize node2

depart node2

advance (exponential(18,0,750))

release node2

transfer ,met1

out terminate 1

start 1

Модель СеМО разомкнутой с косвенной адресацией

stor1 equ 1

stor2 equ 2

stor3 equ 3

node1 equ 1

node2 equ 2

node3 equ 3

tarr equ 10000

*

stor1 storage 1

stor2 storage 1

stor3 storage 2

*

tserv function p$node,l3

1,5000/2,6000/3,5000

node1 function rn1,d3

0.1,2/0.4,3/1,0

node2 function rn1,d1

1,1

node3 function rn1,d1

1,1

*

rtime table mp$rtime,20000,10000,11

*

generate (Exponential(1,0,tarr))

assign node,1

mark rtime

met1 queue p$node

enter p$node

depart p$node

advance fn$tserv,exponential(1,0,1))

leave p$node

assign node,fn*node

test e p$node,0,met1

tabulate rtime

terminate 1

Модель СеМО замкнутой с косвенной адресацией

stor1 equ 1

stor2 equ 2

stor3 equ 3

node1 equ 1

node2 equ 2

node3 equ 3

stor1 storage 1

stor2 storage 1

stor3 storage 4

tserv function p$node,l3

1,450/2,750/3,120000

node1 function RN1,d2

.92,2/1,3

node2 function RN1,d1

1,1

node3 function RN1,d1

1,1

ctime table mp$ctime,20000,20000,12

generate ,,,4

assign node,3

mark ctime

met1 queue p$node

enter p$node

depart p$node

advance fn$tserv,(Exponential(1,0,1))

leave p$node

assign node,fn*node

test e p$node,3,met1

tabulate ctime

mark ctime

test e tc$ctime,1000,met1

terminate 1

start 1

Моделирование захвата прибора

Ранее были рассмотрены средства GPSS World для моделирования дисциплин с относительным приоритетом. При этом если прибор занят, а на его вход поступает транзакт с более высоким приоритетом, чем у обслуживаемого транзакта, обслуживание продолжается. Вновь поступивший транзакт ставится в очередь последним в своем приоритетном классе.

Для моделирования дисциплины с абсолютным приоритетом, когда поступление заявки, имеющей более высокий приоритет, приводит к прерыванию обслуживания низкоприоритетной заявки и захвату прибора высокоприоритетной заявкой, в GPSS World имеются специальные блоки.

Для моделирования  захвата (прерывания)  одноканального устройства вместо блоков SEIZE и RELEASE используются соответственно блоки PREEMPT (захватить) и RETURN (вернуть). Блок PREEMPT имеет следующий формат:

 PREEMPT A,[B],[C],[D],[E]

В поле A указывается имя или номер устройства, подлежащего захвату. В поле B кодируется условие захвата. Если это поле пусто (режим прерывания), то захват возникает, если обслуживаемый транзакт сам не является захватчиком. Потенциальный захватчик – активный транзакт – не допускается в блок PREEMPT, если прибором уже обслуживается транзакт-захватчик. Это значит, что в данном режиме в каждый момент времени на одном приборе может быть прервано обслуживание только одного транзакта.

Если же в поле B записан операнд PR (приоритетный режим), то захват возникает, если приоритет транзакта-захватчика выше, чем приоритет обслуживаемого транзакта. При этом обслуживаемый транзакт может быть как обычным транзактом, так и транзактом, осуществившем захват прибора ранее. Таким образом, в приоритетном режиме прибор может быть захвачен любым числом транзактов.

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

Поля C, D и E определяют поведение транзактов, обслуживание которых было прервано. Поле C указывает имя блока, в который будет направлен прерванный транзакт. В поле D может быть указан номер или имя параметра прерванного транзакта, в который записывается время, оставшееся этому транзакту до завершения обслуживания на устройстве. При отсутствии операнда в поле E прерванный транзакт сохраняет право на автоматическое восстановление на устройстве по окончании захвата. Если же в поле E указан операнд RE, то транзакт теряет такое право.

Транзакт, захвативший прибор, освобождает его при входе в блок RETURN. Попытка какого-то другого транзакта освободить прибор воспринимается интерпретатором как ошибка.

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

Блоки PREEMPT и RETURN могут быть использованы для моделирования СМО с абсолютными приоритетами. В простейших случаях, при одном уровне захвата, в блоке PREEMPT используется единственный операнд A. При этом, прерванный транзакт переводится GPSSW из списка будущих событий в так называемый  список прерываний  устройства, а по окончании захвата устройства возвращается в список будущих событий с предварительно вычисленным временем занятия устройства для продолжения обслуживания.

Рассмотрим примеры использования блока PREEMPT:

PREEMPT Line1

(транзакт, вошедший в этот блок, приобретает право на использование прибора Line1, если прибор не захвачен ранее другим транзактом).

PREEMPT Line1, PR, Line2

(транзакт может войти в блок и захватить прибор Line1, если он уже не занят транзактом с равным или большим приоритетом; прерванный транзакт, оставаясь в цепи прерываний и претендуя на обслуживание прибором, может продолжить движение в модели).

Пример прерывания в приоритетном режиме (Боев, стр. 116):

GENERATE 5,,,3 ; генерируется только 3 транзакта

PRIORITY XN1

PREEMPT Rem1, PR

ADVANCE 11

RETURN Rem1

TEST E PR, 1, Met2

Met1 TERMINATE 1

Met2 TEST E PR, 2, Met4

Met3 TERMINATE 1

Met4 TERMINATE 1

В данном примере блок PREEMPT работает в приоритетном режиме, а операнд С не используется, т. е прерванный транзакт к другому блоку не направляется. Поэтому он после прерывания с автоматически сохраненным временем до конца обслуживания (дообслуживание) автоматически возвращается в список задержки, связанный с одноканальным устройством Rem1.

В модели генерируется только три транзакта, они дообслуживаются в порядке приоритета: сначала дообслуживается второй транзакт, а затем третий.