Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
model-00ae89b6 / Л13_М_pr_.doc
Скачиваний:
49
Добавлен:
10.04.2015
Размер:
166.91 Кб
Скачать

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 и другими процедурами системы моделирования, транзакты постоянно перемещаются между различными списками.

Соседние файлы в папке model-00ae89b6