0 / 0 / 0
Регистрация: 09.12.2016
Сообщений: 3
|
|
1 | |
Смоделировать процесс работы системы13.01.2017, 11:52. Показов 2311. Ответов 3
Метки нет (Все метки)
В специализированной вычислительной системе периодически выполняются три вида заданий, которые характеризуются разными уровнями приоритета: нулевым, первым, вторым. Оператор случайно выбирает задние и запускает его при помощи сенсорного экрана через 50 ± 10 с. Далее задание выполняется на сервере. Задание с нулевым приоритетом выполняется в течение 50 ± 10 с, с первым – 60± 10 с, со вторым – 70± 10 с. Задания более высокого приоритета прерывают выполнение заданий более низкого приоритета. Результаты обработки задания выводятся на печать без прерываний в течение 30 ± 10 с. Далее оператор анализирует результат в течение 60 ± 20 с. При работе сенсорного экрана, выводе результатов на печать и анализе результатов сервер не используется. Смоделировать процесс работы системы при условии, что задания второго уровня приоритета выполняются 100 раз. Подсчитать число выполнения остальных заданий и определить коэффициенты загрузки технических средств системы.
Нашла корректную программу к данной задаче, но там в условии задания с разными приоритетами выполняются с одинаковым временем. Не могу понять, как сделать, чтобы было свое время для каждого приоритета (Задание с нулевым приоритетом выполняется в течение 50 ± 10 с, с первым – 60± 10 с, со вторым – 70± 10 с). Пожалуйста, помогите! Код
GENERATE ,,,3 ;создание трех транзактов-задач PRIORITY XN1 ;присвоить приоритет согласно номеру транзакта (1..3) ASSIGN KOL_VO,0 ;количество циклов CYCLE QUEUE Q_DISPL SEIZE DISPL ;занятие дисплея DEPART Q_DISPL ADVANCE 50,10 RELEASE DISPL ; освобождение дисплея QUEUE Q_CPU ;формирование очереди к процессору PREEMPT CPU,PR;захват транзактом процессора по приоритету DEPART Q_CPU ;освобождение очереди ADVANCE 50,10 ;работа процессора RETURN CPU ;снятие прерывания устройства QUEUE Q_PRINT SEIZE PRINT ;занятие принтера DEPART Q_PRINT ADVANCE 30,10 RELEASE PRINT QUEUE Q_ANALIZ ;формирование очереди на анализ SEIZE ANALIZ DEPART Q_ANALIZ ADVANCE 60,20 RELEASE ANALIZ ASSIGN KOL_VO+,1 ; количество циклов +1 TEST E ((PR'E'3)'AND'(P$KOL_VO'E'100)),1,CYCLE ;проверка если приоритет=3 И колиество циклов = 100, то это правда и заканчивается моделирование (ниже), иначе продолжаем в начало TERMINATE 1 START 1
0
|
13.01.2017, 11:52 | |
Ответы с готовыми решениями:
3
Смоделировать процесс финансовой деятельности человека Смоделировать процесс обработки деталей на станке Смоделировать процесс обработки на станке 100 деталей Смоделировать процесс обработки на станке 100 деталей |
1816 / 1030 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
|
|
13.01.2017, 12:58 | 2 |
Огорчу вас, приведённая вами модель некорректна.
Заявка формируется блоком GENERATE и движется строчка за строчкой по программе. Получается что по программе формируются заявки с тремя приоритетами и идут последовательно, причём первая идёт с приоритетом = 1, затем заявка с приоритетом 3, потом2 (связано это с той логикой что первая входящая заявка застаёт свободным устройство и поступает на обслуживание, две другие заявки уже попадают в очередь согласно приоритету. Далее по программе получается что каждая из трёх заявок обслуживается в каждой подсистеме, задержка соотвествующая 50,10 50,10 30,10 60,20 - по условия задачи не так + оговаривается что сервер не всегда задействуется. Берите книжку Кудрявцев Основы моделирования на GPSS World - разбирайте простые примеры, стройте свою модель с 0. Добавлено через 11 минут Конкретно по заданному вопросу. Пример этому представлен в строчке кода Код
TEST E ((PR'E'3)'AND'(P$KOL_VO'E'100)),1,CYCLE ;проверка если приоритет=3 И колиество циклов = 100, то это правда и заканчивается моделирование (ниже), иначе продолжаем в начало для определение времени задержки можно использовать функцию FUNCTION или сложные логические выражения. например Код
ADVANCE ((PR'E'0)#50+(PR'E'1)#60) ; задержка = 0 если приоритет=0, задержка = 60 если приоритет = 1
0
|
0 / 0 / 0
Регистрация: 09.12.2016
Сообщений: 3
|
|
16.01.2017, 22:02 [ТС] | 3 |
Подставила данный фрагмент в программу (если я все правильно поняла):
Код
QUEUE Q_CPU ;формирование очереди к процессору PREEMPT CPU,PR;захват транзактом процессора по приоритету DEPART Q_CPU ;освобождение очереди ADVANCE ((PR'E'0)#50+(PR'E'1)#60) ;работа процессора ADVANCE RETURN CPU ;снятие прерывания устройства не знаю, как исправить эту ошибку, пробовала разделить по приоритетам на примере данной программы(из учебника), но не смогла довести до ума Код
* МОДЕЛЬ НУЛЕВОГО РАЗДЕЛА: GENERATE 50,10,,,0 ;ПЕРВЫЙ ПОТОК ТРЕБОВАНИЙ SAVEVALUE 1+,1 ;ПОДСЧЕТ ИХ ЧИСЛА PREEMPT 1,PR ;ЗАХВАТ ПРОЦЕССОРА ADVANCE 50,10 ;ВЫПОЛНЕНИЕ ТРЕБОВАНИЯ RETURN 1 ;ОСВОБОЖДЕНИЕ ПРОЦЕССОРА SAVEVALUE 2+,1 ;ПОДСЧЕТ ОБСЛУЖЕННЫХ ТРЕБ. TERMINATE * МОДЕЛЬ ПЕРВОГО РАЗДЕЛА: GENERATE 50,10,,,1 ;ВТОРОЙ ПОТОК ТРЕБОВАНИЙ SAVEVALUE 3+,1 ;ПОДСЧЕТ ИХ ЧИСЛА PREEMPT 1,PR ;ЗАХВАТ ПРОЦЕССОРА ADVANCE 60,10 ;ВЫПОЛНЕНИЕ ТРЕБОВАНИЯ RETURN 1 ;ОСВОБОЖДЕНИЕ ПРОЦЕССОРА SAVEVALUE 4+,1 ;ПОДСЧЕТ ОБСЛУЖ-Х ТРЕБ-Й TERMINATE * МОДЕЛЬ ВТОРОГО РАЗДЕЛА: GENERATE 50,10,,,2;ТРЕТИЙ ПОТОК ТРЕБОВАНИЙ SAVEVALUE 5+,1 ;ПОДСЧЕТ ИХ ЧИСЛА PREEMPT 1,PR ;ЗАХВАТ ПРОЦЕССОРА ADVANCE 70,10 ;ВЫПОЛНЕНИЕ ТРЕБОВАНИЯ RETURN 1 ;ОСВОБОЖДЕНИЕ ПРОЦЕССОРА SAVEVALUE 6+,1 ;ПОДСЧЕТ ОБСЛУЖ-Х ТРЕБ-Й TERMINATE * ОСТАНОВ. МОДЕЛИ ПРИ T=1 ЧАСУ = 3600 СЕКУНДАМ: GENERATE 3600 TERMINATE 1 START 1 Отличный совет, но боюсь времени на это не найдется. Пытаюсь разобраться сама, но это мой первый опыт работы с GPSS и очень ограниченно время
0
|
1816 / 1030 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
|
|
17.01.2017, 07:43 | 4 |
Вы должны это выражение переделать под своё задание времени - указан всего лишь пример.
PR - приоритете. E - условие равенства. # - умножение. Смысл записи в том, что мы проверяем равенство приоритета 0, 1 (у вас еще и 2) и в зависимости от приоритета определяем время обслуживания. В вашем случае также нужно использовать блок ADVANCE в режиме ADVANCE A,B поскольку у вас A среднее, И - отклонение. Оба эти параметра блока нужно задать подобными выражениями как это показано выше, но с определёнными заданными параметрами времени (среднего и соответственно отклонения). Ваш вариант программы с разделением генераторов и блоков обслуживания заявок также правомочен, но кода получается в 3 раза больше. Не смотря на простоту варианта - он тоже не очень подходит под условие задачи, можно попробовать развить его, например. Можно конечно каждому источнику поставить 150+-30, но не знаю на сколько это будет адекватно + есть условие что в систему поступает случайная заявка - то есть подряд может поступить несколько заявок одного приоритета подряд - в заданном случае врядли такое получится. Добавлено через 14 минут Мне видится такая структура Код
GENERATE 50,10 ;ПОТОК ЗАЯВОК PRIORITY (DUNIFORM(1,0,2)) ; Приоритет заявки случаен 0..2 равномерным законом (используется генератор случ. чисел №1) SAVEVALUE 1+,1 ;ПОДСЧЕТ ИХ ЧИСЛА PREEMPT 1,PR ;ЗАХВАТ ПРОЦЕССОРА ADVANCE A,B ; ВОТ ЗДЕСЬ ВЫ КОРРЕКТИРУЕТЕ ВРЕМЯ ОБСЛУЖИВАНИЯ В ЗАВИСИМОСТИ ОТ ПРИОРИТЕТА RETURN 1 ;ОСВОБОЖДЕНИЕ ПРОЦЕССОРА SAVEVALUE 2+,1 ;ПОДСЧЕТ ОБСЛУЖЕННЫХ ТРЕБ. Далее оператор анализирует результат в течение 60 ± 20 с. TEST E PR,2,NET ;проверка если приоритет=2, иначе по метке NET (не конец моделирования) TES TEST E N$TES,99,NET ; проверка, через блок с меткой TES прошло 99 заявок? - тогда заявка идёт ниже по коду и завершает моделирование KONEC TERMINATE 1 START 1 NET TERMINATE
0
|
17.01.2017, 07:43 | |
17.01.2017, 07:43 | |
Помогаю со студенческими работами здесь
4
Смоделировать процесс обработки 500 сигналов, поступающих с датчиков Две телефонистки на междугородней станции обслуживают общую очередь заказов. Смоделировать процесс Смоделировать процесс функционирования ВЛ при условии, что обработать необходимо 100 заданий. Смоделировать работу вычислительной системы Смоделировать работу системы обслуживания заявок двух типов Смоделировать работы вычислительного центра с 3мя потоками Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |