操作系统实验时间片轮转

上传人:RUN****yf 文档编号:40516647 上传时间:2021-11-16 格式:DOC 页数:13 大小:147KB
收藏 版权申诉 举报 下载
操作系统实验时间片轮转_第1页
第1页 / 共13页
操作系统实验时间片轮转_第2页
第2页 / 共13页
操作系统实验时间片轮转_第3页
第3页 / 共13页
资源描述:

《操作系统实验时间片轮转》由会员分享,可在线阅读,更多相关《操作系统实验时间片轮转(13页珍藏版)》请在装配图网上搜索。

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

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

3、/带权周转时间int state;/当前进程的状态;符号和函数说明int Currenttime=0;/当前时间PCD s5;/设置为 5 个进程queue<PCD> q;/ 进程队列int turnover(PCD &n)/求周转时间float wturnover(PCD &n)/求带权周转时间程序流程图:程序:#include<iostream>#include<queue>#define MAX 100using namespace std;struct PCD/定义结构体char name;/进程名int a_time;/到达时间in

4、t s_time;/int s_time2;服务时间int f_time;/完成时间float t_time;/周转时间float wt_time;/带权周转时间int state;/当前进程的状态;int Currenttime=0;int turnover(PCD &n)/求周转时间return n.t_time=n.f_time-n.a_time;float wturnover(PCD &n)/求带权周转时间return n.wt_time=n.t_time/n.s_time;int main()int t;queue<PCD> q;q=queue<PC

5、D>();PCD s5;s0.name='A'/初始化结构体数组s1.name='B's2.name='C's3.name='D's4.name='E'cout<<"请输入五个进程的到达时间:n"for(int i=0; i<=4; i+)cout<<si.name<<"到达时间 :"cin>>si.a_time;si.state=i;cout<<"请输入五个进程的服务时间:n"for

6、(int i=0; i<=4; i+)cout<<si.name<<"服务时间 :"cin>>si.s_time;si .s_time2=si.s_time;cout<<"请输入时间片的大小 :n"cin>>t;for(int i=0; i<5-1; i+) /将 ABCDE的到达时间升序排列for(int j=0; j<5-1; j+)if(sj.a_time>sj+1.a_time)swap(sj,sj+1);q.push(s0);/将第一个进程入队列for(int

7、i=1; i<5; i+)/5个都入队列while(si.a_time>Currenttime+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; j<5; j+)if(sj.state=q.front().state)sj.f_time= Currenttime;q.pop(

8、);/队列中删除elseCurrenttime=Currenttime+t;q.front().s_time-=t;q.push(q.front();/队头放入队尾q.pop();q.push(si);if(q.front().s_time<=t)/如果有进程提前结束Currenttime=Currenttime+q.front().s_time;/结束进程for(int j=0; j<5; j+)if(sj.state=q.front().state)/设置进程的序号,如果在队列中与进程控制块中匹配sj.f_time= Currenttime;/终止时间q.pop();elseC

9、urrenttime=Currenttime+t;/继续执行q.front().s_time-=t;q.push(q.front();/入队后队头放入队尾q.pop();while(q.empty()!=true)/所有进程全部入队if(q.front().s_time<=t)Currenttime=Currenttime+q.front().s_time;for(int i=0; i<5; i+)if(si.state=q.front().state)/去进程控制块中寻找,改变结束时间si.f_time= Currenttime;q.pop();elseCurrenttime=C

10、urrenttime+t;q.front().s_time-=t;q.push(q.front();q.pop();cout<<""<<"到达时间"<<"服务时间"<<"完成时间"<<"周转时间"<<"带权周转时间 "<<endl;for(int i=0; i<=4; i+)cout<<si.name<<""<<si.a_time&

11、lt;<""<<si.s_time2<<""<<si.f_time<<""<<turnover(si)<<""cout<<wturnover(si)<<endl<<endl;/cout是从后往前计算的double sum = 0;for(int i = 0; i<5; i+)sum+=si.wt_time;cout<<"此算法平均带权周转时间为"<<su

12、m/5<<endl;return 0;截图及其说明 :在先前定义的 5 个进程,取名 A B C D E输入时间片大小,当时间片为1 时,输出如下结果,程序正确输入时间片大小,当时间片为1 时,输出如下结果,程序正确。输入时间片为 4,截图如下,程序验证正确,此算法平均周转时间为2.7.【小结或讨论】1、当时间片的过大的时候,轮转调度算法便会退化为先来先服务算法。2、就绪队列是先插入到来的队列,再将未完成的队列送至队尾。3、一开始在写程序是,为考虑到进程到达时间与当前时间的关系,即进程到达时间大于当前时间时,要继续执行队列中的进程,最终加上了。4、通过本次实验,我对于进程调度中的时间片轮转调度算法有了更加深入的了解,通过时间片轮转调度的方式,可以有效的提高CPU的利用率,并且可以保证服务时间较长的进程也会被调度完成。5、编写程序时遇到的一个比较核心的问题就是在某一段时间内就绪进程队列中没有进程,而等待就绪进程队列中的进程都未就绪,这时需要将当前时间逐步加一以找寻到到达的进程。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!