1 / 11
文档名称:

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

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

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

分享

预览

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

上传人:iris028 2019/11/21 文件大小:50 KB

下载得到文件列表

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

文档介绍

文档介绍:xx大学操作系统实验报告姓名:学号:班级:实验日期:实验名称::通过这次实验,理解时间片轮转RR进程调度算法的运行原理,进一步掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。(1)输入的形式和输入值的范围;输入:进程个数n        范围:0<n<=100时间片q依次输入(进程名        进程到达时间      进程服务时间)      (2)输出的形式进程名到达时间服务时间完成时间周转时间带权周转时间                              所有进程平均周转时间:所有进程平均带权周转时间:(3)程序所能达到的功能1)进程个数n,输入时间片大小q,每个进程的到达时间T1,…,Tn和服务时间S1,…,Sn。2)要求时间片轮转法RR调度进程运行,计算每个进程的周转时间和带权周转时间,并且计算所有进程的平均周转时间和带权平均周转时间;3)输出:模拟整个调度过程,输出每个时刻的进程运行状态;4)输出:输出计算出来的每个进程的周转时间、带权周转时间、所有进程的平均周转时间以及带权平均周转时间。(4)测试数据,包括正确的输入及其输出结果和含有错误的输入及其输出结果。正确输入:错误输入:2、概要设计所有抽象数据类型的定义:staticintMaxNum=100intArrivalTime//到达时间intServiceTime//服务时间intFinishedTime//结束时间intWholeTime//周转时间doubleWeightWholeTime//带权周转时间doubleAverageWT//平均周转时间doubleAverageWWT //平均带权周转时间主程序的流程:●变量初始化●接受用户输入的n,q,T1…..Tn,S1….Sn;●进行进程调度,计算进程的开始运行时间、结束时间、执行顺序、周转时间、带权周转时间;●计算所有进程的平均周转时间、平均带权周转时间;●按照格式输出调度结果。各程序模块之间的层次(调用)关系Main函数通过对Input函数进行调用,对函数的成员变量进行赋值,再通过RRAlgorithm函数求出题目要求的各个数据结果,最后通过display函数对结果进行格式输出。3、详细设计实现程序模块的具体算法。voidRRAlgorithm() { charprocessMoment[100]; //(RRarray[0]); intprocessMomentPoint=0; intCurrentTime=0; inttempTime; //声明此变量控制CurrentTime的累加时间,当前进程的服务时间小于时间片q的时候,起到重要作用inti=1; //指向还未处理的进程的下标intfinalProcessNumber=0; //执行RR算法后,进程的个数intprocessTime[50]; //CurrentTime的初始化if(RRarray[0].ServiceTime>=q) { CurrentTime=q; } else { CurrentTime=RRarray[0].ServiceTime; } while(!()) {  for(intj=i;j<n;j++) //使得满足进程的到达时间小于当前时间的进程都进入队列{ if(RRarray[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; (); //如果进程的服务时间小于等于,即该进程已经服务完了,将其退栈} e