




免费预览已结束,剩余21页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
姓名:学号:班级:实验日期:实验名称:时间片轮转rr 进程调度算法实验二时间片轮转rr进程调度算法1.实验目的: 通过这次实验,理解时间片轮转rr 进程调度算法的运行原理,进一步掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。2.需求分析(1)输入的形式和输入值的范围;输入:进程个数n范围: 0n=q)currenttime = q;elsecurrenttime = rrarray0.servicetime;while(!rrqueue.empty()for(intj=i;j= rrarrayj.arrivaltime)rrqueue.push(rrarrayj); i+;if (rrqueue.front().servicetimeq)temptime = rrqueue.front().servicetime;elsetemptime = q;rrqueue.front().servicetime-= q;/进程每执行一次,就将其服务时间-q/将队首进程的名称放入数组中processmomentprocessmomentpoint = rrqueue.front().name;processmomentpoint+; processtimefinalprocessnumber = temptime; finalprocessnumber+;if (rrqueue.front().servicetime = 0)/ 把执行完的进程退出队列/rrqueue.front().finishedtime = currenttime;rrqueue.pop();/如果进程的服务时间小于等于,即该进程已经服务完了,将其退栈else/将队首移到队尾rrqueue.push(rrqueue.front(); rrqueue.pop();currenttime += temptime;/进程输出处理每个时间段对应的执行的进程cout 各进程的执行时刻信息:endl;cout setw(2)processtime0时刻; processtimefinalprocessnumber=0;int time = processtime0;int count = 0;for (i=0;ifinalprocessnumber;i+)count = 0; coutsetw(3)processmomentisetw(3)endl;while(rr!=processmomenti & countn)count+;rrarraycount.finishedtime = time;if (ifinalprocessnumber - 1)coutsetw(3)time时 刻 setw(2)time+ processtimei+1时刻setw(3);time += processtimei+1;coutendl;/周转时间、带权周转时间、平均周转时间、带权平均周转时间的计算/1.周转时间= 完成时间-到达时间/2.带权周转时间=周转时间 /服务时间for ( i=0;in;i+)rrarrayi.wholetime=rrarrayi.finishedtime- rrarrayi.arrivaltime;rrarrayi.weightwholetime=(double)rrarrayi.wholetime/rrarrayi.servicetime;double x=0,y=0; for (i=0;in;i+)x += rrarrayi.wholetime;y += rrarrayi.weightwholetime;averagewt = x/n; averagewwt = y/n;4、调试分析(1) )调试过程中遇到的问题以及解决方法,设计与实现的回顾讨论和分析在算法设计时,由于一开始不知道如何将位于队首的进程,在执行完后如 何移至队尾进行循环, 所以思考了很久, 后来想到将队首进程进行重新压入队列从而解决了此问题。(2) )算法的性能分析每个进程被分配一个时间段, 即该进程允许运行的时间。 如果在时间片结束时进程还在运行,则cpu 将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则cpu 当即进行切换。调度程序所要做的就是维护一张就绪进程列表,当进程用完它的时间片后,它被移到队列的末尾。(3) )经验体会通过本次实验, 深入理解了时间片轮转rr 进程调度算法的思想, 培养了自己的动手能力,通过实践加深了记忆。5、用户使用说明开始输入进程个数和时间篇长度按到达时间从小到大次序输入进程名,到达时间和预计服务时间运行队首进程进程运行时间-时间片时间精品资料程序的使用说明,列出每一步的操作步骤。运行时间 =0y运行完成, 将进程从队列中取出n中短进程,进程调至队列尾部输出结果精品资料结束7、附录带注释的源程序,注释应清楚具体#include #include #include #include #define maxnum 100 using namespace std;typedef structchar name;int arrivaltime; int servicetime; int finishedtime; int wholetime;double weightwholetime;rr;static queuerrqueue;/声明一个队列static double averagewt =0,averagewwt=0; static int q;/时间片static int n;/进程个数static rr rrarraymaxnum;/ 进程结构void input()/文件读取模式ifstream indata;indata.open(./data4.txt);/data.txt 表示 q = 4 的 rr 调度算法/data2.txt 表示 q = 1 的 rr 调度算法indatan; indataq;for (int i=0;irr;for (i=0;irrarrayi.arrivaltime;for (i=0;irrarrayi.servicetime;/用户输入模式cout*endl;coutn;coutq;cout 请按到达时间的顺序依次输入进程名:endl; for (i=0;irr;cout 请从小到大输入进程到达时间:endl; for (i=0;irrarrayi.arrivaltime;cout 请按到达时间的顺序依次输入进程服务时间:endl; for (i=0;irrarrayi.servicetime;cout*endl;/输出用户所输入的信息coutthe information of processes is the following:endl; coutsetw(10)进程名 ;coutsetw(10)到达时间 ;coutsetw(10)服务时间 endl; for ( i=0;in;i+)coutsetw(10)rr ; coutsetw(10)rrarrayi.arrivaltime ; coutsetw(10)rrarrayi.servicetime endl;cout*=q)currenttime = q;elsecurrenttime = rrarray0.servicetime;while(!rrqueue.empty()for(intj=i;j= rrarrayj.arrivaltime)rrqueue.push(rrarrayj); i+;if (rrqueue.front().servicetimeq)temptime = rrqueue.front().servicetime;elsetemptime = q;rrqueue.front().servicetime-= q;/进程每执行一次,就将其服务时 间 -q/将队首进程的名称放入数组中processmomentprocessmomentpoint = rrqueue.front().name;processmomentpoint+; processtimefinalprocessnumber = temptime; finalprocessnumber+;if (rrqueue.front().servicetime = 0)/ 把执行完的进程退出队列/rrqueue.front().finishedtime = currenttime;rrqueue.pop();/如果进程的服务时间小于等于,即该进程已经服务完了,将其退栈else/将队首移到队尾rrqueue.push(rrqueue.front(); rrqueue.pop();currenttime += temptime;/进程输出处理每个时间段对应的执行的进程cout 各进程的执行时刻信息:endl;cout setw(2)processtime0时刻; processtimefinalprocessnumber=0;int time = processtime0;int count = 0;for (i=0;ifinalprocessnumber;i+)count = 0; coutsetw(3)processmomentisetw(3)endl;while(rr!=processmomenti & countn)count+;rrarraycount.finishedtime = time;if (ifinalprocessnumber - 1)coutsetw(3)time时 刻 setw(2)time+ processtimei+1时刻setw(3);time += processtimei+1;coutendl;/周转时间、带权周转时间、平均周转时间、带权平均周转时间的计算/1.周转时间=完成时间-到达时间/2.带权周转时间= 周转时间 /服务时间for ( i=0;in;i+)rrarrayi.wholetime=rrarrayi.finishedtime- rrarrayi.arrivaltime;rrarrayi.weightwholetime=(double)rrarrayi.wholetime/rrarrayi.servicetime;double x=0,y=0; for (i=0;in;i+)x += rrarrayi.wholetime;y += rrarrayi.weightwholetime;averagewt = x/n; averagewwt = y/n;void display()cout*endl;coutrr调度算法执行后:进程相关信息如下:endl; coutsetw(10)进程名( id) ;coutsetw(10)到 达 时 间 ; coutsetw(10)服 务 时 间 ; coutsetw(10)完 成 时 间 ; coutsetw(10)周 转 时 间 ; coutsetw(10)带权周转时间 endl; for (int i = 0;in;i+)coutsetw(10)rr ; coutsetw(10)rrarrayi.arrivaltime ; coutsetw(10)rrarrayi.servicetime ; coutsetw(10)rrarrayi.finis
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年射线RT无损检测员初级面试练习题集
- 2025年VR交互设计师中级面试模拟题及答案
- 2025年安全生产安全文化建设练习题集
- 2025年农家乐厨师面试实战技巧与模拟试题
- 2025年安全生产法规知识测试题及答案库
- 2025年摄影测量员理论知识模拟题库中级
- 2025年旅游规划师职业潜力测评试卷及答案解析
- 2025年金融分析师综合能力测试题及答案解析
- 2025年驾驶员安全培训技能考核试题及答案解析
- 2025年环境科学与工程领域专业技术考试试卷及答案解析
- 2025新版企业员工劳动合同范本
- PCR实验室基因扩增检验人员培训试题及答案
- 2025年全国版图知识竞赛(中学组)历年参考题库含答案详解(5卷)
- 2025年西藏自治区三支一扶人员招募考试(公共基础知识)历年参考题库含答案详解(5卷)
- 护士长领导力提升与团队管理技巧
- 2025年富县辅警考试题库(附答案)
- 2026届张家港市达标名校中考语文模试卷含解析
- 保密观试题含答案2025年
- DB42T 1917.1-2022 中药材 水蛭(日本医蛭)养殖与加工技术规程 第1部分:种苗繁育
- 柏拉图教育思想体系解析
- 奶茶线上活动方案
评论
0/150
提交评论