操作系统实验_时间片轮转

操作系统实验_时间片轮转

ID:39496269

大小:264.01 KB

页数:9页

时间:2019-07-04

操作系统实验_时间片轮转_第1页
操作系统实验_时间片轮转_第2页
操作系统实验_时间片轮转_第3页
操作系统实验_时间片轮转_第4页
操作系统实验_时间片轮转_第5页
资源描述:

《操作系统实验_时间片轮转》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、学号P71514032专业计算机科学与技术姓名陈帅实验日期2017.11.2教师签字成绩实验报告【实验名称】轮转调度算法【实验目的】1、掌握轮转调度算法。2、进一步认识如何实现处理器调度。3、通过对进程调度算法的设计,深入理解进程调度的原理【实验原理】时间片轮转调度算法思想用C语言编程实现,数据结构为队列。进程等待时间=进程开始运行时间-进程到达时间(即进程处于就绪态时间);进程周转时间=进程结束时间-进程到达时间;加权进程周转时间=进程周转时间/进程服务时间;系统平均周转时间=进程周转时间之和/进程数;系统平均带

2、权周转时间=进程带权周转时间之和/进程数。在分时系统中,最常用的是基于时间片的轮转算法调度算法。该算法采用了非常公平的处理机分配方式,即让就绪队列上的每个进程每次运行一个时间片。通过分配时间片的方式让进程获得处理机,若一个时间片未用完,正在运行的程序就已经完成,便将其从就绪队列删除,再调用队首进程,并分配时间片;在一个时间片未用完时,中断程序就会启动,将进程送至就绪队列的尾部。【数据结构和符号说明】数据结构:structPCD//定义结构体{charname;//进程名inta_time;//到达时间ints_ti

3、me;//服务时间ints_time2;intf_time;//完成时间floatt_time;//周转时间floatwt_time;//带权周转时间intstate;//当前进程的状态};符号和函数说明intCurrenttime=0;//当前时间PCDs[5];//设置为5个进程queueq;//进程队列intturnover(PCD&n)//求周转时间floatwturnover(PCD&n)//求带权周转时间程序流程图:程序:#include#include#de

4、fineMAX100usingnamespacestd;structPCD//定义结构体{charname;//进程名inta_time;//到达时间ints_time;//服务时间ints_time2;intf_time;//完成时间floatt_time;//周转时间floatwt_time;//带权周转时间intstate;//当前进程的状态};intCurrenttime=0;intturnover(PCD&n)//求周转时间{returnn.t_time=n.f_time-n.a_time;}floatw

5、turnover(PCD&n)//求带权周转时间{returnn.wt_time=n.t_time/n.s_time;}intmain(){intt;queueq;q=queue();PCDs[5];s[0].name='A';//初始化结构体数组s[1].name='B';s[2].name='C';s[3].name='D';s[4].name='E';cout<<"请输入五个进程的到达时间:";for(inti=0;i<=4;i++){cout<

6、cin>>s[i].a_time;s[i].state=i;}cout<<"请输入五个进程的服务时间:";for(inti=0;i<=4;i++){cout<>s[i].s_time;s[i].s_time2=s[i].s_time;}cout<<"请输入时间片的大小:";cin>>t;for(inti=0;i<5-1;i++)//将ABCDE的到达时间升序排列for(intj=0;j<5-1;j++)if(s[j].a_time>s[j+1].a_time)

7、swap(s[j],s[j+1]);q.push(s[0]);//将第一个进程入队列for(inti=1;i<5;i++)//5个都入队列{while(s[i].a_time>Currenttime+t)//当进程到达时间大于当前时间,执行队列中的进程{if(q.empty()==true)//到当前时间Currenttime++;//队列中无进程if(q.empty()!=true)//队列前面有进程{if(q.front().s_time-t<=0){Currenttime=Currenttime+q.fron

8、t().s_time;for(intj=0;j<5;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.

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。