2022年操作系统短作业优先进程调度算法 2.pdf
#include #include using namespace std; struct SJF char name6;/ 进程名float arrivetime;/ 到达时间float servicetime;/ 服务时间float starttime;/ 开始执行时间float finishtime;/ 完成时间float zztime;/ 周转时间float dqzztime;/ 带权周转时间; SJF a100; void input(SJF *p,int N) int i; cout 按照进程名到达时间服务时间的格式输入 endl; for(i=0;i=N-1;i+) cout第 i+1pi.namepi.arrivetimepi.servicetime; void Print(SJF *p,float arrivetime,float servicetime,float starttime,float finishtime,float zztime,float dqzztime,int N) int k; coutendl 进程的运行状况:endl; cout 进程名到达时间服务时间 开始时间 完成时间周转时间带权周转时间endl; for(k=0;k=N-1;k+) cout pk.name pk.arrivetime pk.servicetime pk.starttime pk.finishtime pk.zztime pk.dqzztimeendl; /排序void sort(SJF *p,int N) for(int i=0;i=N-1;i+) for(int j=0;j=i;j+) if(pi.arrivetimepj.arrivetime) SJF temp; temp=pi; pi=pj; pj=temp; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 3 页 - - - - - - - - - /运行阶段void deal(SJF *p, float arrivetime,float servicetime,float starttime,float finishtime,float &zztime,float &dqzztime,int N) int k; for(k=0;kpk-1.finishtime) pk.starttime=pk.arrivetime; pk.finishtime=pk.arrivetime+pk.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); 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.servicetime; next=k+1; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 3 页 - - - - - - - - - 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); void main() int N; cout*操作系统实验 *endl; cout 短作业优先调度算法endl; coutN; input(a,N); SJF *b=a; SJF *c=a; SJFf(b,N); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 3 页 - - - - - - - - -