操作系统FCFS与FJS算法作业调度算法.docx

上传人:小飞机 文档编号:3549665 上传时间:2023-03-13 格式:DOCX 页数:9 大小:38.17KB
返回 下载 相关 举报
操作系统FCFS与FJS算法作业调度算法.docx_第1页
第1页 / 共9页
操作系统FCFS与FJS算法作业调度算法.docx_第2页
第2页 / 共9页
操作系统FCFS与FJS算法作业调度算法.docx_第3页
第3页 / 共9页
操作系统FCFS与FJS算法作业调度算法.docx_第4页
第4页 / 共9页
操作系统FCFS与FJS算法作业调度算法.docx_第5页
第5页 / 共9页
亲,该文档总共9页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《操作系统FCFS与FJS算法作业调度算法.docx》由会员分享,可在线阅读,更多相关《操作系统FCFS与FJS算法作业调度算法.docx(9页珍藏版)》请在三一办公上搜索。

1、操作系统FCFS与FJS算法作业调度算法一 实验项目名称: 作业调度算法 二 实验目的: 加深作业概念的理解模拟先来先服务(FCFS)与短作业优先调度算法(SJF) 三 实验要求: 模拟先来先服务(FCFS)与短作业优先调度算法(SJF)运行 四 实验原理: 作业调度算法 1)先来先服务调度算法 先来先服务(FCFS)调度算法是一种最简单的调度算法,每次调度都从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。 2)短作业优先调度算法 短作业优先调度算法(SJF),是指对短作业优先调度的算法。短作业优先(SJF)的调度算法是从后备队列

2、中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。 五 算法分析: #includestdio.h #define N 50 void main void fcfs; void sjf; int a; while(true) printf(nn); printf(tt/*/); printf(ntt/* 1、fcfs 调 度 */); printf(ntt/* 2、sjf 调 度 */); printf(ntt/* 0、 退 出 */n); printf(tt/*/); printf(nnt请选择菜单项:t); scanf(%d,&a); printf(n); switch(a)

