Курсовая АСОИУ (954236), страница 9
Текст из файла (страница 9)
double pd1; // Загрузка диска 1
double pd2; // Загрузка диска 2
double tc; // Среднее время цикла системы
double tr; // Среднее время реакции системы
int iter; // Количество итераций
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
AnalitModel.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "AnalitModel.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
n = Form1->Edit1->Text.ToInt();
td = Form1->Edit2->Text.ToDouble();
tf = Form1->Edit3->Text.ToDouble();
tp = Form1->Edit4->Text.ToDouble();
to = Form1->Edit5->Text.ToDouble();
proc = Form1->Edit6->Text.ToInt();
tpp = Form1->Edit7->Text.ToDouble();
disk = Form1->Edit8->Text.ToInt();
tpd = Form1->Edit9->Text.ToDouble();
ppd = Form1->Edit10->Text.ToDouble();
pdp = Form1->Edit11->Text.ToDouble();
tk = 0.5*(tp + to);
b = 1/(1 - pdp);
m1 = 1/(2*tk);
m2 = proc/(b*tpp);
m3 = 1/(b*ppd*tpd);
double val1 = min(m1,m2);
double val2 = min(val1,m3);
double delta;
l1 = 0.9999*val2*(n-1)/n;
flag = false;
iter=0;
do
{
iter++;
tko = 2*tk/(1-2*l1*tk);
tpo = b*tpp/(1-Power(b*l1*tpp/proc,proc));
tdo = 2*(ppd*tpd)/(1-b*ppd*l1*tpd);
l = (n-1)/(td + tf + tko + (tpo + tdo)*b);
if(((fabs((l1-l)))/l) < 0.01)
{
flag = false;
}
else
{
delta = (l1-l)/100;
l1 = l1 - delta;
flag = true;
}
}while(flag);
tr= td + tko + (tpo + tdo)*b;
Form1->Edit20->Text = FloatToStrF(tr,ffGeneral,3,5);
tc = tr + tf;
Form1->Edit19->Text = FloatToStrF(tc,ffGeneral,3,5);
pk = 2*n*tk/tc;
Form1->Edit16->Text = FloatToStrF(pk,ffGeneral,2,5);
pp = b*n*tpp/tc;
Form1->Edit17->Text = FloatToStrF(pp,ffGeneral,2,5);
pd1 = b*n*ppd*tpd/tc;
Form1->Edit18->Text = FloatToStrF(pd1,ffGeneral,2,5);
pd2 = b*n*ppd*tpd/tc;
Form1->Edit12->Text = FloatToStrF(pd2,ffGeneral,2,5);
Form1->Edit14->Text = FloatToStrF(tpo,ffGeneral,3,5);
pPC = (td + tf)/tc;
Form1->Edit13->Text = FloatToStrF(pPC,ffGeneral,2,5);
puPC = td/tc;
Form1->Edit21->Text = FloatToStrF(puPC,ffGeneral,2,5);
Form1->Edit15->Text = IntToStr(iter);
}
//---------------------------------------------------------------------------
-
Результаты аналитического моделирования
Таблица 8.6.1. Результаты аналитического моделирования
Номер варианта | 1 | 2 | 3 | 4 | 5 |
НАЧАЛЬНЫЕ ДАННЫЕ | |||||
Число рабочих станций | 21 | 21 | 21 | 21 | 21 |
Время дообработки запроса на рабочей станции | 170 | 340 | 170 | 170 | 170 |
Время формирования запроса на рабочей станции | 170 | 340 | 170 | 170 | 170 |
Среднее время передачи через канал в прямом направлении | 5 | 5 | 10 | 5 | 5 |
Среднее время передачи через канал в обратном направлении | 5 | 5 | 10 | 5 | 5 |
Количество процессоров | 1 | 1 | 1 | 1 | 1 |
Среднее время обработки запроса на процессоре | 10 | 10 | 10 | 20 | 10 |
Количество дисков | 2 | 2 | 2 | 2 | 2 |
Среднее время обработки запроса на диске | 20 | 20 | 20 | 20 | 40 |
Вероятность обращения запроса к диску сервера после обработки запроса в процессоре | 0,5 | 0,5 | 0,5 | 0,5 | 0,5 |
Вероятность обращения запроса к ЦП после обработки на диске | 0 | 0 | 0 | 0 | 0 |
РЕЗУЛЬТАТ МОДЕЛИРОВАНИЯ. | |||||
Загрузка PC | 0,81 | 0,92 | 0,68 | 0,68 | 0,64 |
Загрузка пользователя PC | 0,41 | 0,46 | 0,34 | 0,34 | 0,32 |
Загрузка канала | 0,5 | 0,29 | 0,84 | 0,42 | 0,39 |
Загрузка процессора | 0,5 | 0,29 | 0,42 | 0,84 | 0,39 |
Загрузка диска 1 | 0,5 | 0,29 | 0,42 | 0,42 | 0,78 |
Загрузка диска 2 | 0,5 | 0,29 | 0,42 | 0,42 | 0,78 |
Среднее время цикла системы | 417 | 735 | 497 | 497 | 535 |
Среднее время реакции системы | 247 | 395 | 327 | 327 | 365 |
Среднее время обработки процесса в ЦП | 19,4 | 13,8 | 16,8 | 107 | 16,1 |
-
Имитационное моделирование
Проведем имитационное моделирование сети. Для этого будем исрользовать ту же схему РСОД в виде СМО, те же исходные и выходные данные.
Рис. 9.1. Формализованная схема моделируемой РСОД в виде СМО
9.1 Укрупненная структура программы моделируемой РСОД на языке GPSS
Структура программы имеет следующий вид
Таблица 9.1.1. Структура программы
Блоки и метки | Пояснение |
INITIAL | Задание количественных и временных параметров исходных данных моделируемой системы |
STORAGE | Задание многоканальных узлов системы |
FUNCTION | Задание функции распределения запросов по узлам и времени выполнения запросов в узлах |
GENERATE | Генерация количества задач, циркулирующих в системе |
Метка PCF | Объединяет набор блоков, описывающих формирование запроса на рабочей станции |
Метка CAN | Объединяет набор блоков, описывающих обработку эапроса в канале |
Метка CP | Объединяет набор блоков, описывающих обработку эапроса в процессоре |
Метка REP | Объединяет набор блоков, описывающих правило перехода запроса после обработки на диске в канал |
Метка PCD | Объединяет набор блоков, описывающих дообработку запроса на рабочей станции |
9.2. Текст программы на GPSS
INITIAL X$STATION_N,21
INITIAL X$STATION_TD,170
INITIAL X$STATION_TF,170
INITIAL X$CANAL_T,5
INITIAL X$CPU_T,10
INITIAL X$DISK_N,2
INITIAL X$DISK_T,20
FLAG1 VARIABLE 0
FLAG2 VARIABLE 1
WORKSTATION_D STORAGE 21
WORKSTATION_F STORAGE 21
WORKSTATION_PC STORAGE 21
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
ASSIGN FLAG1,V$FLAG1
ASSIGN FLAG2,V$FLAG2
PCF QUEUE QSYSTEM
QUEUE QREACTION
ENTER WORKSTATION_F,1
ADVANCE X$STATION_TF,FN$EXPON
LEAVE WORKSTATION_F,1
ASSIGN 3,CP
TEST E P$FLAG1,P$FLAG2,CAN
LEAVE WORKSTATION_PC,1
CAN QUEUE QCANAL
SEIZE CANAL
DEPART QCANAL
ADVANCE X$CANAL_T,FN$EXPON
RELEASE CANAL
TRANSFER ,P3
CP QUEUE QCPU
ENTER CPU,1
ADVANCE X$CPU_T,FN$EXPON
LEAVE CPU,1
DEPART QCPU
ASSIGN 5,FN$DISK_N
QUEUE P5
SEIZE P5
DEPART P5
ADVANCE X$DISK_T,FN$EXPON
RELEASE P5
TRANSFER 0.0, PER,CP
PER ASSIGN 3,PCD
TRANSFER ,CAN