
- •Оглавление
- •1. "Внесение транзактов в модель. Блок gеnеrате (генерировать)"
- •2. "Строки, соответствующие блокам gpss"
- •3. "Удаление транзактов из модели. Блок теrмinате (завершить)"
- •4. "Элементы, символизирующие обслуживающие приборы"
- •5. "Занятие свободных приборов. Блоки sеizе (занять) и release (освободить)"
- •6. "Реализация задержки во времени. Блок аdvanсе (задержать)"
- •7. "Ожидание обслуживания: где при каких условиях происходит ожидание транзакта"
- •8. "Сбор статистики при ожидании. Блоки queue (стать в очередь) и dераrт (покинуть очередь)"
- •Пример последовательности sеizе - аdvanсе -rеlеаsе
- •9. "Логика работы интерпретатора"
- •10. "Переход транзактов в блок, отличный от последующего. Блок тrаnsfеr (передать)"
- •11. "Моделирование многоканальных устройств"
- •12. "Использование параллельно работающих каналов. Блоки еnтеr (войти) и leave (выйти)"
- •13. "Многоканальная система массового обслуживания с очередью"
- •14. "Управляющие карты gpss. Карта reset (сбросить)"
- •15. "Описание стандартов для записи примеров моделирования"
- •Список рекомендуемой литературы
4. "Элементы, символизирующие обслуживающие приборы"
Рассмотрим теперь, какие элементы можно использовать для представления собственно обслуживания. Такими элементами могут быть либо человек, либо какой-то предмет. Например, людьми, производящими обслуживание, являются: парикмахер, заправщик на бензоколонке, водопроводчик, страховой агент, плотник и т.д.
Подобным образом, предметами, которые могут обслуживать, являются: авторучка, стоянка автомобилей, театральный бинокль, подъемный кран.
Независимо от того, люди это или предметы, подобные элементы мы будем называть приборами. Приборы характеризуются двумя основными свойствам:
Каждый прибор в любой момент времени может обслуживать только одно требование. Если в процессе обслуживания появляется новое требование, то оно должно либо подождать своей очереди обслуживания, либо пойти куда-нибудь в другое место. Существует также третья возможность. Если новое требование является достаточно важным, оно может прервать протекающее обслуживание до его завершения. Такое средство прерывания также можно моделировать на GPSS.
Когда на прибор поступает требование в модели, надо пропустить время, необходимое для его обслуживания. Такое время называется временем обслуживания.
Поскольку в различных точках системы может быть много приборов, для различия между ними приборам могут быть даны имена. Имена задает разработчик модели. Имена могут быть либо числовыми, либо символическими.
Если приборам присваивают числовые имена, числа должны быть положительными целыми. Наибольшим разрешенным номером является максимальное число приборов, допустимое в модели. Это число зависит от объема памяти, доступной этой модели. Например, в GPSS таким числом приборов при использовании памяти на 64К байт (т. е. 64 000 байт) является 35; при использовании 128К байт - 150; при использовании 256К байт - 300. Следовательно, при моделировании с памятью 64К, наибольший допустимый номер прибора не должен превышать 35.
5. "Занятие свободных приборов. Блоки sеizе (занять) и release (освободить)"
Предположим, что мы хотим использовать прибор. При этом мы должны выполнить следующие шаги:
Ожидаем своей очереди, если это необходимо. Естественно, что ожидание требует некоторого интервала времени.
Когда подходит наша очередь, занимаем прибор. Событие "занятие прибора" происходит в некоторой точке времени.
Прибор остается в состоянии занятости, пока не закончится обслуживание. Для обслуживания требуется также некоторый интервал времени.
Когда обслуживание заканчивается, мы освобождаем прибор. Событие "освобождение прибора" также происходит в некоторой точке времени.
Подобная последовательность шагов выполняется и при моделировании использования прибора в GPSS. Реализация шагов 2 и 4 в GPSS будет рассмотрена нами сейчас; реализация шага 3 и возможности сбора статистики при выполнении шага 1 будут рассмотрены в следующих параграфах.
В GPSS элементами, которые требуют обслуживания, являются транзакты. Мы знаем, что для транзактов характерно перемещение по модели блок за блоком. Предположим, что в какой-то момент активности транзакт занимает прибор. Для этого транзакт входит (или пытается войти) в соответствующий блок, описывающий этот прибор. Блок должен обладать следующими свойствами:
Если прибор уже используют, транзакт не может войти в блок, т. е. ему не разрешается занять прибор в данный момент времени, и он должен ждать в очереди. Такой запрет на вход в блок приводит к тому, что транзакт на время исключается из рассмотрения.
Если прибор не используют, транзакт может войти в блок. Вход транзакта в блок вызывает выполнение подпрограммы обработки этого блока. Результатом выполнения подпрограммы является изменение статуса прибора из "незанято" в "занято".
Блок, который обладает этими свойствами, является блоком SEIZE (ЗАНЯТЬ). Этот блок вместе с операндом А показан на рис. 5.1.
Рис.
5.1.
Блок SEIZE (ЗАНЯТЬ) и его операнд А: |
||
Операнд |
Значение |
Значение или результат по умолчанию |
А |
Имя (символическое или числовое) занимаемого прибора |
Ошибка |
Вход транзакта в блок SEIZЕ моделирует занятие прибора, вход того же транзакта в другой блок моделирует освобождение прибора. Назначением этого другого блока является изменение состояния ранее занятого прибора с "занято" в "незанято". Этим блоком является блок RELЕАSЕ (ОСВОБОДИТЬ), который с операндом А показан на рис. 5.2.
Рис.
5.2.
Блок RELEASE (ОСВОБОДИТЬ) и его операнд А: |
||
Операнд |
Значение |
Значение или результат по умолчанию |
А |
Имя (символическое или числовое) освобождаемого прибора |
Ошибка |
Блок RELЕАSЕ никогда не запрещает вход транзакта. В то же время было бы не логично пытаться освободить свободный прибор. Если делается такая попытка, то интерпретатор GPSS печатает сообщение об ошибке и прекращает выполнение. Подобным же образом, если транзакт пытается освободить прибор, занятый другим транзактом, печатается сообщение об ошибке и прекращается моделирование.
При моделировании нет необходимости определять соответствующий прибор для интерпретатора GPSS перед тем, как использовать блок SEIZЕ. Тот факт, что блок SEIZЕ используется, вызывает установление факта существования данного прибора. Здесь можно напомнить, что когда мы обсуждали вопрос появления транзакта, ничего не было сказано о необходимости указания интерпретатору на его существование до тех пор, пока транзакт не входил в модель. Короче говоря, интерпретатор автоматически обеспечивает возникновение транзактов и приборов.