1 / 15
文档名称:

时间片轮转调度算法实验报告.docx

格式:docx   大小:147KB   页数:15页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

时间片轮转调度算法实验报告.docx

上传人:suijiazhuang1 2022/6/22 文件大小:147 KB

下载得到文件列表

时间片轮转调度算法实验报告.docx

文档介绍

文档介绍:xx大学变作系七实验报告
姓名:学号:班级:
实验日期:
实验名称:时间片轮转RR进程调度算法
实验二 时间片轮转RR进程调度算法
1实验目的: 通过这次实验,理解时间片轮转RR进程调度算法的运行原理,进一步 掌握进程状态的转变、Rarray[j].name!=NULL && CurrentTime >=
RRarray[j].ArrivalTime)
{
(RRarray[j]);
i++;
}
}
if (().ServiceTime<q)
{
tempTime = ().ServiceTime;
}
else
{
tempTime = q;
}
().ServiceTime -= q; 〃进程每执行一次,就将其服务
时间-q
〃将队首进程的名称放入数组中
processMoment[processMomentPoint] = ().name;
processMomentPoint++;
processTime[finalProcessNumber] = tempTime;
finalProcessNumber++;
if (().ServiceTime <= 0) 〃把执行完的进程退出队列
{
//().FinishedTime = CurrentTime;
(); 〃如果进程的服务时间小于等于,即该进程已
经服务完了,将其退栈
}
else
{
〃将队首移到队尾
(());
();
}
CurrentTime += tempTime;
}
//进程输出处理 每个时间段对应的执行的进程
cout<<"各进程的执行时刻信息:"<<endl;
cout<<" "<<"0 时刻--> "<<setw(2)<<processTime[0]<<"时刻"; processTime[finalProcessNumber]=0;
int time = processTime[0];
int count = 0;
for (i=0;i<finalProcessNumber;i++)
{
count = 0;
cout<<setw(3)<<processMoment[i]<<setw(3)<<endl;
while(RRarray[count].name!=processMoment[i] && count<n)
{
count++;
}
RRarray[count].FinishedTime = time;
if (i<finalProcessNumber - 1)
{
cout<<setw(3)<<time<<"时刻。"<<"--> "<<setw(2)<<time + processTime[i+1]<<"时刻"<<setw(3);
time += processTime[i+1];
}
}
cout<<endl;
〃周转时间、带权周转时间、平均周转时间、带权平均周转时间的计算 //=完成时间-到达时间 //=周转时间/服务时间
for ( i=0;i<n;i++)
{
RRarray[i].WholeTime = RRarray[i].FinishedTime - RRarray[i].ArrivalTime;
RRarray[i].WeightWholeTime
(double)RRarray[i].WholeTime/RRarray[i].ServiceTime;
}
double x=0,y=0;
for (i=0;i<n;i++)
{
x += RRarray[i].WholeTime;
y += RRarray[i].WeightWholeTime;
}
AverageWT = x/n;
AverageWWT = y/n;
}
4、调试分析
(1) 调试过程中遇到的问题以及解决方法,设计与实现的回顾讨论和分析
在算法设计时,由于一开始不知道如何将位于队首的进程,在执行完后如 何移至队尾进行循环,所以思考了很久,后来想到将队首进程进行重新压入队列 从而解决了此问题。
(2) 算法的性能分析
每个进程被分配一个时间段,即该进程允许运行的时间。如果在时间片结束 时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结 束前阻塞或结束,则CPU当即进行切换。调