Автор работы: Пользователь скрыл имя, 03 Июня 2013 в 19:33, лабораторная работа
Цель работы:
Ознакомление с методами приоритетного планирования параллельных задач с жёсткими временными ограничениями в системах реального времени.
Задание:
Составить программу анализа производительности проекта программного обеспечения параллельной СРВ.
Министерство образования и науки Российской Федерации
Федеральное государственное
бюджетное образовательное
«Московский государственный
университет дизайна и
Лабораторная работа №4
“Анализ производительности проекта программного обеспечения параллельной системы реального времени ”
Вариант №4
Выполнил:
Бурдаков Н. К.
группа 40-10
Проверил:
Синеок А. Б.
Москва, 2013
Цель работы:
Ознакомление с методами приоритетного планирования параллельных задач с жёсткими временными ограничениями в системах реального времени.
Задание:
Составить программу анализа производительности проекта программного обеспечения параллельной СРВ.
Вариант №4
Tpi- массив времени начала предыдущего опроса датчика i;
∆ti-массив времени начала предыдущего опроса датчика i.
Период опроса датчиков:
Имеется пять задач у каждой из которых свой период Ti
Блок-схема:
n - число датчиков
x(в)[1..n], x(н)[1..n] – массивы верхних и нижних предельных значений датчиков
dx(a)[1..n] – массив значений аварийных отклонений контролируемых параметров от нормы
i – порядковый номер датчика
х – массив результатов измерений
XAV – массив переменных, вышедших за пределы аварийных значений
t – текущее время
Tk – общее время опроса датчиков
tp – время начала текущего опроса
Программный код:
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btnpuskClick(Sender: TObject);
var
x:array [0..200,0..5] of extended;
xav: array [0..200,0..5] of extended;
xv: array [0..5]of extended;
xn: array [0..5]of extended;
xd: array [0..5]of extended;
d1v, d1n, d1d:extended;
d2v, d2n, d2d:extended;
d3v, d3n, d3d:extended;
d4v, d4n, d4d:extended;
d5v, d5n, d5d:extended;
i,j,k,t,dt,tk,o, tp,f:integer;
v,n:extended;
Ti: array [0…200,0…5] of extended;
begin
xv[1]:=60;
xv[2]:=30;
xv[3]:=150;
xv[4]:=5;
xv[5]:=100;
xn[1]:=30;
xn[2]:=10;
xn[3]:=50;
xn[4]:=1;
xn[5]:=20;
xd[1]:=0.5;
xd[2]:=0.5;
xd[3]:=1;
xd[4]:=0.05;
xd[5]:=0.5;
Ti[1]=6;
Ti[2]=3;
Ti[3]=4;
Ti[4]=2;
Ti[5]=7;
tk:=strtoint(edittk.Text);
dt:=strtoint(editdt.Text);
f:=1;
t:=0;
k:=0;
tp:=t;
for i:=0 to 20 do begin
sgr.Cells[0,i+1]:=IntToStr(i);
sgr.RowCount:=sgr.RowCount+1;
for j:=1 to 5 do begin
v:=xv[j]+xd[j];
n:=xn[j]-xd[j];
x[i,j]:=t;
sgr.Cells[1,i+1]:=inttostr(t);
randomize;
x[i,j]:=random*v+n;
Sgr.Cells[j+1,i+1]:=
if (x[i,j]<n) or (x[i,j]>v) then begin
//showmessage('Момент
времени: '+inttostr(t)+#13#13+'Номер
датчика: '+inttostr(j) +#13#13+'Значение
датчика: '+FloatToStrf(x[i,j],ffgeneral
sgrav.Cells[0,k+1]:=IntToStr(
sgrav.RowCount:=sgr.RowCount+
sgrav.Cells[1,f]:=inttostr(t);
sgrav.Cells[2,f]:=inttostr(j);
sgrav.Cells[3,f]:=FloatToStrf(
sgrav.Cells[4,f]:=floattostr(
sgrav.Cells[5,f]:=floattostr(
inc(f);
inc(k);
end;
application.processmessages;
sleep(200);
Gauge1.Progress:=i+1;
end;
repeat
t:=t+dt;
if t<=Tk then break;
until (t-tp)<>dt;
end;
showmessage('Процесс завершён'
end;
procedure TForm1.FormShow(Sender: TObject);
begin
sgr.Cells[0,0]:='№';
sgr.Cells[1,0]:='Время';
sgr.Cells[2,0]:='Датчик 1';
sgr.Cells[3,0]:='Датчик 2';
sgr.Cells[4,0]:='Датчик 3';
sgr.Cells[5,0]:='Датчик 4';
sgr.Cells[6,0]:='Датчик 5';
sgrav.Cells[0,0]:='№';
sgrav.Cells[1,0]:='Время';
sgrav.Cells[2,0]:='Датчик';
sgrav.Cells[3,0]:='Значение';
sgrav.Cells[4,0]:='MAX знач.';
sgrav.Cells[5,0]:='MIN знач.';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
close;
end;
end.
Экранная форма программы: