先来先服务调度算法和短作业优先调度算法.docx

上传人:牧羊曲112 文档编号:3287442 上传时间:2023-03-12 格式:DOCX 页数:5 大小:37.28KB
返回 下载 相关 举报
先来先服务调度算法和短作业优先调度算法.docx_第1页
第1页 / 共5页
先来先服务调度算法和短作业优先调度算法.docx_第2页
第2页 / 共5页
先来先服务调度算法和短作业优先调度算法.docx_第3页
第3页 / 共5页
先来先服务调度算法和短作业优先调度算法.docx_第4页
第4页 / 共5页
先来先服务调度算法和短作业优先调度算法.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《先来先服务调度算法和短作业优先调度算法.docx》由会员分享,可在线阅读,更多相关《先来先服务调度算法和短作业优先调度算法.docx(5页珍藏版)》请在三一办公上搜索。

1、先来先服务调度算法和短作业优先调度算法先来先服务调度算法和短作业优先调度算法 #include struct fcfs /定义进程的结构体 char name10; /进程名 float arrivetime; /到达时间 float servicetime; /服务时间 float starttime; /开始时间 float finishtime; /完成时间 float zztime; /周转时间 float dqzztime; /带权周转时间 ; struct sjf /定义进程的结构体 char name10; /进程名 float arrivetime; /到达时间 float s

2、ervicetime; /服务时间 float starttime; /开始时间 float finishtime; /完成时间 float zztime; /周转时间 float dqzztime; /带权周转时间 ; fcfs a100; /定义先来先服务算法进程的最大数量 sjf b100; /定义短作业优先算法进程的最大数量 void Finput(fcfs *p,int N) /输入函数 int i; printf(intput the processs name & arrivetime & servicetime:nfor exmple: a 0 100n); for(i=0;i

3、=N-1;i+) printf(input the %dth processs information:n,i+1); scanf(%s%f%f,&pi.name,&pi.arrivetime,&pi.servicetime); /输出函数 void FPrint(fcfs *p,float arrivetime,float servicetime,float starttime,float finishtime,float zztime,float dqzztime,int N) int k; printf(nrun order:n); printf(%s,p0.name); for(k=1

4、;k%s,pk.name); printf(nnthe processs information:n); printf(nnametarrivetservicetstarttfinishtzztdqzznn); for(k=0;k=N-1;k+) printf(%st%-.2ft%-.2ft%-.2ft%-.2ft%-.2ft%-.2ftnn,pk.name,pk.arrivetime,pk.servicetime,pk.starttime,pk.finishtime,pk.zztime,pk.dqzztime); void Fsort(fcfs *p,int N) /按到达时间排序,先到达排

5、在前面 for(int i=0;i=N-1;i+) for(int j=0;j=i;j+) if(pi.arrivetimepj.arrivetime) fcfs temp; temp=pi; pi=pj; pj=temp; /运行结果 void Fdeal(fcfs *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.arrivet

6、ime; 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; /带权周转时间=周转时间/服务

7、时间 /先来先服务 void FCFS(fcfs *p,int N) float arrivetime=0,servicetime=0,starttime=0,finishtime=0,zztime=0,dqzztime=0; Fsort(p,N); Fdeal(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N); FPrint(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N); void Sinput(sjf *p,int N) /输入

8、函数 int i; printf(intput the processs name & arrivetime & servicetime:nfor exmple: a 0 100nn); for(i=0;i=N-1;i+) printf(input the %dth processs information:n,i+1); scanf(%s%f%f,&pi.name,&pi.arrivetime,&pi.servicetime); /输出函数 void SPrint(sjf *p,float arrivetime,float servicetime,float starttime,float

9、finishtime,float zztime,float dqzztime,int N) int k; printf(nrun order:n); printf(%s,p0.name); for(k=1;k%s,pk.name); printf(nnthe processs information:n); printf(nnametarrivetservicetstarttfinishtzztdqzzn); for(k=0;k=N-1;k+) printf(%st%-.2ft%-.2ft%-.2ft%-.2ft%-.2ft%-.2ftnn,pk.name,pk.arrivetime,pk.s

10、ervicetime,pk.starttime,pk.finishtime,pk.zztime,pk.dqzztime); void Ssort(sjf *p,int N) /按短作业优先算法排序 for(int i=1;i=N-1;i+) for(int j=1;j=i;j+) if(pi.servicetimepj.servicetime) sjf temp; temp=pi; pi=pj; pj=temp; /运行结果 void Sdeal(sjf *p, float arrivetime,float servicetime,float starttime,float finishtim

11、e,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.servicetime; else pk.starttime=pk-1.finishtime; /开始时间=前一个进程的完成时间 pk.finishtime=pk-1.finishtime+pk.servicetime; /结束时间=前一个进程的完成时间+现在进程的服务时间 for(k=0;k=N-1;k+) pk.zztime=pk.

12、finishtime-pk.arrivetime; /周转时间=完成时间-到达时间 pk.dqzztime=pk.zztime/pk.servicetime; /带权周转时间=周转时间/服务时间 void SJF(sjf *p,int N) float arrivetime=0,servicetime=0,starttime=0,finishtime=0,zztime=0,dqzztime=0; Ssort(p,N); Sdeal(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N); SPrint(p,arrivet

13、ime,servicetime,starttime,finishtime,zztime,dqzztime,N); void main /主函数 while(1) int n; printf(选择哪种算法?1、先来先服务算法 2、段作业优先算法n); scanf(%d,&n); if(n=1) /先来先服务算法 int N; printf(-先来先服务调度算法-n); printf(input the processs number:n); scanf(%d,&N); Finput(a,N); FCFS(a,N); if(n=2) /短作业优先算法 int M; printf(-短作业优先调度算法-n); printf(input the processs number:n); scanf(%d,&M); Sinput(b,M); SJF(b,M); char o; printf(继续工作吗?(Y/N):); scanf(%s,&o); if(o=Y) continue; if(o=N) break;

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号