3、case 1: fcfs;break; case 2: sjf;break; default: break; if(a!=1&a!=2) break; void fcfs int i,j,n,min,px; float sum1,sum2; printf(t请输入有n个进程(0n50|n=0) printf(nt请重新输入: ); scanf(%d,&n); printf(nn); struct Gzuo int id; /进程名字 int dt; /到达时刻 int st; /服务时间 int wct; /完成时刻 float zt; /周转时间 float dczt; /带权周转时间 ;

4、Gzuo aN; for(i=0;i=0;j-) for(i=0;iai+1.dt) min=ai.dt; ai.dt=ai+1.dt; ai+1.dt=min; min=ai.st; ai.st=ai+1.st; ai+1.st=min; min=ai.id; ai.id=ai+1.id; ai+1.id=min; a0.wct=a0.st+a0.dt; a0.zt=(float)a0.st; a0.dczt=a0.zt/a0.st; for(i=1;iai-1.wct) ai.wct=ai.dt+ai.st; ai.zt=(float)ai.st; ai.dczt=ai.zt/ai.st;

5、 else ai.wct=ai-1.wct+ai.st; ai.zt=(float)(ai.wct-ai.dt); ai.dczt=ai.zt/ai.st; printf(t1、按id号依次输出n); printf(t2、按完成顺序依次输出n); printf(nt请选择输出顺序:t); scanf(%d,&px); printf(nid:到达时间t服务时间t完成时间t周转时间t带权周转时间n); sum1=0; sum2=0; switch(px) case 2: for(i=0;in;i+) printf(%d: %dtt%dtt%dtt%.0ftt%.2fn,ai.id,ai.dt,ai

6、.st,ai.wct,ai.zt,ai.dczt); sum1+=ai.zt; sum2+=ai.dczt; printf(n平均周转时间:%.2fn,sum1/n); printf(n平均带权周转时间:%.2fnn,sum2/n); break; case 1: for(j=0;jn;j+) for(i=0;in;i+) if(ai.id=j+1) printf(%d: %dtt%dtt%dtt%.0ftt%.2fn,ai.id,ai.dt,ai.st,ai.wct,ai.zt,ai.dczt); sum1+=ai.zt; sum2+=ai.dczt; printf(n平均周转时间:%.2f

7、n,sum1/n); printf(n平均带权周转时间:%.2fnn,sum2/n); break; default: break; void sjf int i,j,n,min,px; int b=0,z; float sum1,sum2; printf(ntt请输入有n个进程(0n50|n=0) printf(nt请重新输入: ); scanf(%d,&n); printf(n); struct Gzuo int id; /进程名字 int dt; /到达时刻 int st; /服务时间 int wct; /完成时刻 float zt; /周转时间 float dczt; /带权周转时间

8、; Gzuo aN; for(i=0;i=0;j-) for(i=0;iai+1.dt) min=ai.dt; ai.dt=ai+1.dt; ai+1.dt=min; min=ai.st; ai.st=ai+1.st; ai+1.st=min; min=ai.id; ai.id=ai+1.id; ai+1.id=min; if(ai.dt=ai+1.dt&ai.stai+1.st) min=ai.dt; ai.dt=ai+1.dt; ai+1.dt=min; min=ai.st; ai.st=ai+1.st; ai+1.st=min; min=ai.id; ai.id=ai+1.id; ai+

9、1.id=min; a0.wct=a0.st+a0.dt; a0.zt=(float)a0.st; a0.dczt=a0.zt/a0.st; for(i=1;ia0.wct) ; else b=b+1; for(j=b-1;j=1;j-) for(i=1;iai+1.st) min=ai.dt; ai.dt=ai+1.dt; ai+1.dt=min; min=ai.st; ai.st=ai+1.st; ai+1.st=min; min=ai.id; ai.id=ai+1.id; ai+1.id=min; for(i=1;iai-1.wct) ai.wct=ai.dt+ai.st; ai.zt=

10、(float)ai.st; ai.dczt=ai.zt/ai.st; else ai.wct=ai-1.wct+ai.st; ai.zt=(float)(ai.wct-ai.dt); ai.dczt=ai.zt/ai.st; for(j=i+1,b=j;jai.wct) ; else b=b+1; for(j=b-1;j=i;j-) for(z=i;zaz+1.st) min=az.dt; az.dt=az+1.dt; az+1.dt=min; min=az.st; az.st=az+1.st; az+1.st=min; min=ai.id; ai.id=ai+1.id; ai+1.id=mi

11、n; printf(nt请选择输出顺序n); printf(t1、按id号依次输出n); printf(t2、按完成顺序依次输出n); scanf(%d,&px); printf(nid:到达时间t服务时间t完成时间t周转时间t带权周转时间n); sum1=0; sum2=0; switch(px) case 2: for(i=0;in;i+) printf(%d: %dtt%dtt%dtt%.0ftt%.2fn,ai.id,ai.dt,ai.st,ai.wct,ai.zt,ai.dczt); sum1+=ai.zt; sum2+=ai.dczt; printf(n平均周转时间:%.2fn,s

12、um1/n); printf(n平均带权周转时间:%.2fnn,sum2/n); break; case 1: for(j=0;jn;j+) for(i=0;in;i+) if(ai.id=j+1) printf(%d: %dtt%dtt%dtt%.0ftt%.2fn,ai.id,ai.dt,ai.st,ai.wct,ai.zt,ai.dczt); sum1+=ai.zt; sum2+=ai.dczt; printf(n平均周转时间:%.2fn,sum1/n); printf(n平均带权周转时间:%.2fnn,sum2/n); break; default: break; 六 截图 FCFS: SJF: 七 实验总结: 比如有3个进程,到达时间分别为2 3 5 服务时间分别为 2 4 3 FCFS算法运行顺序为 :1 2 3 SJF算法运行作业的顺序为:1 3 2 FCFS算法的平均周转时间为4.33,平均带权周转时间1.42 SJF算法的平a均周转时间为5.33,平均带权周转时间1.50 SJF算法的平均周转时间和平均带权周转时间比FCFS算法的平均周转时间和平均带权周转时间的低。

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号