时间片轮转调度算法试验报告_第1页
时间片轮转调度算法试验报告_第2页
时间片轮转调度算法试验报告_第3页
时间片轮转调度算法试验报告_第4页
时间片轮转调度算法试验报告_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、XX大学操作系统实验报告姓名:学号:班级:实验日期:实验名称:时间片轮转RR进程调度算法实验二时间片轮转RR进程调度算法1. 实验目的:通过这次实验,理解时间片轮转RR进程调度算法的运行原理,进一步掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。2. 需求分析(1)输入的形式和输入值的范围;输入:进程个数 n范围:0< n<=100时间片q依次输入(进程名进程到达时间进程服务时间)(2)输出的形式进程名到达时间服务时间完成时间周转时间带权周转时间所有进程平均周转时间:所有进程平均带权周转时间:(3) 程序所能达到的功能1) 进程个数n,输入时间片大小 q,每个进程的到达时

2、间 ," n和服务时间n2) 要求时间片轮转法 RR调度进程运行,计算每个进程的周转时间和带权周转时间,并且计算 所有进程的平均周转时间和带权平均周转时间;3) 输出:模拟整个调度过程,输出每个时刻的进程运行状态;4) 输出:输出计算出来的每个进程的周转时间、带权周转时间、所有进程的平均周转时间以及 带权平均周转时间。(4) 测试数据,包括正确的输入及其输出结果和含有错误的输入及其输出结果。 正确输入:错误输入:2、概要设计所有抽象数据类型的定义:static int MaxNum=100int ArrivalTimeTn, S1 .Sn;进行进程调度,计算进程的开始运行时间、结束时

3、间、执行顺序、周转时间、带权周转时间;计算所有进程的平均周转时间、平均带权周转时间;按照格式输出调度结果。各程序模块之间的层次(调用)关系Main函数通过对In put函数进行调用,对函数的成员变量进行赋 值,再通过RRAIgorithm函数求出题目要求的各个数据结果,最后通过 display函数对结果进行格式输出。3、详细设计实现程序模块的具体算法。void RRAIgorithm()char processMome nt1OO; erviceTime>=q)Curre ntTime = q;elseCurre ntTime = RRarray0.ServiceTime;while(!

4、()for (i nt j=i;j <n ;j+) ame!=NULL && Curre ntTime >=RRarrayj.ArrivalTime)(RRarrayj);i+;if ().ServiceTime<q)tempTime = ().ServiceTime;elsetempTime = q;().ServiceTime -= q; ame; processMome ntPo in t+; processTimefi nalProcessNumber = tempTime; fin alProcessNumber+;if ().ServiceTime

5、 <= 0) ini shedTime = Curre ntTime;();ame!=processMome nti && countvn)coun t+;RRarrayco un t.Fi nishedTime = time;if (i<fi nalProcessNumber - 1)cout<<setw(3)<<time<<"时刻"<<"-> "<<setw(2)<<time +processTimei+1<<"时刻&quo

6、t;<<setw (3);time += processTimei+1;cout«e ndl;周转时间=完成时间-到达时间 带权周转时间=周转时间/服务时间for ( i=0;i< n;i+)RRarrayi.WholeTime = RRarrayi.FinishedTime - RRarrayi.ArrivalTime;RRarrayi.WeightWholeTime = (double)RRarrayi.WholeTime/RRarrayi.ServiceTime;double x=0,y=0;for (i=0;i <n ;i+)x += RRarrayi

7、.WholeTime;y += RRarrayi.WeightWholeTime;AverageWT = x/n; AverageWWT = y/n;4、调试分析(1) 调试过程中遇到的问题以及解决方法,设计与实现的回顾讨论和分析 在算法设计时,由于一开始不知道如何将位于队首的进程,在执行完后如何移至队尾进行循环,所以思考了很久,后来想到将队首进程进行重新压入队列从而 解决了此问题。(2) 算法的性能分析每个进程被分配一个时间段,即该进程允许运行的时间。如果在时间片结束时 进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻 塞或结束,则CPU当即进行切换。调度程序所要做

