- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统轮转调算法
学号专业计算机科学与技术姓名实验日期2017.11.2教师签字成绩实验报告【实验名称】轮转调度算法【实验目的】掌握轮转调度算法。进一步认识如何实现处理器调度。通过对进程调度算法的设计,深入理解进程调度的原理【实验原理】在分时系统中,最常用的是基于时间片的轮转算法调度算法。该算法采用了非常公平的处理机分配方式,即让就绪队列上的每个进程每次运行一个时间片。【实验内容】程序流程图:通过分配时间片的方式让进程获得处理机,若一个时间片未用完,正在运行的程序就已经完成,便将其从就绪队列删除,再调用队首进程,并分配时间片;在一个时间片未用完时,中断程序就会启动,将进程送至就绪队列的尾部。程序:#includeiostream#includequeue#define MAX 100using namespace std;struct PCD //定义结构体{ char name;//进程名inta_time;//到达时间ints_time;//服务时间int s_time2;intf_time;//完成时间 float t_time;//周转时间 float wt_time;//带权周转时间int state;//当前进程的状态};intCurrenttime=0;int turnover(PCD n)//求周转时间{returnn.t_time=n.f_time-n.a_time;}float wturnover(PCD n)//求带权周转时间{returnn.wt_time=n.t_time/n.s_time;}int main(){int t;queuePCD q; q=queuePCD(); PCD s[5]; s[0].name=A;//初始化结构体数组s[1].name=B;s[2].name=C;s[3].name=D;s[4].name=E;cout请输入五个进程的到达时间:\n;for(int i=0; i=4; i++) {couts[i].name 到达时间:;cins[i].a_time;s[i].state=i; }cout请输入五个进程的服务时间:\n;for(int i=0; i=4; i++) {couts[i].name 服务时间:;cins[i].s_time;s[i] .s_time2=s[i].s_time; }cout请输入时间片的大小:\n;cint; for(int i=0; i5-1; i++) //将ABCDE的到达时间升序排列for(int j=0; j5-1; j++)if(s[j].a_times[j+1].a_time)swap(s[j],s[j+1]);q.push(s[0]);//将第一个进程入队列 for(int i=1; i5; i++) //5个都入队列 { while(s[i].a_timeCurrenttime+t)//当进程到达时间大于当前时间,执行队列中的进程 { if(q.empty()==true) //到当前时间Currenttime++;//队列中无进程if(q.empty()!=true) //队列前面有进程 {if(q.front().s_time-t=0) {Currenttime=Currenttime+q.front().s_time;for(int j=0; j5; j++)if(s[j].state==q.front().state)s[j].f_time= Currenttime;q.pop(); //队列中删除 }else {Currenttime=Currenttime+t;q.front().s_time-=t;q.push(q.front());//队头放入队尾q.pop(); } } }q.push(s[i]); if(q.front().s_time=t) //如果有进程提前结束 {Currenttime=Currenttime+q.front().s_time;//结束进程for(int j=0; j5; j++) if(s[j].state==q.front().state) //设置进程的序号,如果在队列中与进程控制块中匹配
您可能关注的文档
最近下载
- 建筑施工组织与管理课件.docx VIP
- 水利水电工程钢筋机械连接施工规范.pdf VIP
- 精品解析:北京市丰台区2024-2025学年下学期八年级期末数学试题(解析版).docx VIP
- 心血管-肾脏-代谢综合征(CKM)综合管理中国专家共识2025解读PPT课件.pptx VIP
- 心血管-肾脏-代谢综合征患者的综合管理中国专家共识2025解读PPT课件.pptx VIP
- 医院口腔科人员诊疗规范与礼仪.pptx VIP
- 人教版七年级数学上册第五单元一元一次方程《从算式到方程(第2课时)》示范公开课教学设计.docx VIP
- 2025至2030年中国热双金属片市场全景评估及投资规划建议报告.docx
- 心血管-肾脏-代谢综合征患者的综合管理中国专家共识2025PPT课件.pptx VIP
- 我做图书管理员(课件)五年级上册综合实践活动教科版.pptx
文档评论(0)