p>В поле A указывается номер или имя устройства. Если транзакт входит в блок SEIZE, то устройство, указанное в поле A, становится занятым и остаётся в этом состоянии до тех пор, пока этот же транзакт не пройдёт соответствующий блок RELEASE, освобождая устройство. Если устройство, указанное в поле A блока SEIZE, уже занято каким-либо транзактом, то никакой другой транзакт не может войти в этот блок и остаётся в предыдущем блоке. Транзакты, задержанные (заблокированные) перед блоком SEIZE, остаются в списке текущих событий и при освобождении устройства обрабатываются с учетом приоритетов и очередности поступления. Каждое устройство имеет следующие СЧА: F - состояние устройства (0 - свободно, 1 - занято); FR - коэффициент использования в долях 1000; FC - число занятий устройства; FT - целая часть среднего времени занятия устройства. Воспользуемся блоками SEIZE и RELEASE для моделирования одноканальной СМО с ожиданием (рис. 7). Теперь блок ADVANCE находится между блоками SEIZE и RELEASE, моделирующими занятие и освобождение устройства с именем SYSTEM, и поэтому в нем может находиться только один транзакт. Транзакты, выходящие из блока GENERATE в моменты занятости устройства, не смогут войти в блок SEIZE и будут оставаться в блоке GENERATE, образуя очередь в списке текущих событий. 1
EXP FUNCTION RN1, C24
0, 0/. 1, .104/. 2, .222/. 3, .355/. 4, .509/. 5, .69/. 6, .915 . 7, 1. 2/. 75, 1. 38/. 8, 1. 6/. 84, 1. 85/. 88, 2. 12/. 9, 2. 3 . 92, 2. 52/. 94, 2. 81/. 95, 2. 99/. 96, 3. 2/. 97, 3. 5/. 98, 3. 9
. 99, 4. 6/. 995, 5. 3/. 998, 6. 2/. 999, 7/. 9998, 8 GENERATE 100, FN$EXP SEIZE SYSTEM ADVANCE 80, FN$EXP RELEASE SYSTEM TERMINATE 1 1. 5 Рис. 7
Для моделирования захвата (прерывания) одноканального устройства вместо блоков SEIZE и RELEASE используются соответственно блоки PREEMPT (захватить) и RETURN (вернуть). Блок PREEMPT имеет следующий формат:
имя PREEMPT A, B, C, D, E
В поле A указывается имя или номер устройства, подлежащего захвату. В поле B кодируется условие захвата. Если это поле пусто, то захват возникает, если обслуживаемый транзакт сам не является захватчиком. Если же в поле B записан операнд PR, то захват возникает, если приоритет транзакта-захватчика выше, чем приоритет обслуживаемого транзакта. Поля C, D и E определяют поведение транзактов, обслуживание которых было прервано. Поле C указывает имя блока, в который будет направлен прерванный транзакт. В поле D может быть указан номер или имя параметра прерванного транзакта, в который записывается время, оставшееся этому транзакту до завершения обслуживания на устройстве. При отсутствии операнда в поле E прерванный транзакт сохраняет право на автоматическое восстановление на устройстве по окончании захвата. Если же в поле E указан операнд RE, то транзакт теряет такое право. Блок RETURN имеет единственный операнд A, содержащий имя или номер устройства, подлежащего освобождению от захвата. Блоки PREEMPT и RETURN могут быть использованы для моделирования СМО с абсолютными приоритетами. В простейших случаях, при одном уровне захвата, в блоке PREEMPT используется единственный операнд A. При этом прерванный транзакт переводится симулятором из списка будущих событий в так называемый список прерываний устройства, а по окончании захвата устройства возвращается в список будущих событий с предварительно вычисленным временем занятия устройства для продолжения обслуживания. Для создания в модели многоканальных устройств (МКУ) они должны быть предварительно определены с помощью операторов определения STORAGE (память), имеющих следующий формат: имя STORAGE A Здесь имя - имя МКУ, используемое для ссылок на него; A - емкость (количество каналов обслуживания) МКУ, задаваемая константой. Для занятия и освобождения каналов обслуживания МКУ используется пара блоков ENTER (войти) и LEAVE (покинуть), имеющих следующий формат: 1
имя ENTER A, B 1. 5 имя LEAVE A, B
В поле A указывается номер или имя МКУ, в поле B - число каналов МКУ, занимаемых при входе в блок ENTER или освобождаемых при входе в блок LEAVE. Обычно поле B пусто, и в этом случае по умолчанию занимается или освобождается один канал. При входе транзакта в блок ENTER текущее содержимое МКУ увеличивается на число единиц, указанное в поле B. Если свободная емкость МКУ меньше значения поля B, то транзакт не может войти в блок ENTER и остается в предыдущем блоке, образуя очередь в списке текущих событий. При входе транзакта в блок LEAVE текущее содержимое МКУ уменьшается на число единиц, указанное в поле B. Не обязательно освобождается такое же число каналов МКУ, какое занималось при входе данного транзакта в блок ENTER, однако текущее содержимое МКУ не должно становиться отрицательным. Многоканальные устройства имеют следующие СЧА: S - текущее содержимое МКУ; R свободная емкость МКУ; SR - коэффициент использования в долях 1000; SA - целая часть среднего содержимого МКУ; SM максимальное содержимое МКУ; SC - число занятий МКУ; ST - целая часть среднего времени занятия МКУ. Воспользуемся блоками ENTER-LEAVE и оператором STORAGE для моделирования двухканальной СМО с ожиданием (рис. 8). Если текущее содержимое МКУ с именем STO2 меньше 2, т. е. в блоке ADVANCE находится один или ни одного транзакта, то очередной транзакт, поступающий в модель через блок GENERATE, может войти в блок ENTER и затем в блок ADVANCE. Если же текущее содержимое МКУ равно 2, то очередной транзакт остается в блоке GENERATE, образуя очередь в списке текущих событий. По истечении задержки одного из двух обслуживаемых транзактов в блоке ADVANCE и после входа его в блок LEAVE первый из заблокированных транзактов сможет войти в блок ENTER.
1 STO2 STORAGE 2 EXP FUNCTION RN1, C24
0, 0/. 1, .104/. 2, .222/. 3, .355/. 4, .509/. 5, .69/. 6, .915 . 7, 1. 2/. 75, 1. 38/. 8, 1. 6/. 84, 1. 85/. 88, 2. 12/. 9, 2. 3 . 92, 2. 52/. 94, 2. 81/. 95, 2. 99/. 96, 3. 2/. 97, 3. 5/. 98, 3. 9
. 99, 4. 6/. 995, 5. 3/. 998, 6. 2/. 999, 7/. 9998, 8 GENERATE 100, FN$EXP ENTER STO2 ADVANCE 160, FN$EXP LEAVE STO2 TERMINATE 1 1. 5 Рис. 8
К аппаратным объектам относятся также логические переключатели (ЛП), которые могут находиться в двух состояниях: "включено" и "выключено". В начале моделирования все ЛП находятся в состоянии "выключено". Отдельные переключатели могут быть установлены в начальное состояние "включено" с помощью оператора INITIAL (инициализировать), имеющего следующий формат: 1
INITIAL LS$ имя 1. 5 INITIAL LS j
Здесь имя и j - соответственно имя и номер ЛП, устанавливаемого в начальное состояние "включено". Для включения, выключения и инвертирования логических переключателей в процессе моделирования служит блок LOGIC (установить ЛП), имеющий следующий формат: имя LOGIC X A В поле A указывается имя или номер ЛП. Вспомогательный операнд X указывает вид операции, которая производится с логическим переключателем при входе транзакта в блок: S - включение, R - выключение, I - инвертирование. Например: 1
LOGIC S 9 1. 5 LOGIC R FLAG
Логические переключатели имеют единственный СЧА с названием LS. Значение СЧА равно 1, если ЛП включен, и 0, если он выключен.
2. 3. Блоки для сбора статистических данных
Два последних примера в предыдущем параграфе представляют собой законченные модели одноканальной и многоканальной СМО с ожиданием. Однако такие модели разрабатываются обычно для исследования различных характеристик, связанных с ожиданием заявок в очереди: длины очереди, времени ожидания и т. п. , а в приведенных примерах очередь транзактов образуется в списке текущих событий и недоступна исследователю. Для регистрации статистической информации о процессе ожидания транзактов в модели должны присутствовать статистические объекты: очереди или таблицы. Объекты типа очередь создаются в модели путем использования блоков регистраторов очередей: QUEUE (стать в очередь) и DEPART (уйти из очереди), имеющих следующий формат:
1 имя QUEUE A, B 1. 5 имя DEPART A, B
В поле A указывается номер или имя очереди, а в поле B - число единиц, на которое текущая длина очереди увеличивается при входе транзакта в блок QUEUE или уменьшается при входе транзакта в блок DEPART. Обычно поле B пусто, и в этом случае его значение по умолчанию принимается равным 1. Для сбора статистики о транзактах, заблокированных перед каким-либо блоком модели, блоки QUEUE и DEPART помещаются перед и после этого блока соответственно. При прохождении транзактов через блоки QUEUE и DEPART соответствующим образом изменяются следующие СЧА очередей: Q - текущая длина очереди; QM - максимальная длина очереди; QA - целая часть средней длины очереди; QC - общее число транзактов, вошедших в очередь; QZ - число транзактов, прошедших через очередь без ожидания (число "нулевых" входов); QT целая часть среднего времени ожидания с учетом "нулевых" входов; QX - целая часть среднего времени ожидания без учета "нулевых" входов. Дополним приведенную на рис. 7 модель одноканальной СМО блоками QUEUE и DEPART (рис. 9). Теперь транзакты, заблокированные перед блоком SEIZE из-за занятости устройства SYSTEM, находятся в блоке QUEUE, внося свой вклад в статистику о времени ожидания, накапливаемую в статистическом объекте типа "очередь" с именем LINE. При освобождении устройства первый из заблокированных транзактов войдет в блок SEIZE и одновременно в блок DEPART, прекращая накопление статистики об ожидании этого транзакта.
1 EXP FUNCTION RN1, C24
0, 0/. 1, .104/. 2, .222/. 3, .355/. 4, .509/. 5, .69/. 6, .915 . 7, 1. 2/. 75, 1. 38/. 8, 1. 6/. 84, 1. 85/. 88, 2. 12/. 9, 2. 3 . 92, 2. 52/. 94, 2. 81/. 95, 2. 99/. 96, 3. 2/. 97, 3. 5/. 98, 3. 9
. 99, 4. 6/. 995, 5. 3/. 998, 6. 2/. 999, 7/. 9998, 8 GENERATE 100, FN$EXP QUEUE LINE SEIZE SYSTEM DEPART LINE ADVANCE 80, FN$EXP RELEASE SYSTEM TERMINATE 1 1. 5 Рис. 9
Очень часто исследователя интересует не только среднее значение времени ожидания в очереди, но и дисперсия этого времени, а также статистическое распределение выборки времени ожидания, представляемое обычно графически в виде гистограммы. Имея такое распределение, можно оценить вероятность того, что время ожидания превысит или не превысит некоторое заданное значение. Для сбора и обработки данных о выборочном распределении времени ожидания в очереди служат статистические объекты типа Q-таблица. Для создания в модели такой таблицы она должна быть предварительно определена с помощью оператора определения QTABLE (Q-таблица), имеющего следующий формат: имя QTABLE A, B, C, D Здесь имя - имя таблицы, используемое для ссылок на нее; A номер или имя очереди, распределение времени ожидания в которой необходимо получить; B - верхняя граница первого частотного интервала таблицы; C - ширина частотных интервалов; D - количество частотных интервалов. Диапазон всевозможных значений времени ожидания в очереди, указанной в поле A, разбивается на ряд частотных интервалов, количество которых указано в поле D. Первый из этих интервалов имеет ширину от минус бесконечности до величины, указанной в поле B, включительно. Второй интервал включает значения, большие, чем величина первой границы в поле B, но меньшие или равные B+C, и т. д. Все промежуточные интервалы имеют одинаковую ширину, указанную в поле C. Наконец, последний интервал включает все значения, большие, чем последняя граница. Значения операндов B, C и D должны задаваться целыми константами. Операнд B может быть неположительным, хотя для Q-таблицы это не имеет смысла, так как время не может быть отрицательным. Операнды C и D должны быть строго положительными. При прохождении транзакта через блоки QUEUE и DEPART его время ожидания фиксируется, и к счетчику частотного интервала таблицы, в который попало это время, добавляется 1. Одновременно в таблице накапливается информация для вычисления среднего значения и среднеквадратического отклонения (корня из дисперсии) времени ожидания. По окончании моделирования среднее значение и среднеквадратическое отклонение времени ожидания, а также счетчики попаданий в различные частотные интервалы выводятся в стандартный отчет GPSS/PC. Таблицы, как и другие объекты GPSS/PC, имеют СЧА: ТС - общее число транзактов, вошедших в очередь, связанную с таблицей; TB целая часть среднего времени ожидания в очереди; TD - целая часть среднеквадратического отклонения времени ожидания в очереди. Дополним модель из примера на рис. 9 оператором QTABLE для получения распределения времени ожидания в очереди с именем LINE (рис. 10). 1
WTIME QTABLE LINE, 50, 50, 10 EXP FUNCTION RN1, C24
0, 0/. 1, .104/. 2, .222/. 3, .355/. 4, .509/. 5, .69/. 6, .915
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9
|