1. Описание
1.1 Таблица интерпретаций
Наименование |
Тип |
ОСНОВНОЙ ЭВМ |
УСТРОЙСТВО, ОЧЕРЕДЬ |
РЕЗЕРВНЫЙ ЭВМ |
УСТРОЙСТВО, ОЧЕРЕДЬ |
Данные |
Транзакт/Агент |
Сигнал управление |
Транзакт/Агент |
Сигнал работоспособности |
Транзакт/Агент |
Сигнал прерывание |
Транзакт/Агент |
1.2 Концептуальная схема
2. Реализация на gpss world
INITIAL x$Transact,10 ; время прибытие (нормальный режим)
INITIAL x$TransactMdf,2 ; время разброса (нормальный режим)
INITIAL x$Process_Temp,1 ; Темп Процесса (ТП), если ТП==1 то ЭВМ работает в обычном режиме, иначе в заторможенном
INITIAL x$SlowModeTime,0 ; количество транзактов пребывавших в заторможенном режиме
INITIAL x$SlowModeTimeQnt,0 ; общее количество время работы заторможенного режима
GENERATE x$Transact,x$TransactMdf ; на ЭВМ каждые 10+-2 секунд поступает сигнал (изначально)
TEST NE x$Process_Temp,1,NORMAL_MODE ; если [ТП == 1] то прыгнуть в метку Normal Mode, иначе продолжить
* заторможенный режим ---> увеличение интенсивности поступления данных в 2 раза
SLOW_MODE SAVEVALUE Transact,20 ; время прибытие 20 секунд вместо 10
SAVEVALUE TransactMdf,4 ; время разброса 4 секунд вместо 2
ASSIGN SlowModePace,1 ; заторможенный режим установить в 1
TRANSFER ,Skip
* обычный режим ---> УП сигнал равен единице
NORMAL_MODE SAVEVALUE Transact,10 ; интенсивность поступления данных изначальный, т.е нормальный
SAVEVALUE TransactMdf,2
ASSIGN SlowModePace,0 ; заторможенный режим установить в 0 (false)
* установка ТП на число отличное от единицы (фактически false)
Skip SAVEVALUE Process_Temp,0
* проверка доступности ЭВМ
GATE FNV MAIN,EVM1_L ; если основной ЭВМ недоступен проверить доступность резервной ЭВМ
GATE FNV REZ,EVM_2L ; если резервной ЭВМ также недоступен то отклонить транзакт
TRANSFER ,Rejected ; отказанные транзакты
* основной ЭВМ
EVM1_L QUEUE MAIN_Q ; занимаем очередь на основной ЭВМ
SEIZE MAIN ; занимаем устройство ЭВМ
DEPART MAIN_Q ; покинуть очередь на основной ЭВМ
ADVANCE 3 ; обработка данных 3 секунды
RELEASE MAIN ; освободить основной ЭВМ
SPLIT 1,REG_SIGNAL_L ; отправка управляющего сигнала после обработки
TRANSFER ,EVM1_CHECK ; удалить обработанный транзакт
* резервный ЭВМ
EVM_2L QUEUE REZ_Q ; занимаем очередь на резервный ЭВМ
SEIZE REZ ; занять устройство резервной ЭВМ
DEPART REZ_Q ; покинуть очерель на резервный ЭВМ
ADVANCE 3 ; обработка данных 3 секунды
RELEASE REZ ; освободить резервный ЭВМ
TRANSFER ,EVM2_CHECK ; удалить обработанный транзакт
* основной ЭВМ каждые 30 с посылает сигнал о работоспообности
GENERATE 30
GATE FNV MAIN,Blocking_Rez ; если основной ЭВМ не работает тогда
FAVAIL REZ ; сделать резервный ЭВМ доступным
ADVANCE 5 ; воостановление резервной ЭВМ занимает 5 секунд
TERMINATE ; удаление сигнала о работоспособности
Blocking_Rez FUNAVAIL REZ ; иначе резервный ЭВМ блокируется
Work_Check TERMINATE ; удаление сигнала о работоспособности
* отказы ЭВМ
REFUSE_SIGNAL GENERATE 300,30 ; происходит каждые 300+-30 секунд
FUNAVAIL MAIN ; сделать основной ЭВМ недоступным
ADVANCE 100 ; на 100 квант времени
FAVAIL MAIN ; сделать основной ЭВМ доступным
TERMINATE
* управляющй сигнал поступает в эту метку
REG_SIGNAL_L SAVEVALUE Process_Temp,1 ; управляющий сигнал устанавливает ТП в единицу
TERMINATE
* удачно обработанные данные основным ЭВМ
EVM1_CHECK TEST E P$SlowModePace,1,EVM1_HANDLED ; если транзакт имеет параметр SlowMode=1 продолжить, иначе удалить
SAVEVALUE SlowModeTime+,1 ; увеличить счётчик транзактов обслуженных в заторможенном режиме
TERMINATE
EVM1_HANDLED TERMINATE ; удачно обработанные сигнал основным компьютером
* удачно обработанные данные резервным ЭВМ
EVM2_CHECK TEST E P$SlowModePace,1,EVM2_HANDLED ; если транзакт имеет параметр SlowMode=1 продолжить, иначе удалить
SAVEVALUE SlowModeTime+,1 ; увеличить счётчик транзактов обслуженных в заторможенном режиме
TERMINATE
EVM2_HANDLED TERMINATE ; удачно обработанные сигнал резервны компьютером
* определение общее время активности заторможенного режима
GENERATE 1 ; каждую секунду проверять
TEST E x$Transact,20,Skip2 ; если время прибытие транзакта 20 секунд продолжить, иначе удалить
SAVEVALUE SlowModeTimeQnt+,1 ; увеличить счётчик времени заторможенного режима на единицу
Skip2 TERMINATE ; удаление сигнала проверки
* отказанные транзакты
Rejected TERMINATE
GENERATE 3600
TERMINATE 1
START 1