
- •Обзор программных средств имитационного моделирования
- •Глава 6. Обзор программных средств имитационного моделирования
- •6.1. Моделирование информационного – вычислительных процессов на языках программирования высокого уровня
- •6.2. Методика построения моделей
- •6.2.1. Событийный подход
- •6.2.2. Процессо – ориентированный подход
- •6.3. Объекты системы моделирования
- •6.3.1. Множественные типы данных
- •6.3.2. Списковые структуры или списки
- •6.3.3. Константы
- •6.3.4. Системные переменные
- •6.4. Описание объектов модели в симпас
- •6.5. Пример модели задачи с дискретно–непрерывным планированием времени
- •Литература
6.5. Пример модели задачи с дискретно–непрерывным планированием времени
Рассмотренный выше подход к построению моделей использован для построения системы моделирования на Паскале (СИМПАС), разработанных А.А. Марковым в 1998г.[8].
Достоинства системы позволяет использовать для составления имитационных программ обычные средства языка;
простота и компактность записи моделей;
отсутствие необходимости изучения специализированных программных средств, специфических для языка моделирования;
возможность уделить основное внимание самой задачи, а не оператора языка моделирования.
Пример. Рассчитать двухмашинный вычислительный комплекс с одной общей очередью заданий, поступающих на вход комплекса от внешних абонентов АБ 1, АБ 2 (рис.6.2). Задания обслуживаются в порядке поступления (по дисциплине «первый пришел – первый обслужен»FIFO), время обработки одного задания распределено в случае абонента АБ 1 экспоненциально, с интенсивностью 1/21, а в случае АБ 2 – постоянно и равно 25 единицам времени для каждой ЭВМ. Абоненты вырабатывают задания через случайные интервалы времени:
интервал между заданиями в потоке от абонента АБ 1 равномерно распределен на отрезке 20-25 единиц времени;
интервал между заданиями в потоке от АБ 2 равномерно распределен на отрезке 25-30 единиц времени.
Рис.
6.2. Формализованная схема модели
Через каждые 1000 единиц времени одна ЭВМ выключаются для тестирования и профилактики, длительность этого процесса – случайная величина, распределенная на отрезке 150-170 единиц времени. Будем предполагать, что остановка для профилактических работ может быть проведена только после завершения обработки задания тестируемой ЭВМ.
Отключается только одна ЭВМ, вторая в это время ведет обработку остающихся в очереди задач.
АБ– генератор сообщений;Q
– очередь;–
задержка;
FIFO – дисциплина установки в очередь “первый – первым”;
LIFO – дисциплина установки в начало очереди «последний пришел – первый обслужен».
Процесс тестирования представлен задачей, постоянно проходящей обработку в цикле «вход – ЭВМ – выход. Дополнительно предположим, что задание на тестирование и профилактику – единственное. Распечатка программы приведена ниже.
USES
SIMPAS ;
PROCEDURE MODEL ;
CONST
AB1=1 ; AB2=3 ; WRK=20 ; QUE-5 ;
VAR
COMP : PSTORACE ;
QUEUE1 : PQUEUE;
BEGIN
TITLE : `МОДЕЛЬ :MDL-1.КОМПЛИЛЯТОР : ВР.СРЕДА`+`
ИСПОЛНЕНИЕ MS-DOS;
OUTFILENAME : `MDLIDOSR`;
INITLIST
(1000);
NEW STORAGE (COMP, `COMP1-2`,2);
NEW QUEUE (QUEUE1,`QUEUE1`);
INITCREATE (AB 1,0);
INITCREATE (AB 2,0);
INITCREATE (WRK,0);
WHILE
SYSTIME <500000 DO
BEGIN PLAN;
CASE
SYSEVENT OF
AB1 : CREATE (RANDAB(20,25,V1));
2: BEGIN
TRANS^.PR[1] : =RANDEXP(1/21, V1); NEXT (QUE)
END;
AB2: CREATE (RANDAB (25, 30, V1));
4: BEGIN TRANS^.PR[1] : =25; END;
QUE: INQUEUE (QUEUE1);
6: ENTER (COMP,1);
7: OUTQUEUE (QUEUE1);
8: BEGIN DELAYN (TRANS^.PR[1]) END;
9: BEGIN
LEAVE (COMP,1);
END;
10: DESTROY;
WRK: TRANS^.PRTY : =1;
21: TRANS^.PR[1] : =RANDAB (150, 170, V1);
22: DELAYT (1000);
23: ENTER (COMP,1);
24: DELAYT (TRANS^.PR[1]);
25: LEAVE (COMP,1);
26: NEXT (21);
END {CASE}
END ; {WHILE}
END ; {MODEL}
BEGIN
MODEL;
PRINTALL;
CLOSE (OUTFILE);
END.
Все процедуры системного моделирования определены в модуле SIMPAS.PAS {1}.
Константы введены для мнемонических обозначений некоторых событий {2}:
АВ1 - генерация сообщений 1-м абонентом;
АВ2 - генерация сообщений 2-м абонентом;
QUE – точка входа в очередь сообщений, ожидающих обработки в компьютерах;
WRK – точка входа (событие) задания, выполняющего тестирование и профилактику.
Среда моделирования {3} определяется переменная COMP для представления накопителя, в котором одновременно может находиться не более 2-х транзисторов. ПеременнаяQUEUE1 – для сбора статистики о длине очереди заданный на обработку.
TITLE – заголовок в итоговой распечатке;
OUTILENAME – задает время файла, в который были введены итоговые статистичексие данные.
Дальнейшие процедуры имициализируют модельную среду: создание вмодели 1000 транзактов {4}. В момент создания среды моделирования (INITLIST) системного времени =0.
{5} – событийная часть. Системное время (SYSTIME) не должно превысить 500000 единиц.
В цикле моделирования повторяется управляющая процедура PLAN {6}, за которой представлен блок выборки событий {7}. PLAN используется для установки системного времениSYSTIME и назначения исполняемого события SYSEVENT и назначения исполняемого событияSYSEVENT, реализует алгоритм моделирования, назначая порядок выполнения событий, реагируя на изменение модельной среды в результате действий моделирующих процедур. Выбор ситемного события задается константой в операторе CASE.
Алгоритм управления основан на идее передачи динамичексих объектов системы моделирования – тразактов от события к событию.
АВ1: Генерируются транзакты через 20-25 единиц модельного времени. Созданный транзакт переходит ко второму событию.
2: Транзакты имеют параметры. В действительный параметр PR[1] движущегося транзактаTRANS^, записывается значение задержек при обработке в ЭВМ. После этого транзакт направляется к выполнению событийQUE.
АВ2: Выполняются аналогичные действия, за исключением того, что опущена процедура NEXT, поскольку следующие за событием и идет событиеQUE, и движущийся транзакт в результате выполненияPLAN к этому событию перейдет самостоятельно.
QUE: движущийся транзакт регистрируется в очереди, увеличивая ее длину на единицу, после чего переходит к событию{6}.
6: Выполняется попытка занять один из ЭВМ. Если есть свободный, то он занимается. Если нет, то транзакт переходит в состояние ожидания. Ждущие освобождения ЭВМ транзакты в этой точке выстраиваются в очередь FIFO, в порядке приоретета. Если транзакт занял накопитель, то он переходит к событию 7.
7: Транзакт отмечается как вышедший из очереди ожидающих.
8: Транзакт задерживается в этом событии, занимая одну единицу накопителя COMP на время, указанное в его первом действительном параметре.
9: Транзакт совобождает одну единицу накопителя COMP. На этом его продвижение в модели закончено, и он уничтожается процедуройDESTROY.
WRK: Это событие устанавливает приоритет проходящего через него транзакта равных единице. Транзакт, имитирующий задание на тестирование и профилактику, проходит через это событие один раз.
21: Событие аналогично событию 4, только следующее событие 22.
22: Проходящий транзакт задерживается на 100 единиц времени, затем переходит к событию 22.
23: Событие аналогичное 6, только через эту точку может проходить транзакт, имитирующий задание на тестирование. Его приоритет =1, поэтому в случае ожидания он помещен в начало очереди.
24: Событие аналогичное 8.
25: Освобождается одна ячейка накопителя COMP.
26: Транзакт направляется к событию 21.
После истечения модельного времени процедура PRINTALL распечатывает всю статистику.
Процедуры INQUEUE, OUTQUEUE служат для сбора статистики. В итоговой распечатке приводятся статистические данные как об общих характеристиках модели, так об используемых в модели объектах: общее число выполненых событий; реальное машинное время, потраченное на выполнение модели; модельное время; скорость выполнения событий в модели, номер последнего транзакта. Для накопителя: среднее, максимальное и текущее число транзактов в накопителе, время занятости, число обработанных транзактов.
Как уже отмечалось,транзакт является
В результате действий, выполняемых процедурой PLAN и другими процедурами системы моделирования, транзакты постоянно перемещаются между различными списками.