Метод построения модели
В качестве метода построения модели функционирования класса персональных компьютеров используется имитационное моделирование. Для моделирования на GPSS надо определить, какие элементы GPSS надо использовать для удовлетворения условий модели.
В данном случае существуют следующие условия. Имеется PK1,PK2,PK3, при моделировании которых используются обслуживающие устройства (SEIZE). Входной поток отождествляется с транзактами, которые передвигаются в системе. Очередями (ENTER) служат очереди BUF1, KAN. Очередью (QUEUE) служит очередь BUF2.
Время моделирования задаётся с помощью оператора GENERAT
Блок – схема
GОТ
Решённые
задачи
Транзакты
реж. недост.
Отказы, если KANал занят, или в реж. недоступности
Отказы, если все места в BUF1 заняты и транзактам, пре-
рванным по приоритету
normal(2,20,3)
normal(2,20,3)
normal(2,20,3)
normal(2,20,3)
Листинг
VREMA TABLE M1,270,50,40
INITIAL X1,250 ;среднее время работы PK1
INITIAL X2,500 ;среднее время работы PK2
INITIAL X3,3 ;число каналов в устройстве KAN
BUF1 STORAGE 2 ;количество мест в очереди BUF1 равно 2
KAN STORAGE 3 ;количество каналов устройства KAN равно 3
GENERATE (GAMMA(1,0,50,4)) ;генерация транзактов 0-го приоритета
GATE SNF BUF1,OTKAZ1 ;если очередь не свободна, идем к OTKAZ1
ENTER BUF1 ;занимаем очередь BUF1
SEIZE PK1 ;занимаем устройство PK1
LEAVE BUF1 ;покидаем очередь BUF1
ADVANCE (NORMAL(1,X1,50)) ;работа устройства PK1
RELEASE PK1 ;покидаем устройство PK1
GATE SNF KAN,OTKAZ2 ;если устройство KAN не свободно, идем к OTKAZ2
GATE SV KAN,OTKAZ3 ;если устройство KAN заблокировано, идем к OTKAZ3
ENTER KAN ;занимаем в устройстве KAN 1 место
ADVANCE (NORMAL(1,150,25)) ;работа устройства KAN
LEAVE KAN ;покидаем устройство KAN
QUEUE BUF2 ;занимаем очередь BUF2
TRANSFER BOTH,PPK2,PPK3 ;пытаемся занять устройство PK2, если не
;удается, то пытаемся занять устройство
;PK3. Если и это не получается, то ждем
;освобождения одного из двух устройств, и
;занимаем устройство, которое
;освободилось первым.
GENERATE (NORMAL(1,250,50)),,,,1 ;генерация транзактов 1-го приоритета
GATE SNF BUF1,OTKAZ4 ;если очередь не свободна, идем к OTKAZ4
ENTER BUF1 ;занимаем очередь BUF1
PREEMPT PK1,PR,OTKAZ5,,RE ;занимаем устройство PK1, если там
;обслуживался транзакт 0-го приоритета,
;то этот транзакт отправляется к OTKAZ5
LEAVE BUF1 ;покидаем очередь BUF1
ADVANCE (NORMAL(1,X1,50)) ;работа устройства PK1
RETURN PK1 ;покидаем устройство PK1
TEST L S$KAN,(X3-1),OTKAZ6 ;если свободных каналов устройства KAN
;меньше 2, то идем к OTKAZ6
GATE SV KAN,OTKAZ7 ;если устройство KAN заблокировано, то
;идем к OTKAZ7
ENTER KAN,2 ;занимаем в устройстве KAN 2 место
ADVANCE (NORMAL(1,150,25)) ;работа устройства KAN
LEAVE KAN,2 ;покидаем устройство KAN
QUEUE BUF2 ;занимаем очередь BUF2
TRANSFER BOTH,PPK2,PPK3 ;пытаемся занять устройство PK2, если не
;удается, то пытаемся занять устройство
;PK3. Если и это не получается, то ждем
;освобождения одного из двух устройств,
;и занимаем устройство, которое
;освободилось первым.
PPK2 SEIZE PK2 ;занимаем устройство PK2
DEPART BUF2 ;покидаем очередь BUF2
ADVANCE (EXPONENTIAL(1,0,X2)) ;работа устройства PK2
RELEASE PK2 ;покидаем устройство PK1
TABULATE VREMA ;табулируем время
TEST L (N$RESH1+N$RESH2),499,KONEC ;если количество решенных задач
;равно 499, то идем к KONEC
RESH1 TERMINATE ;транзакт выводится из системы
PPK3 SEIZE PK3 ;занимаем устройство PK3
DEPART BUF2 ;покидаем очередь BUF2
ADVANCE 75,25 ;работа устройства PK3
RELEASE PK3 ;покидаем устройство PK1
TABULATE VREMA ;табулируем время
TEST L (N$RESH1+N$RESH2),499,KONEC ;если количество решенных задач
;равно 499, то идем к KONEC
RESH2 TERMINATE ;транзакт выводится из системы
KONEC SAVEVALUE VEROYT,V$VICH ;вычисляем вероятность отказа
TERMINATE 1
GENERATE 5000,1000 ;генерация транзактов блокировки
SUNAVAIL KAN ;блокируем устройство KAN
ADVANCE 50,10
SAVAIL KAN ;разблокируем устройство KAN
TERMINATE
OTKAZ1 TERMINATE ;отказы из-за занятости BUF1(транзакт 0-го приоритета)
OTKAZ2 TERMINATE ;отказы из-за занятости KAN(транзакт 0-го приоритета)
OTKAZ3 TERMINATE ;отказы из-за недоступности KAN(транзакт 0-го приоритета)
OTKAZ4 TERMINATE ;отказы из-за занятости BUF1(транзакт 1-го приоритета)
OTKAZ5 TERMINATE ;отказы транзактам 0-го приоритета в дообслуживании
OTKAZ6 TERMINATE ;отказы из-за занятости KAN(транзакт 1-го приоритета)
OTKAZ7 TERMINATE ;отказы из-за недоступности KAN(транзакт 1-го приоритета)
START 1
