时间片轮转调度算法实验报告.docx
《时间片轮转调度算法实验报告.docx》由会员分享,可在线阅读,更多相关《时间片轮转调度算法实验报告.docx(15页珍藏版)》请在冰豆网上搜索。
时间片轮转调度算法实验报告
xx大学 操作系统 实验报告
姓名:
学号:
班级:
实验日期:
实验名称:
时间片轮转RR进程调度算法
实验二时间片轮转RR进程调度算法
1.实验目的:
通过这次实验,理解时间片轮转RR进程调度算法的运行原理,进一步掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。
2.需求分析
(1)输入的形式和输入值的范围;
输入:
进程个数n范围:
0时间片q
依次输入(进程名
进程到达时间
进程服务时间)
(2)输出的形式
进程名
到达时间
服务时间
完成时间
周转时间
带权周转时间
所有进程平均周转时间:
所有进程平均带权周转时间:
(3)程序所能达到的功能
1)进程个数n,输入时间片大小q,每个进程的到达时间T1,…,Tn和服务时间S1,…,Sn。
2)要求时间片轮转法RR调度进程运行,计算每个进程的周转时间和带权周转时间,并且计算所有进程的平均周转时间和带权平均周转时间;
3)输出:
模拟整个调度过程,输出每个时刻的进程运行状态;
4)输出:
输出计算出来的每个进程的周转时间、带权周转时间、所有进程的平均周转时间以及带权平均周转时间。
(4)测试数据,包括正确的输入及其输出结果和含有错误的输入及其输出结果。
正确输入:
错误输入:
2、概要设计
所有抽象数据类型的定义:
staticintMaxNum=100
●intArrivalTimeTn,S1….Sn;
●进行进程调度,计算进程的开始运行时间、结束时间、执行顺序、周转时间、带权周转时间;
●计算所有进程的平均周转时间、平均带权周转时间;
●按照格式输出调度结果。
各程序模块之间的层次(调用)关系
Main函数通过对Input函数进行调用,对函数的成员变量进行赋值,再通过RRAlgorithm函数求出题目要求的各个数据结果,最后通过display函数对结果进行格式输出。
3、详细设计
实现程序模块的具体算法。
voidRRAlgorithm()
{
charprocessMoment[100];erviceTime>=q)
{
CurrentTime=q;
}
else
{
CurrentTime=RRarray[0].ServiceTime;
}
while(!
())
{
for(intj=i;j=NULL&&CurrentTime>=RRarray[j].ArrivalTime)
{
(RRarray[j]);
i++;
}
}
if().ServiceTime{
tempTime=().ServiceTime;
}
else
{
tempTime=q;
}
().ServiceTime-=q;ame;
processMomentPoint++;
processTime[finalProcessNumber]=tempTime;
finalProcessNumber++;
if().ServiceTime<=0)inishedTime=CurrentTime;
();ame!
=processMoment[i]&&count{
count++;
}
RRarray[count].FinishedTime=time;
if(i{
cout<"<(2)<