
- •Пример построения им
- •Этапы построения им
- •РРис. 1. Q – схема вычислительной системы: каналы к1 и к2 эвм1 и эвм2 соответственно; и – источник запросов
- •Моделирующая программа на языке Си
- •Int ns, /*наличие заявки на входе системы*/
- •Табличный способ
- •Порядок выполнения работы
- •Определение выборочных оценок
- •Порядок выполнения работы
- •Аппаратный способ
- •Порядок выполнения работы
- •Определение числовых характеристик (табл.1).
- •Int ns, /*наличие заявки на входе системы*/
- •Сведения о дискретных случайных величинах
- •Функция распределения непрерывных случайных величин
- •Список литературы
- •Содержание
Государственный комитет Российской Федерации
по высшему образованию
КАЗАНСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
им. А. Н. ТУПОЛЕВА
___________________________________________________________
Т. М. Живетина, Л. Н. Маврина, В. А. Песошин
МОДЕЛИРОВАНИЕ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ
Лабораторный практикум
Казань 1995
Цель лабораторного практикума
Изучение принципов построения имитационных моделей вычислительных систем как инструментария, используемого для анализа вычислительной системы и определения ее оптимальной структуры.
Принцип построения практикума
Для заданной концептуальной модели стохастической вычислительной системы вначале создается детерминированная имитационная модель. Затем в нее постепенно вводятся заранее сформированные и проанализированные на соответствие предъявляемым требованиям стохастические воздействия с целью получения стохастической имитационной модели заданной системы.
Объем лабораторного практикума
8 работ, каждая из которых выполняется в лаборатории локальных вычислительных сетей.
Содержание лабораторных работ
1. Построение формальной модели вычислительной системы. Разработка детерминированной модели на универсальном языке программирования. Теоретическая оценка значений выходных характеристик и отладка детерминированной модели, сравнение ее результатов с полученными теоретическими. Нахождение оптимальной структуры вычислительной системы.
2. Изучение аппаратных генераторов равномерно распределенных случайных и псевдослучайных чисел.
3. Изучение программных генераторов равномерно распределенных псевдослучайных чисел.
4. Изучение статистических тестов анализа генераторов случайных и псевдослучайных чисел.
5. Изучение способов получения случайных и псевдослучайных чисел, имеющих заданное распределение.
6. Статистический анализ генераторов чисел, имеющих заданное распределение.
7. Переход от детерминированной модели к стохастической, получение и анализ результатов работы стохастической модели.
8. Построение имитационной модели изучаемой вычислительной системы на языке моделирования GPSS, ее сравнение с ранее созданной моделью на универсальном языке программирования.
Лабораторная работа № 1
ПОСТРОЕНИЕ ДЕТЕРМИНИРОВАННОЙ МОДЕЛИ ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЫ
Цель работы: изучение основных принципов имитационного моделирования вычислительных систем (ВС); создание и отладка имитационной модели конкретной ВС на одном из универсальных языков программирования.
Имитационная модель (ИМ) представляет собой отображение некоторого идеализированного процесса функционирования реальной вычислительной системы. Для детерминированной модели предполагается отсутствие всяких случайных воздействий, при этом реальные случайные величины заменяются, как правило, их математическими ожиданиями.
Составление имитационной модели проводят на основе алгоритмической модели процесса, представленной, в частности, Q-схемой.
Программа, являющаяся имитационной моделью, описывает последовательный вычислительный процесс. При этом параллельные процессы функционирования ВС отображаются на один последовательный, реализуемый ЭВМ. Главные задачи такого отображения – создание и продвижение модельного времени, синхронизация в этом времени событий, происходящих в ВС, обеспечение «псевдораспараллеливания» процессов, создание средств слежения за правильностью работы модели.
Таким образом, этапы построения ИМ следующие:
- создание формальной схемы функционирования ВС;
- определение единицы модельного времени;
- определение существенных для модели внешних воздействий, параметров и характеристик;
- теоретическая оценка результатов;
- выбор универсального языка программирования и оформление на нем ИМ.
Пример построения им
Концептуальная модель.
Вычислительный зал представляет собой двухмашинный вычислительный комплекс. Время прихода пользователей распределено по равномерному закону в интервале от 1 до 5 мин. Если ЭВМ1 занята, пользователь выполняет свое задание на ЭВМ2. Если обе ЭВМ заняты, пользователю отказывают в обслуживании. Время обработки задания на ЭВМ1 имеет нормальный закон распределения с математическим ожиданием 6 мин, дисперсией 2 мин, на ЭВМ2 – экспоненциальный закон распределения с математическим ожиданием 7 мин. Смоделировать работу вычислительного зала в течение 8 часов. Определить процент заданий, выполненных на ЭВМ1. Варьируя параметрами системы, определить ее оптимальную структуру, обеспечивающую минимальное время простоя оборудования.
Этапы построения им
1. Строится формальная схема (Q-схема) заданной вычислительной системы (рис. 1).
2. Определяется множество внешних воздействий, внутренних параметров, характеристик, существенных для анализа функционирования системы.
Внешние воздействия: tps – время между заявками.
Внутренние параметры и характеристики системы:
tm1 – время обработки задания на ЭВМ1;
tm2 – время обработки задания на ЭВМ2;
sm1 состояние ЭВМ1 (sm1 = false – ЭВМ1 свободна;
sm1 = true – ЭВМ1 занята);
sm2 состояние ЭВМ2 (sm2 = false – ЭВМ2 свободна;
sm2 = true – ЭВМ2 занята);
ns – наличие заявки на входе системы;
kr1 – количество заявок, выполненных на ЭВМ1;
kr2 – количество заявок, выполненных на ЭВМ2;
kot – количество отказов в обслуживании заявок.
РРис. 1. Q – схема вычислительной системы: каналы к1 и к2 эвм1 и эвм2 соответственно; и – источник запросов
3. На первом этапе имитационного моделирования создается детерминированная модель заданной вычислительной системы, стохастические потоки заменяются их математическими ожиданиями:
время между приходом пользователей – 3 мин,
время обработки задания на ЭВМ1 – 6 мин,
время обработки задания на ЭВМ2 – 7 мин.
4. За единицу модельного времени (емв) принимается минимальный интервал реального времени, в течение которого система не меняет своего состояния. В данной задаче за емв целесообразно принять 1 мин. Таким образом, время работы системы – 8 часов или 480 единиц модельного времени.
5. Рассчитывается теоретически значение выходной характеристики – процент выполненных на ЭВМ1 заданий.
Работу данной вычислительной системы отразим временными диаграммами (рис. 2).
Рис. 2. Временные диаграммы работы системы
Пользователи приходят в вычислительный зал через каждые 3 единицы модельного времени (емв). Задание первого пользователя поступает на ЭВМ1. В момент прихода второго пользователя ЭВМ1 еще занята, и начинает работать ЭВМ2. Приходит третий пользователь, к этому времени ЭВМ1 освобождается, она вновь включается в работу, обрабатывая заявку третьего пользователя. В момент прихода четвертого пользователя обе ЭВМ заняты, и пользователю отказывают в обслуживании. С приходом пятого пользователя весь цикл повторяется. Таким образом, за каждый цикл (12 емв) в систему поступят заявки от четырех пользователей. Из них две заявки обрабатываются на ЭВМ1, одна – на ЭВМ2 и одна заявка остается необслуженной. Система работает 480 емв, что составляет 40 циклов. Следовательно, из 160 поступивших за это время заявок на ЭВМ1 будет обработано 80 заявок ( что составляет 50%), на ЭВМ2 – 40 заявок (25%), необработанными останутся 40 заявок (25%).
6. Разрабатывается блок-схема алгоритма (рис. 3).
Рис. 3. Блок-схема моделирующего алгоритма
Рис. 3. Окончание
7. Разрабатывается моделирующая программа на одном из языков программирования. В данном примере моделирующая программа представлена в двух вариантах: на языке Паскаль и на языке Си.
Моделирующая программа на языке Паскаль
program model(input,output);
uses crt;
var
tps, {время между приходом заявок}
tm1, {время обработки задания на ЭВМ1}
tm2: real; {время обработки задания на ЭВМ2}
ns, {наличие заявки на входе системы}
sm1, {состояние ЭВМ1
( ЭВМ1 = false, если Эвм1 свободна;
ЭВМ1 = true, если ЭВМ1 занята)}
sm2: boolean; {состояние ЭВМ2}
kr1, {количество заявок, выполненных на ЭВМ1}
kr2, {количество заявок, выполненных на ЭВМ2}
kot: integer; {количество отказов в обслуживании пользователей}
t, {текущее время работы системы}
tektm1, {текущее время обработки задания на ЭВМ1}
tektm2, {текущее время обработки задания на ЭВМ2}
tektps: integer; {текущее время между поступлениями заявок}
proz: real; {процент заявок, выполненных на ЭВМ1}
begin
{установка начальных условий}
ns:= true; sm1:= false; sm2:= false;
kr1:=0; kr2:=0; kot:=0;
tektm1:=0; tektm2:=0; tektps:=0;
t:=0;
{ввод параметров системы}
clrscr;
writeln('введите исходные данные(в ед. модельного времени):');
write('время между приходом пользователей =>');
readln(tps);
write('время обработки задания на ЭВМ1 =>');
readln(tm1);
write('время обработки задания на ЭВМ2 =>');
readln(tm2);
while t <= 480 do {условие продолжения работы системы}
begin
tektps:=tektps+1; {изменение текущего времени между заявками}
if tektps>=tps then {поступила очередная заявка}
begin
ns:=true;
tektps:=0;
end;
if sm1 then {ЭВМ1 обрабатывает заявку}
begin
{изменение текущего времени работы ЭВМ1}
tektm1:=tektm1+1;
if tektm1>tm1 then {заявка выполнена}
begin
sm1:=false; {освобождаем ЭВМ1}
tektm1:=0;
kr1:=kr1+1;
end;
end;
if sm2 then {ЭВМ2 обрабатывает заявку}
begin
{изменение текущего времени работы ЭВМ2}
tektm2:=tektm2+1;
if tektm2>tm2 then {заявка выполнена}
begin
sm2:=false; {освобождаем ЭВМ2}
tektm2:=0;
kr2:=kr2+1;
end;
end;
if ns then {на входе имеется заявка}
begin
if not sm1
then {ЭВМ1 свободна}
begin
sm1:= true; {занимаем ЭВМ1}
tektm1:=tektm1+1;
end
else {ЭВМ1 занята}
if not sm2
then {ЭВМ2 свободна}
begin
sm2:= true; {занимаем ЭВМ2}
tektm2:=tektm2+1;
end
else {обе машины заняты}
kot:=kot+1; {отказ в обслуживании}
ns:=false;
end;
t:=t+1; {переход к следующему моменту модельного времени}
end;
{система отработала заданное время}
proz:=kr1*100/(kr1+kr2+kot);
{вывод результатов на экран}
writeln; writeln;
writeln('за 8 часов работы системы на ЭВМ1 выполнено',
proz:7:1,'% поступивших заявок:');
writeln('на ЭВМ2 выполнено',(kr2*100/(kr1+kr2+kot)):7:1,
'% поступивших заявок:');
writeln('отказано в обслуживании',(kot*100/(kr1+kr2+kot)):7:1,'%');
writeln;writeln('нажмите на <ВВОД>');
readln;
end.