ТЕМА (1086517), страница 3
Текст из файла (страница 3)
"Удаление транзактов из модели. Блок TERMINATE (ЗАВЕРШИТЬ)"
-
Для управления процессом моделирования разработчик использует два двухблочных сегмента модели, которые изображены на рис. У4. Если используется карта START со значением операнда А, равным 25, когда завершится моделирование? Является ли окончательное значение счетчика завершений 0 или - 1? Поясните ответ.
Рис. У4
§4 "Элементы, символизирующие обслуживающие приборы"
Рассмотрим теперь, какие элементы можно использовать для представления собственно обслуживания. Такими элементами могут быть либо человек, либо какой-то предмет. Например, людьми, производящими обслуживание, являются: парикмахер, заправщик на бензоколонке,водопроводчик, страховой агент, плотник.
Подобным образом, предметами, которые могут обслуживать, являются: авторучка,стоянка автомобилей, театральный бинокль, подъемный кран.
Независимо от того, люди это или предметы, подобные элементы мы будем называть приборами. Приборы характеризуются двумя основными свойствам:
-
Каждый прибор в любой момент времени может обслуживать только одно требование.
Если в процессе обслуживания появляется новое требование, то оно должно либо подождать своей очереди обслуживания, либо пойти куда-нибудь в другое место. Существует также третья возможность.
Если новое требование является достаточно важным, оно может прервать протекающее обслуживание до его завершения. Такое средство прерывания также можно моделировать на GPSS.
-
Когда на прибор поступает требование в модели, надо пропустить время, необходимое для его обслуживания. Такое время называется временем обслуживания.
Поскольку в различных точках системы может быть много приборов, для различия между ними приборам могут быть даны имена. Имена задает разработчик модели. Имена могут быть либо числовыми, либо символическими.
Если приборам присваивают числовые имена, числа должны быть положительными целыми. Наибольшим разрешенным номером является максимальное число приборов, допустимое в модели. Это число зависит от объема памяти, доступной этой модели. Например, в GPSS/360 таким числом приборов при использовании памяти на 64К байт (т. е. 64 000 байт) является 35; при использовании 128К байт - 150; при использовании 256К байт - 300. Следовательно, при моделировании с памятью 64К, наибольший допустимый номер прибора не должен превышать 35. В приложении Р показано допустимое число различных элементов GPSS.
Если приборам присваивают символические имена, то для образования этих имен используют те же правила, что и для составления символических имен блоков. Как было указано ранее, символические имена состоят из трех - пяти алфавитно-цифровых символов, первыми тремя символами должны быть буквы. Примеры составления правильных и неправильных символических и числовых имен приведены в табл. 4.1.
Таблица 4.1. Примеры правильных н неправильных имен приборов
| Примеры правильных и неправильных имен приборов | |
| Правильно | Неправильно |
| GRANE | IT |
| 26 | 26KEY |
| CPU | OS |
| SURVR | -5 |
| 1 | 94528 |
Было указано, что для того, чтобы символизировать некоторые элементы реальных систем, используется абстрактная концепция транзактов. Такую же концепцию используют и для приборов. Разработчик может установить, например, что прибор 9 символизирует рабочего из мастерской, а прибор, названный CPU, можно использовать для обозначения центрального процессора вычислительной системы, и т.д. Процесс создания аналогий между абстракциями GPSS и их эквивалентами в реальных системах является элементом моделирования на языке GPSS.
§5 "Занятие свободных приборов.
Блоки SЕIZЕ (ЗАНЯТЬ) и RELEASE (ОСВОБОДИТЬ)"
Предположим, что мы хотим использовать прибор. При этом мы должны выполнить следующие шаги:
-
Ожидаем своей очереди, если это необходимо. Естественно, что ожидание требует некоторого интервала времени.
-
Когда подходит наша очередь, занимаем прибор. Событие "занятие прибора" происходит в некоторой точке времени.
-
Прибор остается в состоянии занятости, пока не закончится обслуживание. Для обслуживания требуется также некоторый интервал времени.
-
Когда обслуживание заканчивается, мы освобождаем прибор. Событие "освобождение прибора" также происходит в некоторой точке времени.
Подобная последовательность шагов выполняется и при моделировании использования прибора в GPSS. Реализация шагов 2 и 4 в GPSS будет рассмотрена нами сейчас; реализация шага 3 и возможности сбора статистики при выполнении шага 1 будут рассмотрены в следующих параграфах.
В GPSS элементами, которые требуют обслуживания, являются транзакты. Мы знаем, что для транзактов характерно перемещение по модели блок за блоком. Предположим, что в какой-то момент активности транзакт занимает прибор. Для этого транзакт входит (или пытается войти) в соответствующий блок, описывающий этот прибор. Блок должен обладать следующими свойствами:
-
Если прибор уже используют, транзакт не может войти в блок, т. е. ему не разрешается занять прибор в данный момент времени, и он должен ждать в очереди. Такой запрет на вход в блок приводит к тому, что транзакт на время исключается из рассмотрения.
-
Eсли прибор не используют, транзакт может войти в блок. Вход транзакта в блок вызывает выполнение подпрограммы обработки этого блока. Результатом выполнения подпрограммы является изменение статуса прибора из "незанято" в "занято".
Блок, который обладает этими свойствами, является блоком SEIZE (ЗАНЯТЬ). Этот блок вместе с операндом А показан на рис. 5.1.
Рис. 5.1.
| Блок SEIZE (ЗАНЯТЬ) и его операнд А: | ||
| Операнд | Значение | Значение или результат по умолчанию |
| А | Имя (символическое или числовое) занимаемого прибора | Ошибка |
Вход транзакта в блок SEIZЕ моделирует занятие прибора, вход того же транзакта в другой блок моделирует освобождение прибора. Назначением этого другого блока является изменение состояния ранее занятого прибора с "занято" в "незанято". Этим блоком является блок RELЕАSЕ (ОСВОБОДИТЬ), который с операндом А показан на рис. 5.2.
Рис. 5.2.
| Блок RELEASE (ОСВОБОДИТЬ) и его операнд А: | ||
| Операнд | Значение | Значение или результат по умолчанию |
| А | Имя (символическое или числовое) освобождаемого прибора | Ошибка |
Блок RELЕАSЕ никогда не запрещает вход транзакта. В то же время было бы не логично пытаться освободить свободный прибор. Если делается такая попытка, то интерпретатор GPSS печатает сообщение об ошибке и прекращает выполнение моделирования (в приложении С дан полный список сообщений об ошибках системы GPSS/360). Подобным же образом, если транзакт пытается освободить прибор, занятый другим транзактом, печатается сообщение об ошибке и прекращается моделирование.
При моделировании нет необходимости определять соответствующий прибор для интерпретатора GPSS перед тем, как использовать блок SEIZЕ. Тот факт, что блок SEIZЕ используется, вызывает установление факта существования данного прибора. Здесь можно напомнить, что когда мы обсуждали вопрос появления транзакта, ничего не было сказано о необходимости указания интерпретатору на его существование до тех пор, пока транзакт не входил в модель. Короче говоря, интерпретатор автоматически обеспечивает возникновение транзактов и приборов.
§6 "Реализация задержки во времени. Блок АDVANСЕ (ЗАДЕРЖАТЬ)"
Предположим, что транзакт только что вошел в блок SEIZЕ, т.е занял прибор. После выполнения соответствующей подпрограммы для данного блока интерпретатор сразу же пытается продвинуть транзакт в следующий последовательный блок модели. Существует мало ограничений на то, каким должен быть этот блок. Это, например, может быть другой блок SEIZЕ, описывающий другой прибор. Так делается, если необходимо, например, выполнить операцию с одновременным занятием и рабочего и какого-либо инструмента для выполнения определенного вида обслуживания. Если рабочий и инструмент моделируются некоторой парой приборов, то транзакт одновременно должен занять оба эти прибора, прежде чем может быть начато обслуживание.
Обычно транзакт занимает прибор для того, чтобы немедленно начать на нем обслуживание.
Было указано, что обслуживание длится некоторый период времени. В течение этого времени транзакт должен прекратить двигаться по модели. Только по истечении времени обслуживания он должен попасть, в блок RЕLЕАSЕ для освобождения прибора.
В GPSS существует блок АDVANCЕ (ЗАДЕРЖАТЬ) для реализации задержки продвижения транзакта в течение некоторого интервала времени. Обычно этот интервал задается случайной переменной. Опыт показывает, что время обслуживания обычно меняется от одного обслуживания к другому.
Информация, необходимая для описания соответствующего времени обслуживания и его распределения, задается операндами А и В блока АDVANCЕ.
Возможные варианты распределения времени обслуживания делятся на две категории: равномерное распределение интервала обслуживания; прочие распределения интервалов обслуживания.
Как и при использовании блока GENERАТЕ, особо рассматривается равномерное распределение. Применение более сложных видов распределения требует использования функций. Поскольку описание функций отложено до следующей главы, здесь мы будем рассматривать только равномерное распределение.
На рис. 6.1 показан блок АDVANСЕ вместе с операндами А и В. Как и ранее, операнд А используют для определения среднего времени, которое транзакт, входящий в блок, проведет в нем. Операнд В используют для указания половины поля допуска.
Рис. 6.1
| Блок ADVANCE (ЗАДЕРЖАТЬ) операндами А и В: | ||
| Операнд | Значение | Значение или результат по умолчанию |
| А | Задержка на время обслуживания | Ноль |
| В | Половина поля допуска равномерно распределенного интервала времени задержки | Ноль |
На рис.6.2 показан блок АDVANСЕ со значениями операндов А и В, равными 30 и 5 соответственно. Для каждого транзакта, входящего в этот блок, возможные значения интервалов времени находятся в пределах 25 - 35 включительно. Предположим, что транзакт входит в блок в момент времени, равный 134, а разыгранным значением из распределении 30 ± 5 является 31. Тогда транзакт будет оставаться в этом блоке до момента времени, равного 134 + 31, или 165. В этот момент интерпретатор попытается продвинуть его в следующий блок модели.Блок АDVANCE никогда не препятствует входу транзакта.Любое число транзактов может находиться в этом блоке одновременно. Когда транзакт попадает в такой блок, выполняется соответствующая подпрограмма и вычисляется время пребывания транзакта в нем. Вновь прибывший транзакт никак не влияет на уже находящийся в блоке транзакт.
Рис. 6.2.
§7 "Ожидание обслуживания: где при каких условиях происходит ожидание транзакта"
В зависимости от значений операндов А и В блока АDVANСЕ может так случиться, что время пребывания транзакта в блоке окажется равным нулю. Например, в блоке АDVANСЕ 12,12 время пребывания в блоке, равное нулю, может возникать в 4% всех случаев. Когда это происходит, вместо задержки транзакта в блоке АDVANСЕ интерпретатор сразу же пытается переместить этот транзакт в следующий блок. Иногда, если это удобно, можно использовать блок АDVANCЕ в качестве "фиктивного" блока. Этого можно добиться, не указывая значения операндов блока. При этом обеспечивается нулевое значение задержки по умолчанию. Позднее мы рассмотрим ситуации, когда это необходимо сделать.















