Система передачи данных в GPSS World

Система передачи данных обеспечивает передачу пакетов данных из пункта А в пункт C через транзитный пункт В. В пункт А пакеты поступают через 10± 5 мс. Здесь они сохраняются в накопителе c максимальной вместительностью 25 пакетов и c равной вероятностью передаются по одной из двух линий: AB1 – за 20 мс; AB2 – за 20±5 мс. В пункте В пакеты снова буферизируются в накопителе c максимальной вместительностью 20 пакетов и дальше передаются по линии BC1 за 20±3 мс и по линии BC2 за 25 мс. Причем пакеты, которые передавались по AB1, поступают в BC1, а те, которые передавались по AB2, – в BC2. При достижении предельного значения количества пакетов в накопителе (максимальной вместительности) пакет, который пытается попасть в этот накопитель, уничтожается. Промоделировать работу системы на протяжении 1 мин. Оценить вероятность уничтожения пакетов.

Листинг программы:
;ГЕНЕРАЦИЯ ПАКЕТОВ
 GENERATE 10,5 ;поступление пакетов через 5-15 мс или 10+/-5
 TEST L Q1,25,met1 ;если очередь на передачу меньше 25 то вниз, иначе на метку met1

;ПЕРЕДАЧА от A к B
 QUEUE 1 ;занять очередь на передачу от A к B
 TRANSFER BOTH,metAB2 ;
;Линия AB1
 SEIZE AB1 ;занять устройство - линию AB1
 DEPART 1 ;выйти из очереди
 ASSIGN 1,1 ;в первый параметр транзакта записать 1
 ADVANCE 20 ;передача по линий АВ1 - за время 20 мс
 RELEASE AB1 ;освободить устройство - линию AB1
 TRANSFER ,met2 ;перейти к пердачи от B к C

;Линия AB2
metAB2 SEIZE AB2 ;занять устройство - линию AB2
 DEPART 1 ;выйти из очереди
 ASSIGN 1,2 ;в первый параметр транзакта записать 2
 ADVANCE 20,5 ;передача по линий АВ2 - за время 15-25 мс
 RELEASE AB2 ;освободить устройство - линию AB1

;ПЕРЕДАЧА от B к C
met2 TEST L Q2,20,met3 ;если очередь на передачу меньше 20 то вниз, иначе на метку met3
 QUEUE 2 ;занять очередь на передачу от B к C
 TEST E P1,1,metBC2 ;проверить 1й параметр транзакта. Если =1 то вниз, иначе к метке metBC2
;Линия BC1
 SEIZE BC1 ;занять устройство - линию СB1
 DEPART 2 ;выйти из очереди
 TEST L Q2,15,RezervBC1 ;если очередь на передачу меньше 20 то вниз, иначе RezervBC1
 ADVANCE 20,3 ;передача по линии ВС1 (за 20 ± 3 мс)
 savevalue countStandartMode+,1 ;счетчик использования стандартного режима передачи
 RELEASE BC1 ;освободить устройство - линию СB1
 TERMINATE

RezervBC1 ADVANCE 15 ;резервная аппаратура, время передачи снижается до 15 мс.
 savevalue countRezervMode+,1 ;счетчик использования резервного режима передачи
 RELEASE BC1 ;освободить устройство - линию СB1
 TERMINATE 

;Линия BC2
metBC2 SEIZE BC2
 DEPART 2 
 TEST L Q2,15,RezervBC2
 ADVANCE 25 ;передача по линии ВС1 (за 25 мс)
 savevalue countStandartMode+,1
 RELEASE BC2 
 TERMINATE

RezervBC2 ADVANCE 15 ;резервная аппаратура, время передачи снижается до 15 мс.
 savevalue countRezervMode+,1
 RELEASE BC2 
 TERMINATE

met1 savevalue countFullBufferA+,1 ;счетчик отказов на постановку в очередь на передачу AB
 TERMINATE
met3 savevalue countFullBufferB+,1 ;счетчик отказов на постановку в очередь на передачу BС
 TERMINATE
 
;ЗАВЕРШАЮЩИЙ ТРАНЗАКТ
 GENERATE ,,,1 ;генерация только одного транзакта
 TEST E (x$countStandartMode+x$countRezervMode+x$countFullBufferA+x$countFullBufferB),500 
;когда сумма переменных станет = 500 транзакт пройдет вниз, иначе проверка продолжится
 SAVEVALUE VeroyatnostRezerva,(x$countRezervMode/(x$countStandartMode+x$countRezervMode)) ;вероятность использования резерва
 TERMINATE 1

start 1
Онлайн всего: 1
Гостей: 1
Пользователей: 0

STUDLAB Сообщить про опечатку на сайте