短作业优先算法 操作系统C语言

时间:2013-12-09 16:24:20
【文件属性】:

文件名称:短作业优先算法 操作系统C语言

文件大小:4KB

文件格式:CPP

更新时间:2013-12-09 16:24:20

短作业优先算法 操作系统C语言

#include //定义一个结构体 struct sjf{ char name[10]; //进程名 float arrivetime; //到达时间 float servicetime;//服务时间 float starttime; //开始时间 float finishtime;//完成时间 float zztime;//周转时间 float dqzztime;//带权周转 }; //定义一个结构体数组 sjf a[100]; //定义一个输入函数 void input(sjf *p,int N) { int i; printf("intput the process's name & arrivetime & servicetime:\nfor exmple: a 0 100\n"); for(i=0;i<=N-1;i++) { printf("input the %dth process's information:\n",i+1); scanf("%s%f%f",&p[i].name,&p[i].arrivetime,&p[i].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",p[0].name); for(k=1;k%s",p[k].name); } printf("\nthe process's information:\n"); printf("\nname\tarrive\tservice\tstart\tfinish\tzz\tdqzz\n"); for(k=0;k<=N-1;k++) { printf("%s\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t\n",p[k].name,p[k].arrivetime,p[k].servicetime,p[k].starttime,p[k].finishtime,p[k].zztime,p[k].dqzztime); } } //按到达时间排序 void sort(sjf *p,int N) { for(int i=0;i<=N-1;i++) for(int j=0;j<=i;j++) if(p[i].arrivetime=p[k].arrivetime) { p[k].starttime=p[k-1].finishtime;} else { p[k].starttime =p[k].arrivetime;} p[k].finishtime=p[k].starttime+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;//带权周转时间=周转时间/服务时间 } } //短作业优先调度算法 void sjff(sjf *p,int N) { float arrivetime=0,servicetime=0,starttime=0,finishtime=0,zztime=0,dqzztime=0; sort(p,N);//调用sort函数 for(int m=0;m=p[m].arrivetime ) { p[m].starttime=p[m-1].finishtime;} else { p[m].starttime =p[m].arrivetime;} p[m].finishtime=p[m].starttime+p[m].servicetime; } int i=0; for(int n=m+1;n<=N-1;n++) { if(p[n].arrivetime<=p[m].finishtime) i++; } //按服务时间排序 float min=p[m+1].servicetime; int next=m+1;//m+1=n for(int k=m+1;k


网友评论

  • 这个根本不是段作业优先 是先来先服务算法