8、的就是维护一张就绪进程列表, 当进程用完它的时间片后,它被移到队列的末尾。(3) 经验体会通过本次实验,深入理解了时间片轮转 RR进程调度算法的思想,培养了自己 的动手能力,通过实践加深了记忆。5、用户使用说明7、附录运行完成,将进程 从队列中取出程序的使用说明,列出每一步的操作步骤。带注释的源程序大次序释应进清楚具体| 寸间和预计服务时间运行队首进程进程运行时间-时间片时间#i nclude <iostream> #in elude <queue> #in elude <ioma nip> #in elude <fstream> #defi n

9、e MaxNum 100 using n amespace std; typedef struct char n ame; int ArrivalTime; int ServiceTime; int Fini shedTime; int WholeTime; double WeightWholeTime;RR;static queue<RR>RRqueue;");ame;for (i=0;i< n;i+)in Data>>RRarrayi.ArrivalTime;for (i=0;i< n;i+)in Data>>RRarrayi.Se

10、rviceTime;ame;cout<<" 请从小到大输入进程到达时间 :"<<endl;for (i=0;i<n;i+)cin>>RRarrayi.ArrivalTime;cout<<" 请按到达时间的顺序依次输入进程服务时间 :"<<endl; for (i=0;i<n;i+)cin>>RRarrayi.ServiceTime;cout<<"*" <<endl;ame<<" "cout<

11、<setw(10)<<RRarrayi.ArrivalTime<<" " cout<<setw(10)<<RRarrayi.ServiceTime<<" "<<endl; cout<<"*" <<endl;void RRAlgorithm()char processMoment100; erviceTime>=q)CurrentTime = q;elseCurrentTime = RRarray0.ServiceTime;whi

12、le(!()for (int j=i;j<n;j+) ame!=NULL && CurrentTime >=RRarrayj.ArrivalTime)(RRarrayj);i+;if ().ServiceTime<q)tempTime = ().ServiceTime;elsetempTime = q;().ServiceTime -= q; ame; processMomentPoint+;processTimefinalProcessNumber = tempTime; finalProcessNumber+;if ().ServiceTime <=

13、 0) inishedTime = CurrentTime;(); ame!=processMomenti && count<n) count+;RRarraycount.FinishedTime = time;if (i<finalProcessNumber - 1)cout<<setw(3)<<time<<"时刻 "<<" -> "<<setw(2)<<time +processTimei+1<<" 时刻 "<

14、;<setw(3);time += processTimei+1; cout<<endl;周转时间 = 完成时间 - 到达时间 带权周转时间 = 周转时间 /服务时间 for ( i=0;i<n;i+)RRarrayi.WholeTime = RRarrayi.FinishedTime - RRarrayi.ArrivalTime;RRarrayi.WeightWholeTime = (double)RRarrayi.WholeTime/RRarrayi.ServiceTime;double x=0,y=0;for (i=0;i<n;i+)x += RRarray

15、i.WholeTime;y += RRarrayi.WeightWholeTime;AverageWT = x/n;AverageWWT = y/n;void display()cout<<"*、'<<endl;cout<<"RR 调度算法执行后:进程相关信息如下: "<<endl;cout<<setw(10)<<" 进程名( ID) "<<" " cout<<setw(10)<<" 到达时间 &qu

16、ot;<<" " cout<<setw(10)<<" 服务时间 "<<" " cout<<setw(10)<<" 完成时间 "<<" " cout<<setw(10)<<" 周转时间 "<<" "cout<<setw(10)<<" 带权周转时间 "<<endl;for (int i

17、= 0;i<n;i+)cout<<setw(10)<<RR<<" " cout<<setw(10)<<RRarrayi.ArrivalTime<<" " cout<<setw(10)<<RRarrayi.ServiceTime<<" " cout<<setw(10)<<RRarrayi.FinishedTime<<" " cout<<setw(10)<<RRarrayi.WholeTime<<" " cout<<setw(10)<<RRarrayi.WeightWho

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论