Автор: Пользователь скрыл имя, 06 Февраля 2013 в 21:57, научная работа
Имитационное моделирование (ИМ) является признанным методом экспериментального исследования в области анализа процессов обработки информации. Часто задачи исследования, относящиеся к области информационных процессов, достаточно просто сформулированы, но без использования средств, типичных для систем ИМ, их решения программными методами затруднено.
Специальный тип данных PTRANSACT = ^TRANSACT служит для ссылки на транзакты.
Первые восемь полей доступны для приминения пользователем и обозначены символом “Р”. Символом “S” отмечены поля, используемые для системных целей. В частности, если транзакт используется для имитации потока автомобилей на автостраде, его параметры могут применяться для идентификации конкретного автомибиля в потоке, например первый действительный параметр может хранить количество топлива, а второй – указывать среднее потребление бензина на километр пути.
Спецификация полей прибора (FACILITY):
TEST: BOOLEAN |
P |
– признак включения; |
NAME: ALFA |
P |
– имя прибора; |
STATUS: (FREE,SEIZED,PREEMPTED) |
S |
– состояние прибора; |
SLED: PFACILITY |
S |
– ссылка на следующий прибор в списке; |
PRED: PFACILITY |
S |
– ссылка на предыдущий прибор в списке; |
TRANSPOINT: PTRANSACT |
S |
– ссылка на отработанный транзакт; |
P: INTEGER |
S |
– число захватов; |
CI: INTEGER |
S |
– число входов в прибор; |
TIMEF: REAL |
S |
– суммированное время занятости; |
PRETIME: REAL |
S |
– время предыдущего обращения; |
MTIME: REAL |
S |
– среднее время занятости ; |
PRO: REAL |
S |
– загрузка прибора; |
FL: PLISTT |
S |
– ссылка на список ожидаемых транзактов; |
INTER: PLISTT |
S |
– ссылка на список прерванных транзактов. |
Если FAC1: PFACILITY – ссылка на прибор, то используя имя FAC1^. STATUS можно определить его состояния (FREE – свободен, SEIZED – занят, PREEMPTED – захвачен). Описание и назначение полей очередей (QUEUE).
TEST: BOOLEAN |
P |
– признак включения; |
NAME: ALFA |
P |
– имя прибора; |
STATUS: (EMPTY,FULL) |
S |
– состояние очереди; |
LQ: INT |
S |
– длина очереди текущая; |
MQ: INT |
S |
– длина очереди максимальная; |
SIZE: INT |
S |
– длина очереди предельная; |
SLED: PQUEUE |
S |
– ссылка на следующую очередь в списке; |
PRED: PQUEUE |
S |
– ссылка на предыдущую очередь в списке; |
CI: INTEGER |
S |
– число входов в очереди общее; |
CO: INTEGER |
S |
– число входов в очереди нулевой длины; |
TIMEQ: REAL |
S |
– суммарное время занятости; |
PRETIME: REAL |
S |
– время предыдущего обращения; |
LM: REAL |
S |
– средняя длина; |
MTIME: REAL |
S |
– среднее время занятости. |
Ссылка на очередь определяется типом PQUEUE = ^QUEUE. Если Q1 – ссылка на очередь, то Q1^.LQ определяет ее текущую длину. Параметры очередей используются для различных целей. Так, текущие длины очередей могут служить для выбора транзактами кратчайших путей обслуживания.
Накопитель как статистический объект определил типом STORAGE. Приведем значение полей.
TEST: BOOLEAN |
P |
– признак включения; |
NAME: ALFA |
P |
– имя прибора; |
S: INTEGER |
S |
– емкость; |
SS: INTEGER |
S |
– текущее содержание; |
SF: INTEGER |
S |
– доступная емкость; |
SM: INTEGER |
S |
– максимальное содержимое; |
CI: INTEGER |
S |
– число входов; |
UT: REAL |
S |
– загрузка; |
SMEAN: REAL |
S |
– среднее содержимое; |
MTIME: REAL |
S |
– среднее время занятости; |
TIMES: REAL |
S |
– суммарное время занятости; |
PRETIME: REAL |
S |
– время предыдущего обращения; |
SLED: PSTORAGE |
S |
– ссылка на следующий накопитель в списке; |
PRED: PSTORAGE |
S |
– ссылка на предыдущий накопитель в списке; |
SLT: PLISTT |
S |
– ссылка на список ожидающих транзактов. |
Рассмотренный выше подход к построению моделей использован для построения системы моделирования на Паскале (СИМПАС), разработанных А.А. Марковым в 1998г. [8].
Достоинства системы позволяет использовать для составления имитационных программ обычные средства языка;
Пример. Рассчитать двухмашинный вычислительный комплекс с одной общей очередью заданий, поступающих на вход комплекса от внешних абонентов АБ 1, АБ 2 (рис.6.2). Задания обслуживаются в порядке поступления (по дисциплине «первый пришел – первый обслужен» FIFO), время обработки одного задания распределено в случае абонента АБ 1 экспоненциально, с интенсивностью 1/21, а в случае АБ 2 – постоянно и равно 25 единицам времени для каждой ЭВМ. Абоненты вырабатывают задания через случайные интервалы времени:
Рис. 6.2. Формализованная схема модели
Через каждые 1000 единиц времени одна
ЭВМ выключаются для тестирован
Отключается только одна ЭВМ, вторая в это время ведет обработку остающихся в очереди задач.
АБ – генератор сообщений; 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 – задает время файла, в который были введены итоговые статистичексие данные.
Дальнейшие процедуры
{5} – событийная часть. Системное время (SYSTIME) не должно превысить 500000 единиц.
В цикле моделирования
Алгоритм управления основан на
идее передачи динамичексих объектов
системы моделирования –
АВ1: Генерируются транзакты через 20-25 единиц модельного времени. Созданный транзакт переходит ко второму событию.
2: Транзакты имеют параметры. В действительный параметр PR[1] движущегося транзакта TRANS^, записывается значение задержек при обработке в ЭВМ. После этого транзакт направляется к выполнению событий QUE.
АВ2: Выполняются аналогичные действия, за исключением того, что опущена процедура NEXT, поскольку следующие за событием и идет событие QUE, и движущийся транзакт в результате выполнения PLAN к этому событию перейдет самостоятельно.
QUE: движущийся транзакт регистрируется в очереди, увеличивая ее длину на единицу, после чего переходит к событию {6}.
6: Выполняется попытка занять
один из ЭВМ. Если есть
7: Транзакт отмечается как
8: Транзакт задерживается в этом событии, занимая одну единицу накопителя COMP на время, указанное в его первом действительном параметре.
9: Транзакт совобождает одну единицу накопителя COMP. На этом его продвижение в модели закончено, и он уничтожается процедурой DESTROY.
WRK: Это событие устанавливает приоритет проходящего через него транзакта равных единице. Транзакт, имитирующий задание на тестирование и профилактику, проходит через это событие один раз.
21: Событие аналогично событию 4, только следующее событие 22.
22: Проходящий транзакт
23: Событие аналогичное 6, только
через эту точку может
24: Событие аналогичное 8.
25: Освобождается одна ячейка накопителя COMP.
26: Транзакт направляется к
После истечения модельного времени процедура PRINTALL распечатывает всю статистику.
Процедуры INQUEUE, OUTQUEUE служат для сбора статистики. В итоговой распечатке приводятся статистические данные как об общих характеристиках модели, так об используемых в модели объектах: общее число выполненых событий; реальное машинное время, потраченное на выполнение модели; модельное время; скорость выполнения событий в модели, номер последнего транзакта. Для накопителя: среднее, максимальное и текущее число транзактов в накопителе, время занятости, число обработанных транзактов.
Как уже отмечалось,транзакт является
В результате действий, выполняемых процедурой PLAN и другими процедурами системы моделирования, транзакты постоянно перемещаются между различными списками.
Информация о работе Обзор программных средств имитационного моделирования