0 / 0 / 0
Регистрация: 09.12.2016
Сообщений: 3
1

Смоделировать процесс работы системы

13.01.2017, 11:52. Показов 1788. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.01.2017, 11:52
Ответы с готовыми решениями:

Смоделировать процесс финансовой деятельности человека
Как можно смоделировать процесс финансовой деятельности человека? Приборы можно выбрать...

Смоделировать процесс обработки деталей на станке
Не получается написать модель для данной задачи: С интервалом времени 5 ± 2 мин детали поштучно...

Смоделировать процесс обработки на станке 100 деталей
Помогите с кодом не пойму как исправить ошибку. Я сама новичок в языке GPSS. Задача такая:С...

Смоделировать процесс обработки на станке 100 деталей
текст задания: С интервалом времени 5 ± 2 мин детали поштучно поступают к станку на обработку и до...

3
1815 / 1029 / 285
Регистрация: 13.02.2012
Сообщений: 3,338
13.01.2017, 12:58 2
Цитата Сообщение от Anna902 Посмотреть сообщение
Нашла корректную программу к данной задаче
Огорчу вас, приведённая вами модель некорректна.

Заявка формируется блоком GENERATE и движется строчка за строчкой по программе. Получается что по программе формируются заявки с тремя приоритетами и идут последовательно, причём первая идёт с приоритетом = 1, затем заявка с приоритетом 3, потом2 (связано это с той логикой что первая входящая заявка застаёт свободным устройство и поступает на обслуживание, две другие заявки уже попадают в очередь согласно приоритету.

Далее по программе получается что каждая из трёх заявок обслуживается в каждой подсистеме, задержка соотвествующая 50,10 50,10 30,10 60,20 - по условия задачи не так + оговаривается что сервер не всегда задействуется.

Оператор случайно выбирает задние и запускает его при помощи сенсорного экрана через 50 ± 10 с.
И это нигде в модели не реализовано. Получается не случайный выбор на обслуживание а по приоритету.

Берите книжку Кудрявцев Основы моделирования на GPSS World - разбирайте простые примеры, стройте свою модель с 0.

Добавлено через 11 минут
Конкретно по заданному вопросу.
Цитата Сообщение от Anna902 Посмотреть сообщение
как сделать, чтобы было свое время для каждого приоритета
Пример этому представлен в строчке кода
Код
TEST E	((PR'E'3)'AND'(P$KOL_VO'E'100)),1,CYCLE	;проверка если приоритет=3 И колиество циклов = 100, то это правда и заканчивается моделирование (ниже), иначе продолжаем в начало
параметр PR и есть приоритет вашей заявки, так что используя это значение можно в блоке ADVANCE определить задержку обслуживания вашей заявки.

для определение времени задержки можно использовать функцию 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
Цитата Сообщение от Dukalys Посмотреть сообщение
например
Код
ADVANCE ((PR'E'0)#50+(PR'E'1)#60) ; задержка = 0 если приоритет=0, задержка = 60 если приоритет = 1
Подставила данный фрагмент в программу (если я все правильно поняла):
Код
QUEUE		Q_CPU	;формирование очереди к процессору
	PREEMPT	CPU,PR;захват транзактом процессора по приоритету
	DEPART	Q_CPU	;освобождение очереди
	ADVANCE	((PR'E'0)#50+(PR'E'1)#60) ;работа процессора ADVANCE 
	RETURN	CPU	;снятие прерывания устройства
при запуске программы AVE.TIME CPU=16.059. Я так понимаю, что это не правильно.
не знаю, как исправить эту ошибку, пробовала разделить по приоритетам на примере данной программы(из учебника), но не смогла довести до ума
Код
* МОДЕЛЬ НУЛЕВОГО РАЗДЕЛА:
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
Конечно хотелось бы доделать изначальный вариант программы, так как она более менее понятна, но совсем не знаю как

Цитата Сообщение от Dukalys Посмотреть сообщение
Берите книжку Кудрявцев Основы моделирования на GPSS World - разбирайте простые примеры, стройте свою модель с 0.
Отличный совет, но боюсь времени на это не найдется. Пытаюсь разобраться сама, но это мой первый опыт работы с GPSS и очень ограниченно время
0
1815 / 1029 / 285
Регистрация: 13.02.2012
Сообщений: 3,338
17.01.2017, 07:43 4
Цитата Сообщение от Anna902 Посмотреть сообщение
ADVANCE ((PR'E'0)#50+(PR'E'1)#60) ; задержка = 0 если приоритет=0, задержка = 60 если приоритет = 1
Вы должны это выражение переделать под своё задание времени - указан всего лишь пример.
PR - приоритете. E - условие равенства. # - умножение.

Смысл записи в том, что мы проверяем равенство приоритета 0, 1 (у вас еще и 2) и в зависимости от приоритета определяем время обслуживания.

В вашем случае также нужно использовать блок ADVANCE в режиме ADVANCE A,B поскольку у вас A среднее, И - отклонение. Оба эти параметра блока нужно задать подобными выражениями как это показано выше, но с определёнными заданными параметрами времени (среднего и соответственно отклонения).


Ваш вариант программы с разделением генераторов и блоков обслуживания заявок также правомочен, но кода получается в 3 раза больше.
Не смотря на простоту варианта - он тоже не очень подходит под условие задачи, можно попробовать развить его, например.

Оператор случайно выбирает задние и запускает его при помощи сенсорного экрана через 50 ± 10 с.
Если вчитаться, то получается 1 генератор с интенсивностью 50+-10 - у вас в три раза больше - соответственно у вас заявки генерируются каждые 50/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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.01.2017, 07:43

Смоделировать процесс обработки 500 сигналов, поступающих с датчиков
Система обработки информации содержи мультиплексный канал и три мини-ЭВМ. Сигналы от датчиков...

Две телефонистки на междугородней станции обслуживают общую очередь заказов. Смоделировать процесс
Две телефонистки на междугородней станции обслуживают общую очередь заказов. Очередной заказ...

Смоделировать процесс функционирования ВЛ при условии, что обработать необходимо 100 заданий.
В вычислительной лаборатории (ВЛ) имеются три ЭВМ. Задания на обработку поступают с интервалом 20 ±...

Смоделировать работу вычислительной системы
Вычислительная система включает 3 эвм. В систему в среднем через 30 сек поступаютзадания, корорые...

Смоделировать работу системы обслуживания заявок двух типов
Помогите пожалуйста, недавно начал изучать этот язык и многое ещё не понимаю. Нужно смоделировать...

Смоделировать работы вычислительного центра с 3мя потоками
Всем привет, недавно начал изучать GPSS, получил задание, логику понимаю, а практических навыков не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru