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

下载本文档

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

文档简介

短作业优先调度和时间片轮转调度算法电子科技大学实验报告二、实验项目名称:进程调度算法的设计短作业(进程)优先调度算法:短作业调度算法是从后备队列中选择一个或者若干个估计运行时间最短的作业,将他们调入内存运行。而短进程优先调度算法则是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或者发生某事件而被阻塞放弃处理机时再重新调度。时间片轮转法:系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片。当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的队尾;然后,再把处理机分配给就绪队列中的新的队首进程,同时也让它执行一个时间片。这样就可以保证就绪队列中的所有进程在一个给定的时间内均能获得一时间片的处理机执行时间。通过对进程调度算法的设计,深入理解进程调度的原理六、实验器材(设备、元器件):VC编写程序的源代码2.编译运行程序的源代码3.分析检验程序的结果是否正确4.总结实验结果及结论短进程优先调度源代码:#include""structsjf{charname[10];floatarrivetime;floatservicetime;floatstarttime;floatfinishtime;floatzztime;floatdqzztime;sjfa[100];voidinput(sjf*p,intN)printf("intputtheprocess'sname&arrivetime&servicetime:\nforexmple:a0100\n");for(i=0;i<=N-1;i++){printf("inputthe%dthprocess'sinformation:\n",i+1);scanf("%s%f%f",&p[i].name,&p[i].arrivetime,&p[i].servicetime);}}voidPrint(sjf*p,floatarrivetime,floatservicetime,floatstarttime,floatfinishtime,floatzztime,floatdqzztime,intN)printf("runorder:");printf("%s",p[0].name);for(k=1;k<N;k++){printf("-->%s",p[k].name);}printf("\ntheprocess'sinformation:\n");printf("\nname\tarrive\tservice\tstart\tfinish\tzz\tdqzz\n");for(k=0;k<=N-1;k++){printf("%s\t%\t%\t%\t%\t%\t%\t\n",p[k].name,p[k].arrivetime,p[k].servicetime,p[k].starttime,p[k].finishtime,p[k].zztime,p[k].dqzztime);}}rrivetime<p[j].arrivetime){sjftemp;temp=p[i];p[i]=p[j];p[j]=temp;}}tarttime=p[k].arrivetime;p[k].finishtime=p[k].arrivetime+p[k].servicetime;}{p[k].starttime=p[k-1].finishtime;p[k].finishtime=p[k-1].finishtime+p[k].servicetime;}}for(k=0;k<=N-1;k++){p[k].zztime=p[k].finishtime-p[k].arrivetime;p[k].dqzztime=p[k].zztime/p[k].servicetime;}}voidsjff(sjf*p,intN)arrivetime=0,servicetime=0,starttime=0,finishtime=0,zztime=0,dqzztime=0;inishtime=p[m].arrivetime+p[m].servicetime;p[m].finishtime=p[m-1].finishtime+p[m].servicetime;inti=0;for(intn=m+1;n<=N-1;n++){if(p[n].arrivetime<=p[m].finishtime)ervicetime;intnext=m+1;ervicetime<min){min=p[k+1].servicetime;next=k+1;}}sjftemp;temp=p[m+1];p[m+1]=p[next];p[next]=temp;}deal(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztPrint(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N);}voidmain()printf("------短作业优先调度算法------\n");printf("inputtheprocess'snumber:\n");scanf("%d",&N);input(a,N);sjf*b=a;sjf*c=a;sjff(b,N);}#include<>#defineM5D=-1;}}intGetNum()D!=-1){}}returnj;}intGetReach(inttime)eachTime<=time){a[i].ReachTime=100;returni;}}return-1;}intGetInsert()D==-1)returni;}void}void}void{}return-1;Forward(intnum)D=A[i+1].ID;A[i].TotalTime=A[i+1].TotalTime;}A[num-1].ID=-1;Process()D;K++;=A[0].ID;=A[0].TotalTime;main()inti;inttime;intt0;intreach;intinsert;tnumprintf("RR算法\n\n");INITfor(i=0;i<M;i++){printf("请输入进程ID:");scanf("%d",&a[i].ID);scanf("%d",&a[i].ReachTime);scanf("%d",&a[i].TotalTime);}for(i=0;i<M;i++)otalTime;}for(i=0;i<50;i++)D=a[reach].ID;A[insert].TotalTime=a[reach].TotalTime;num=GetNum();if(num==1)continue;D=;A[num-1].TotalTime=;}}}elseD=-1;}}elseif(num==0)continue;D=;A[num-1].TotalTime=;}}}}printf("\n");Myprintf;for(i=0;i<50;i++){if(queue[i]!=-1)printf("|%2d",queue[i]);}printf("|\n");Myprintf;printf("\n");}八、实验数据及结果分析:短作业优先调度算法的实验结果:果:本次实验成功的完成了短作业优先调度算法和轮转时间片调度算法的模拟,通过本次实验我们了解到短作业优先调度算法不利于长作业的处理,因为长作业将长期得不到处理,而轮转时间片调度算法则解决了这一问题。短长作业均能在每一个周期内分得一个时间片处理自己的任、总结及心得体会:通过本次实验对短作业优先调度算法和时间片轮转调

温馨提示

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

评论

0/150

提交评论