РПЗ_2 (23 вариант), страница 12
Описание файла
Файл "РПЗ_2" внутри архива находится в папке "23 вариант". Документ из архива "23 вариант", который расположен в категории "". Всё это находится в предмете "эксплуатация автоматизированных систем обработки информации и управления (асоииу)" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "эксплуатация асоииу" в общих файлах.
Онлайн просмотр документа "РПЗ_2"
Текст 12 страницы из документа "РПЗ_2"
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Edit11: TEdit;
Edit12: TEdit;
Edit13: TEdit;
Edit14: TEdit;
Edit15: TEdit;
Edit16: TEdit;
Edit17: TEdit;
Edit18: TEdit;
Edit19: TEdit;
Button1: TButton;
Button2: TButton;
Label20: TLabel;
Label21: TLabel;
Label22: TLabel;
Image1: TImage;
Label23: TLabel;
Label24: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function GetMinimum(f1:real; f2:real; f3:real):real;
function GetPower( f:real;Power:real) :real;
var
Form2: TForm2;
//////////////////////////////////
NPC,NServ:Integer; //кол-во рабочих станций, серверов
MTQueryPC , // время дообработки запроса
MTFormQueryPC , //формирование запроса
MTTChannelDirect , // время передачи в прямом направлении
MTTChannelRevers , //время передачи в обратном направлении
MTQueryServer , //обработка на сервере
Precision : real;
implementation
{$R *.dfm}
function GetMinimum(f1:real; f2:real; f3:real):real;
var Minimum:real;
begin
Minimum := f1;
if (f2 < Minimum)then Minimum := f2;
if (f3 < Minimum)then Minimum := f3;
result:= Minimum;
end;
function GetPower( f:real;Power:real) :real;
var i:Integer;
begin
if Power=0 then result:= 1;
i:= 0;
while i < Power
do
begin
f := f*f;
i:= i+1;
end;
result:= f;
end;
function Calc():bool;
var tcs,T0,Tp,K1,K2,delta1,
Tk,Tc,Lf,B,Lf1,tk_,Ppc,
Pk,Pc,Tcircle,L, Treaction,Delta:real;
C :Integer;
N,IterationNumber :Integer;
begin
NPC := StrToInt(Form2.Edit1.Text);
NServ:= StrToInt(Form2.Edit6.Text);
MTQueryPC := StrToInt(Form2.Edit2.Text); // время дообработки запроса
MTFormQueryPC:= StrToInt(Form2.Edit3.Text); //формирование запроса
MTTChannelDirect := StrToInt(Form2.Edit8.Text); //время передачи в прямом направлении
MTTChannelRevers := StrToInt(Form2.Edit9.Text); //время передачи в обратном направлении
MTQueryServer := StrToInt(Form2.Edit7.Text); //обработка на сервере
Precision := StrToFloat(Form2.Edit5.Text);
IterationNumber :=0;
tcs := MTQueryServer; // время дообработки запроса
C := NServ;
N := NPC; //кол-во рабочих станций, серверов
T0 := MTQueryPC; // время дообработки запроса
Tp := MTFormQueryPC; //формирование запроса
K1 :=StrToFloat(Form2.Edit11.Text);
K2 := StrToInt(Form2.Edit13.Text);
delta1 := 0;
Tk := 0;
Tc := 0;
Lf := 0;
B := 1;
Lf1:= 0;
tk_ := 0.5 * (MTTChannelDirect + MTTChannelRevers);
// выходные данные
Ppc := 0;
Pk := 0;
Pc := 0;
Tcircle := 0;
L := 0;
Treaction := 0;
// шаг 1
Lf1 := K1*GetMinimum(1 / (2 * tk_), C/tcs, 10000) * (NPC - 1) / NPC;
while true do
begin
// шаг 2
Tk := 2 * tk_ / (1 - 2 * Lf1 * tk_);
Tc := tcs / (1 - GetPower(( Lf1 * tcs / C), C));
// шаг 3
Lf := (N - 1) / (T0 + Tp + Tk + Tc);
// шаг 4
Delta := (Abs(Lf1 - Lf) / Lf);
if ( Delta < Precision) then Break;
// шаг 5
delta1 := (Lf1 - Lf) / K2;
Lf1 := Lf1 - delta1;
end;
// шаг 6
Tk:= 2 * tk_ / (1 - 2 * Lf1 * tk_);
Tc := B * tcs / (1 - GetPower((B * Lf1 * tcs / C), C));
Tcircle := T0 + Tp + Tk + B * Tc;
Ppc := (T0 + Tp) / Tcircle;
L := N / Tcircle;
Pk := 2 * L * tk_;
Pc := B * L * tcs/C;
Treaction := Tcircle - (Tp);
// вывод
Form2.Edit4.Text := FloatToStr(RoundTo(Pk,-2));
Form2.Edit12.Text := FloatToStr(roundto(Ppc,-2));
Form2.Edit14.Text := FloatToStr(roundto((T0 / Tcircle),-2));
Form2.Edit10.Text := FloatToStr(roundto(Tcircle,-2));
Form2.Edit15.Text := FloatToStr(roundto((NPC * Ppc),-2));
Form2.Edit19.Text := FloatToStr(roundto(NPC * (Tp / Tcircle),-2));
Form2.Edit18.Text := FloatToStr(roundto(Treaction,-2));
Form2.Edit16.Text := FloatToStr(roundto((Pc/2),-2));
Form2.Edit17.Text := FloatToStr(roundto(L,-2));
/// конец
result:= true;
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
Calc();
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
Close();
end;
end.
-
Интерфейс программы
Главная форма программы имеет вид:
Рис9. Главная форма программы
Вводим исходные данные и нажимаем кнопку «Вычислить»
-
Результаты аналитического эксперимента.
Таблица 38. Результаты аналитического эксперимента.
Номер эксперимента | 1 | 2 | 3 | 4 | 5 |
Исходные данные | |||||
Количество рабочих станций | 31 | 31 | 31 | 31 | 31 |
Среднее время дообработки запроса на РС | 310 | 210 | 310 | 310 | 310 |
Среднее время формирования запроса на РС | 310 | 310 | 210 | 310 | 310 |
Среднее время передачи через канал в прямом направлении | 5 | 5 | 5 | 5 | 5 |
Среднее время передачи через канал в обратном направлении | 5 | 5 | 5 | 5 | 5 |
Количество процессоров | 2 | 2 | 2 | 2 | 2 |
Среднее время обработки запроса на процессоре | 10 | 10 | 10 | 20 | 10 |
Результаты моделирования. | |||||
Загрузка рабочей станции | 0,83 | 0,92 | 0,92 | 0,78 | 0,82 |
Загрузка пользователя рабочей станции | 0,41 | 0,23 | 0,69 | 0,39 | 0,41 |
Среднее количество работающих РС | 5,8 | 6,4 | 6,44 | 5,5 | 5,77 |
Среднее количество РС формирующих запрос | 2,9 | 1,6 | 4,83 | 2,7 | 2,9 |
Загрузка канала | 0,42 | 0,23 | 0,23 | 0,39 | 0,41 |
Загрузка процессора | 0,21 | 0,13 | 0,13 | 0,39 | 0,2 |
Среднее время цикла системы | 167,7 | 304,3 | 304,3 | 179,3 | 169,6 |
Среднее время реакции системы | 97,7 | 234,3 | 94,3 | 109,3 | 99,6 |
-
Имитационное моделирование сети.
-
Формализованная схема.
-
Рис.11. Формализованная схема.
ОАдб – обслуживающий аппарат (ОА), имитирующий работу рабочей станции по дообработке запроса к серверу.
ОАф – ОА, имитирующий работу рабочей станции по формированию запроса к серверу.
Бcpu – буфер (Б), имитирующий очередь запросов к процессорам сервера.
ОАcpu – ОА, имитирующий работу процессора по обработке запроса от рабочей станции.
Бдм – Б, имитирующий очередь запросов к дисковым массивам сервера.
ОАдм – ОА, имитирующий работу дискового массива сервера.
-
Листинг программы.
INITIAL X$STATION_N,9 ;количество рабочих станций
INITIAL X$STATION_TD,90 ;дообработка запроса
INITIAL X$STATION_TF,90 ;формирование запроса
INITIAL X$SERVER_CPU_T,10 ;время работы процессора
INITIAL X$DISK_N,2 ;количество дисковых массивов на сервере
INITIAL X$DISK_T,20 ;время работы дискового массива
WS_D STORAGE 9
WS_F STORAGE 9
SERVER_CPU STORAGE 1
DISK_N FUNCTION RN1,D2
0.5,1/1,2
EXPON FUNCTION RN1,C23
0,0/.1,.104/.2,.222/.3,.355/.4,.510/.5,.69/.6,.915/.7,1.2/
.75,1.37/.8,1.5/.84,1.83/.88,2.12/.9,2.3/.92,2.52/.94,2.82/
.95,2.98/.96,3.2/.97,3.5/.98,3.9/.995,5.3/.998,6.2/.9995,7/1,8
*******************************************************************************
GENERATE ,,,X$STATION_N
WS_FORM QUEUE QSYSTEM
QUEUE QFORM
*******************************************************************************
;формирование запроса
ENTER WS_F,1
ADVANCE (Exponential(1,0,X$STATION_TF))
LEAVE WS_F,1
*******************************************************************************
DEPART QFORM
;обработка на сервере
;процессоры
SVR_CPU ENTER SERVER_CPU,1 ;занятие ЦП сервера
ADVANCE (Exponential(1,0,X$SERVER_CPU_T))
LEAVE SERVER_CPU,1
;диски
SVR_DISK ASSIGN 2,FN$DISK_N ;занятие одного из дисковых массивов
QUEUE P2
SEIZE P2
DEPART P2
ADVANCE (Exponential(1,0,X$DISK_T))
RELEASE P2
*******************************************************************************
;дообработка запроса на рабочей станции
WS_DOOB ENTER WS_D,1
ADVANCE (Exponential(1,0,X$STATION_TD))
LEAVE WS_D,1
DEPART QSYSTEM
*******************************************************************************
;переход на дообработку запроса
TRANSFER ,WS_FORM
*******************************************************************************
GENERATE 100000
TERMINATE 1
START 1
-
Листинг результата имитационного моделирования.
GPSS World Simulation Report - КП_мой.2.1
Sunday, October 30, 2011 20:11:45
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 100000.000 23 2 3
NAME VALUE
DISK_N 10004.000
DISK_T 10005.000
EXPON 10009.000
QFORM 10011.000
QSYSTEM 10010.000
SERVER_CPU 10008.000
SERVER_CPU_T 10003.000
STATION_N 10000.000
STATION_TD 10001.000
STATION_TF 10002.000
SVR_CPU 8.000
SVR_DISK 11.000
WS_D 10006.000
WS_DOOB 17.000
WS_F 10007.000
WS_FORM 2.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 9 0 0
WS_FORM 2 QUEUE 3916 0 0
3 QUEUE 3916 0 0