2-时间片轮转rr算法

2-时间片轮转rr算法

ID:13163319

大小:98.50 KB

页数:4页

时间:2018-07-21

2-时间片轮转rr算法_第1页
2-时间片轮转rr算法_第2页
2-时间片轮转rr算法_第3页
2-时间片轮转rr算法_第4页
资源描述:

《2-时间片轮转rr算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、操作系统实验报告一、实验题目时间片轮转算法(RR算法)二、实验目的模拟实现时间片轮转调度算法。理解时间轮转算法的处理机调度的基本思想。三、实验要求1.初始化函数,输入各个进程的到达时间以及需要的运行的时间。2.设置时间片大小,实现进程有等待到运行状态的转换。3.进程运行时间结束后从进程列表中删除该进程。四、实验内容在时间片调度算法的模拟实现中,时间片就是分配给进程运行的一段时间。在轮转法中,系统将所有的可运行(即就绪)进程按先来先服务的原则,排成一个队列,每次调度时把CPU分配给队首进程,并令其执行一个时间片。当某进程

2、执行的时间片用完时,系统发出信号,通知调度程序,调度程序便据此信号来停止该进程的执行,并将刚运行的进程送到运行队列的末尾,等待下一次执行;然后,把处理机分配给就绪队列中新的队首进程,同时也让它执行一个时间片。这样就可以保证运行队列中的所有进程,在一个给定的时间内,均能获得一时间片的处理机执行时间。本实验设计一个有N个进程并发的进程调度程序,采用时间片轮转算法。每一个进程用一个进程控制块PCB表示。PCB包含信息有:进程名name,进程号id,进程状态state,进程所需运行时间need_time,进程运行时间run_t

3、ime。进程运行时间以时间片为单位进行计算。(程序中以按任意键表示运行一次CPU时间片)每个进程的状态有就绪W,运行R,和完成F(撤销进程)。就绪的进程获得CPU后只能运行一个时间片,运行完运行时间run_time+1。如果运行一个时间片后,进程的run_time等于need_time(即已经达到所需运行时间),则撤销该进程并提示,如果还未达到,则将其放到队尾,进入就绪状态等待下一次时间片分配。每一次调度程序都打印一次运行情况,包括:运行的进程,就绪队列的进程,已经所有进程的PCB(不包括已经撤销的进程)。44五、实验

4、结果:4六、实验小结由于自己自编写代码方面与他人有一定的差距,因此在做实验的过程中我在网上搜了很多相关的资料,了解实现该算法的原理及各部分实现的代码,同时参考了几个别人写好的源代码,然后自己在理解的基础上不断的根据要求修改写程序,不过其中碰见的很多的问题。我已经自己调了好多错误,在一遍遍的调试和修改中,发现自己的经验在快速增长,这个感觉真的很不错。在修改错误的过程中学会了结点指针的空间申请,如q=(PCB*)malloc(sizeof(PCB)),清屏语句的使用system(“cls”);等。然而,实验的运行结果还不是

5、很完美,每个进程在最后一个时间片的运行过程中,进程列表的更新总是修改错误。不过在在本次试验中学到了不少东西,一点点的在进步。附录:4#include#include#include#includestaticintid=0;intprocess_num;intcurrent_process;structpcb{charname[20];intid;charstate;intneed_time;intrun_time;structpcb*nex

6、t;}*p,*q,*first_pcb=NULL;typedefstructpcbPCB;/*排序输出各个进程PCB*/voidprintSort(){inti;q=first_pcb;for(i=0;iid){printf("

7、%stt

8、%dtt

9、%ctt

10、%dtt

11、%d",q->name,q->id,q->state,q->need_time,q->run_time);i++;q=first_pcb;}else{q=q->next;if(q==NU

12、LL){q=first_pcb;i++;}}}}/*调度一次PCB并显示*/voidshowPCB(){//inti;first_pcb->run_time++;first_pcb->state='r';/*进程执行完毕,将其清除出链表*/if((first_pcb->run_time)==(first_pcb->need_time)){current_process--;printf("进程%s已经运行完毕",first_pcb->name);system("pause");first_pcb=first_pcb->

13、next;if(first_pcb==NULL){printf("所有进程都已经运行完毕");system("pause");return;}first_pcb->state='r';4}system("cls");/*显示运行的进程和就绪的进程*/q=first_pcb->next;printf("-------当前运行的进程是

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

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

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