短作业优先调度和时间xxxxxx片轮转调度算_第1页
短作业优先调度和时间xxxxxx片轮转调度算_第2页
短作业优先调度和时间xxxxxx片轮转调度算_第3页
短作业优先调度和时间xxxxxx片轮转调度算_第4页
短作业优先调度和时间xxxxxx片轮转调度算_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 一、实验项目名称:进程调度算法的设计二、实验原理:时间片轮转法:系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片。当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的队尾;然后,再把处理机分配给就绪队列中的新的队首进程,同时也让它执行一个时间片。这样就可以保证就绪队列中的所有进程在一个给定的时间内均能获得一时间片的处理机执行时间。三、实验目的:通过对进程调度算法的设计,深入理解进程调度的原理四、实验内容:1编写程序实现RR算法五、实验器材(设备、元器件):装有VC+6.0的P

2、C机一台六、实验步骤:1打开VC,设计编写程序的源代码2编译运行程序的源代码3分析检验程序的结果是否正确4总结实验结果及结论时间片轮转法源代码:#include <stdio.h>#define M 5 /物理页数#define Myprintf printf("|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|n")typedef struct PCBint ID;int ReachTime;int TotalTime;PCB;/进程号,到达时间和服务时间typedef struct NOTE /备份int ID;int TotalTi

3、me;NOTE;PCB AM; /5个进程PCB aM;NOTE temp;int queue50; /记录调度的进程int K=0;/调度进程数组的标识void INIT()/初始化int i;for(i=0;i<M;i+)Ai.ID=-1;int GetNum()/计算进程数int i,j=0;for(i=0;i<M;i+)if(Ai.ID!=-1)j+;return j;int GetReach(int time)/找出到达进程号int i;for(i=0;i<M;i+)if(ai.ReachTime<=time)ai.ReachTime=100;return i

4、;return -1;int GetInsert()/找出插入位置int i;for(i=0;i<M;i+)if(Ai.ID=-1)return i;return -1;void Forward(int num)/前移int i;for(i=0;i<num-1;i+)Ai.ID=Ai+1.ID;Ai.TotalTime=Ai+1.TotalTime;Anum-1.ID=-1;void Process()/执行进程queueK=A0.ID;K+;A0.TotalTime-;temp.ID=A0.ID;temp.TotalTime=A0.TotalTime;void main()int

5、 i;int time;int t=0;int reach;int insert;int num;printf("RR算法nn");INIT();for(i=0;i<M;i+)printf("请输入进程ID:");scanf("%d",&ai.ID);printf("请输入到达时间:");scanf("%d",&ai.ReachTime);printf("请输入服务时间:");scanf("%d",&ai.TotalTime)

6、;for(i=0;i<M;i+)/运行时间t=t+ai.TotalTime;for(i=0;i<50;i+)/初始化queuei=-1;for(time=0;time<=t;time+)reach=GetReach(time);if(reach!=-1)/有进程到达insert=GetInsert();Ainsert.ID=areach.ID;Ainsert.TotalTime=areach.TotalTime;num=GetNum();if(num=1)continue;/进程数为1else/进程数不为1Process();Forward(num);if(temp.Tota

7、lTime!=0)Anum-1.ID=temp.ID;Anum-1.TotalTime=temp.TotalTime;else/没有进程到达num=GetNum();if(num=1)/进程数为1Process();if(temp.TotalTime=0)A0.ID=-1;else if(num=0)continue;/进程数为0elseProcess();Forward(num);if(temp.TotalTime!=0)Anum-1.ID=temp.ID;Anum-1.TotalTime=temp.TotalTime;printf("n");printf("调度顺序为:n");Myprintf;for(i=0;i<50;i+)if(queuei!=-1)printf("|%2d ",queuei);printf("|n");Myprintf;printf("n");八、实验数据及结果分析:时间片轮转调度算法结果:九、实验结论: 本次实

温馨提示

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

评论

0/150

提交评论