短作业优先算法[特选材料].doc

上传人:rrsccc 文档编号:9727432 上传时间:2021-03-20 格式:DOC 页数:9 大小:81.50KB
返回 下载 相关 举报
短作业优先算法[特选材料].doc_第1页
第1页 / 共9页
短作业优先算法[特选材料].doc_第2页
第2页 / 共9页
短作业优先算法[特选材料].doc_第3页
第3页 / 共9页
亲,该文档总共9页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《短作业优先算法[特选材料].doc》由会员分享,可在线阅读,更多相关《短作业优先算法[特选材料].doc(9页珍藏版)》请在三一文库上搜索。

1、短作业(进程)优先调度算法1. 短作业(进程)优先调度算法SJ(P)F,是指对短作业或短进程优先调度的算法。它们可以分别用于作业调度和进程调度。短作业优先(SJF)的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。而短进程(SPF)调度算法则是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机再重新调度。SJ(P)F调度算法能有效地降低作业(进程)的平均等待时间,提高系统吞吐量。该算法对长作业不利,完全未考虑作业的紧迫程度。2. 流程图开始获取进程信息按作业运行时间排序调用action,执

2、行进程输出结果结束3. 代码#include#include#includestruct sjfchar name10;float arrivetime;float servicetime;float starttime;float finishtime;float zztime;float dqzztime;sjf a100;void input(sjf *p,int N) int i;printf(intput the processs name & arrivetime & servicetime:nfor exmple: a 0 100n);for(i=0;i=N-1;i+)print

3、f(input the %dth processs information:n,i+1);scanf(%s%f%f,&pi.name,&pi.arrivetime,&pi.servicetime);void Print(sjf *p,float arrivetime,float servicetime,float starttime,float finishtime,float zztime,float dqzztime,int N)int k; printf(run order:); printf(%s,p0.name);for(k=1;k%s,pk.name); printf(nthe p

4、rocesss information:n); printf(nnametarrivetservicetstarttfinishtzztdqzzn); for(k=0;k=N-1;k+) printf(%st%-.2ft%-.2ft%-.2ft%-.2ft%-.2ft%-.2ftn,pk.name,pk.arrivetime,pk.servicetime,pk.starttime,pk.finishtime,pk.zztime,pk.dqzztime); /pai xuvoid sort(sjf *p,int N) for(int i=0;i=N-1;i+) for(int j=0;j=i;j

5、+) if(pi.arrivetimepj.arrivetime) sjf temp; temp=pi; pi=pj; pj=temp; /yun xing jieduanvoid deal(sjf *p, float arrivetime,float servicetime,float starttime,float finishtime,float &zztime,float &dqzztime,int N) int k; for(k=0;k=N-1;k+) if(k=0) pk.starttime=pk.arrivetime; pk.finishtime=pk.arrivetime+pk

6、.servicetime; else pk.starttime=pk-1.finishtime; pk.finishtime=pk-1.finishtime+pk.servicetime; for(k=0;k=N-1;k+) pk.zztime=pk.finishtime-pk.arrivetime; pk.dqzztime=pk.zztime/pk.servicetime; void sjff(sjf *p,int N)float arrivetime=0,servicetime=0,starttime=0,finishtime=0,zztime=0,dqzztime=0;sort(p,N)

7、; for(int m=0;mN-1;m+) if(m=0) pm.finishtime=pm.arrivetime+pm.servicetime; else pm.finishtime=pm-1.finishtime+pm.servicetime; int i=0; for(int n=m+1;n=N-1;n+) if(pn.arrivetime=pm.finishtime) i+; float min=pm+1.servicetime;int next=m+1;/m+1=n for(int k=m+1;km+i;k+) if(pk+1.servicetimemin) min=pk+1.se

8、rvicetime; next=k+1; sjf temp; temp=pm+1; pm+1=pnext; pnext=temp; deal(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N); Print(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N);int main() int N; printf(-短作业优先调度算法-n); printf(input the processs number:n); scanf(%d,&N); input(a,N); sjf *b=a; sjf *c=a; sjff(b,N); system(PAUSE);4. 运行结果5. 心得体会课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去做一件事情,又如何完成一件事情的能力。通过模拟进程的调度问题,更加深了我对于操作系统理论的理解,在自己的动手操作过程中,能够体会成功的喜悦和遇到问题自己解决的能力,对于我来说是一次提高,让自己多多的在实践中可以加深对理论的理解,也让我明白了以后应该如何更好,更高效的学习,在以后,我会更加努力。9材料a

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1