Задание на лабораторные работы, страница 7
Описание файла
Документ из архива "Задание на лабораторные работы", который расположен в категории "". Всё это находится в предмете "моделирование систем" из 8 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "моделирование систем" в общих файлах.
Онлайн просмотр документа "Задание на лабораторные работы"
Текст 7 страницы из документа "Задание на лабораторные работы"
В поле <D> задается номер параметра управляющего транзакта (в программе не задан). Информация по полю <D> может быть использована для вычисления времени, которое управляющий транзакт должен провести в списке будущих событий, когда устройство становится недоступным.
Поле <E> может быть использовано в следующих допустимых режимах:
-
режим RE (режим удаления) указывает на то, что прерванные транзакты (например, блоком PREEMPT) больше не могут претендовать на устройство. Эти транзакты пытаются войти в альтернативный блок, заданный в поле <F>. В программе задан режим удаления (в поле <E> задан операнд "re");
-
режим СО (режим продолжения) допускает использование устройства всеми транзактами во время периода недоступности. Транзакты занимают устройство в порядке их приоритета;
-
если режим не задан (режим по умолчанию — пустое поле), то прерванный транзакт покидает список прерывания устройства, и не допускается использование устройства во время периода недоступности.
В поле <F> задается номер или имя альтернативного блока, к которому направляется прерванный транзакт. Поле <F> используется, если в поле <E> задан режим удаления. В программе в поле <F> задан блок с меткой FACIL3.
Когда устройство становится недоступным поле <G> определяет действия с транзактами, пытающимися занять устройство или сгенерировать на нем прерывание (например, блоком PREEMPT) в момент, когда это устройство становится недоступным. Допускаются следующие режимы поля <G>:
-
режим RE (режим удаления) указывает на то, что задержанные транзакты больше не должны претендовать на устройство. Эти транзакты не должны пытаться войти в блоки RETURN или RELEASE. Они удаляются из списков задержки с тем, чтобы в дальнейшем попытаться войти в альтернативный блок, заданный полем <H>. В программе используется режим удаления (в поле <G> задан операнд "re");
-
режим СО (режим продолжения) предполагает, что всем транзактам будет разрешено использовать устройство во время периода его недоступности. Транзакты занимают устройство в порядке их приоритета;
-
если режим не задан (режим по умолчанию), то это означает, что задержанные транзакты покидают список задержки или список ожидания устройства и не могут больше претендовать на устройство во время периода недоступности.
Поле <H> задает номер или имя блока, к которому направляются задержанные транзакты в режиме RE поля <G>. В программе в поле <H> задан блок с меткой FACIL4.
Блок PREEMPT используется в простом режиме прерывания.
Распределение транзактов по устройствам может быть изменено, если для одного из устройств применить блок TERMINATE с пустым полем <A>.
Формат записи блока FAVAIL:
230 FAVAIL 1
В поле <A> блока FAVAIL задается номер или имя устройство, с которого снимается недоступность. В программе в поле <A> задано число 1 — номер первого устройства. Блок FAVAIL делает доступным заданное устройство после периода недоступности. Чаще блок FUNAVAIL используется только для осуществления недоступности устройства.
Задание к примеру 6:
-
Произвести в программе изменения по недоступности устройства: сделать недоступным 2-е устройство, затем 3-е, затем 4-е. Соответственно изменить перераспределение транзактов блоком FUNAVAIL. При каждом новом распределении транзактов задавать следующие интервалы времени поступления транзактов в систему: 7, 9, 11, 15, 17, 19 мин. Проанализировать и объяснить файл стандартного отчета по каждой новой программе.
Моделирование многоканальных устройств в GPSS/PC
Для моделирования параллельной работы устройств в системе GPSS/PC вводится понятие многоканального устройства. Такое устройство характеризуется определенной емкостью накопителя поступающей информации на обработку. Емкость накопителя описывается оператором STORAGE. Кроме того, в системе GPSS/PC существуют блоки для анализа, использования и создания недоступности многоканального устройства. К ним относятся блоки использования накопителя ENTER и LEAVE; доступность и недоступность многоканального устройства осуществляется блоками SUNAVAIL и SAVAIL.
Блок SUNAVAIL переводит многоканальное устройство (а по существу накопитель) в состояние недоступности. Блок SAVAIL переводит заданное многоканальное устройство из состояния недоступности в состояние доступности.
Пример 7. Пусть входной поток требований поступает в накопитель с допустимой емкостью, равной 3 единицам, равномерно в течение 51 мин. Если поступающие требования застают накопитель в состоянии недоступности, то они направляются в 1-е устройство, в противном случае поступают на обработку во 2-е устройство. Время обработки для 1-го устройства равно 131 мин., для второго — 91 мин. Смоделировать процесс обработки 100 требований, если состояние недоступности накопителя происходит через каждые 291 мин. в течение 17 мин.
Решение примера 7 приводится как программа 7.
Программа 7 |
SIMULATE nak STORAGE 3; Накопитель емкостью в 3 единицы ************************************************************* 10 GENERATE 5,1,,100 20 GATE SNV nak,FACIL2; Анализ доступности накопителя 30 ENTER nak 40 FACIL1 SEIZE 1; 1-е устройство с меткой FACIL1 50 LEAVE nak 60 ADVANCE 13,1 70 RELEASE 1 80 TRANSFER ,EXIT 100 FACIL2 SEIZE 2; 2-е устройство с меткой FACIL2 200 ADVANCE 9,1 300 RELEASE 2 400 EXIT TERMINATE 1 500 GENERATE 29,1 510 SUNAVAIL NAK 520 ADVANCE 17 530 SAVAIL NAK 550 TERMINATE START 100 ;END |
В данном примере поступающие в систему требования сначала буферизуются в накопителе емкостью в 3 единицы. Потом, в зависимости доступности или недоступности накопителя, они направляются в одно из устройств с помощью блока GATE.
Формат записи блока SUNAVAIL:
510 SUNAVAIL NAK
В поле <A> блока задается имя накопителя (оператора STORAGE). В программе накопитель под именем NAK становится недоступным.
Формат записи блока SAVAIL:
530 SAVAIL NAK
Блок SAVAIL переводит накопитель под именем NAK из состояния недоступности в состояние доступности. В поле <A> блока SAVAIL задается имя накопителя, которое переводится в состояние доступности.
Блоки SUNAVAIL и SAVAIL работают совместно.
В данной программе перевод из состояния недоступности в состояние доступности происходит через 17 мин. (в поле <A> блока ADVANCE под номером 520 задано время задержки, равное 17 мин.). В то же время состояние недоступности наступает каждые 291 мин. Команды на недоступность генерируются блоком GENERATE под номером 500.
Формат записи блока GATE в режиме SNV:
20 GATE SNV nak,FACIL2
В операционном поле <X> блока GATE задан логический операнд SNV — многоканальное устройство (накопитель) не доступно. В поле <A> определено имя накопителя (в программе nak), состояние которого проверяется. В поле <B> задается альтернативный блок (в программе FACIL2), если логический операнд поля <X> имеет значение "ложь". Если альтернативный блок задан, то блок GATE работает в режиме безусловного входа, т.е. транзакт всегда может войти в блок GATE. При этом если логический операнд имеет значение "истина", то транзакт пытается войти в следующий по номеру блок (в программе блок под номером 30). Если же операнд имеет значение "ложь", то транзакт пытается войти в альтернативный блок, заданный полем <B> (в программе блок под номером 100 и с меткой FACIL2).
Перераспределение требований по устройствам может быть изменено блоком GATE с другим условием в операционном поле <X>.
Приведем программу под номером 8 для решения примера 7, в котором зададим условие доступности накопителя. Для этого случая в поле <X> блока GATE установим логический операнд SV. Изменение режима работы блока GATE отразится на статистике устройств и накопителя.
Программа 8 |
SIMULATE nak STORAGE 3; Накопитель емкостью в 3 единицы *************************************************************** 10 GENERATE 5,1,,100 20 GATE SV nak,FACIL2; Анализ доступности накопителя 30 ENTER nak 40 FACIL1 SEIZE 1; 1-е устройство с меткой FACIL1 50 LEAVE nak 60 ADVANCE 13,1 70 RELEASE 1 80 TRANSFER ,EXIT 100 FACIL2 SEIZE 2; 2-е устройство с меткой FACIL2 200 ADVANCE 9,1 300 RELEASE 2 400 EXIT TERMINATE 1 500 GENERATE 29,1; Команды недоступности 510 SUNAVAIL NAK 520 ADVANCE 17 530 SAVAIL NAK 550 TERMINATE START 100 ;END |
Задание к программам 7 и 8.
-
Видоизменить программы так, чтобы моделирование осуществлялось в течение 5 часов.
-
В исходных программах изменить емкость накопителя: 2, 4, 5, 6, 7, 8, 9, 10.
-
В исходных программах команды недоступности генерировать по средним значениям из интервала от 15 до 50 мин.
-
Запрограммировать ситуацию: если 1-е устройство не доступно, то транзакты должны покидать систему. Система функционирует 5 часов.
-
Изучить и объяснить файлы стандартных отчетов.
Моделирование накопления транзактов, синхронизации движения транзактов по модели, управление потоком транзактов в зависимости
от состояния логического ключа
Блок GATHER осуществляет накопление сообщений (транзактов), принадлежащих одному и тому же набору (ансамблю), с последующей попыткой одновременной передачи их к следующему блоку. Действие блока GATHER аналогично действию блока ASSEMBLE. Отличие состоит в том, что после накопления в блоке числа транзактов, указанного в поле <A>, они все передаются в следующий блок. Блок GATHER не уничтожает вошедших транзактов.
Блок MATCH предназначен для синхронизации продвижения двух транзактов одного ансамбля (семейства), движущихся по разным путям модели. Для синхронизации необходимы два блока MATCH, находящиеся в соответствующих местах моделирующей программы и называемые сопряженными.
Для представления в модели коммутируемых объектов используют логические ключи, моделируемые блоками LOGIC и GATE. Блок LOGIC устанавливает положение ключа, которое может быть проверено любым сообщением (транзактом) в любой части модели. Блок LOGIC используется для "включения", "выключения" или инвертирования состояния ключа. Блок GATE, в зависимости от состояния логического ключа, осуществляет управление потоком транзактов.
Пример 8. Смоделировать следующий процесс прохождения 100 пакетов на почте.
На участок сборки пакетов поступают коробки, и письма с интервалом времени 254 единицы. На контроль коробки затрачивается 41 единицы времени; контроль писем производится последовательно со временем 21 единица времени на письмо. Операция сборки требует одновременного поступления коробки и всех писем и производится со временем 42 единицы. В одной коробке должно быть 8 писем. Все процессы подчиняются равномерному закону.
Единица времени задается пользователем. Система GPSS/PC осуществляет моделирование в относительных единицах, поэтому в файле стандартного отчета указываемые единицы времени можно рассматривать как те, которые задаются пользователем (минуты, секунды и т.д.). Решение примера 8 приводится как программа 9.
Программа 9 |
simulate 10 generate 25,4,,100 20 split 8,chan2 30 chan1 seize 1 40 advance 4,1 50 release 1 60 transfer ,comm 70 chan2 seize 2 80 advance 2,1 90 release 2 100 gather 8 110 comm assemble 9 120 chan3 seize 3 130 advance 4,2 140 release 3 150 exit terminate 1 start 100 ;end |
Формат записи блока GATHER:
-
gather <A>
В поле <A> задается число транзактов, принадлежащих к одному семейству, которое надо накопить (в программе 8 транзактов). Операнд поля <A> может быть именем, положительным целым (как в программе число 8), СЧА, СЧА с параметром (СЧА$<параметр>). При входе транзакта в блок GATHER, интерпретатор GPSS/PC просматривает семейство, к которому он принадлежит, и проверяет, находится ли в данном блоке GATHER другой транзакт из того же семейства. Если в блок GATHER не вошло заданное число транзактов, транзакты, находящиеся в блоке, остаются в состоянии синхронизации.
В программе после поступления в блок GATHER 8 транзактов они все выходят из блока и поступают в следующий по номеру блок — блок под номером 110 ASSEMBLE. Блок ASSEMBLE по своему функциональному назначению собирает 9 транзактов и отправляет в следующий по номеру блок один транзакт. С помощью блока ASSEMBLE моделируется процесс сборки пакета — 8 писем и коробка.