欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

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

    • 资源ID:3549665       资源大小:38.17KB        全文页数:9页
    • 资源格式: DOCX        下载积分:6.99金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要6.99金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    操作系统FCFS与FJS算法作业调度算法一 实验项目名称: 作业调度算法 二 实验目的: 加深作业概念的理解模拟先来先服务(FCFS)与短作业优先调度算法(SJF) 三 实验要求: 模拟先来先服务(FCFS)与短作业优先调度算法(SJF)运行 四 实验原理: 作业调度算法 1)先来先服务调度算法 先来先服务(FCFS)调度算法是一种最简单的调度算法,每次调度都从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。 2)短作业优先调度算法 短作业优先调度算法(SJF),是指对短作业优先调度的算法。短作业优先(SJF)的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。 五 算法分析: #include"stdio.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) 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个进程(0<n<=50):t"); scanf("%d",&n); while(n>50|n<=0) printf("nt请重新输入: "); scanf("%d",&n); printf("nn"); struct Gzuo int id; /进程名字 int dt; /到达时刻 int st; /服务时间 int wct; /完成时刻 float zt; /周转时间 float dczt; /带权周转时间 ; Gzuo aN; for(i=0;i<n;i+) ai.id=i+1; printf("t到达时间: "); scanf("%d",&ai.dt); printf("t服务时间: "); scanf("%d",&ai.st); printf("n"); for(j=n-1;j>=0;j-) for(i=0;i<j;i+) if(ai.dt>ai+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;i<n;i+) if(ai.dt>ai-1.wct) ai.wct=ai.dt+ai.st; ai.zt=(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; 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;i<n;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",sum1/n); printf("n平均带权周转时间:%.2fnn",sum2/n); break; case 1: for(j=0;j<n;j+) for(i=0;i<n;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; void sjf int i,j,n,min,px; int b=0,z; float sum1,sum2; printf("ntt请输入有n个进程(0<n<=50):t"); scanf("%d/n",&n); while(n>50|n<=0) printf("nt请重新输入: "); scanf("%d",&n); printf("n"); struct Gzuo int id; /进程名字 int dt; /到达时刻 int st; /服务时间 int wct; /完成时刻 float zt; /周转时间 float dczt; /带权周转时间 ; Gzuo aN; for(i=0;i<n;i+) ai.id=i+1; printf("t到达时间: "); scanf("%d",&ai.dt); printf("t服务时间: "); scanf("%d",&ai.st); printf("n"); min=a0.dt; for(j=n-1;j>=0;j-) for(i=0;i<j;i+) if(ai.dt>ai+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.st>ai+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; a0.wct=a0.st+a0.dt; a0.zt=(float)a0.st; a0.dczt=a0.zt/a0.st; for(i=1;i<n;i+) if(ai.dt>a0.wct) ; else b=b+1; for(j=b-1;j>=1;j-) for(i=1;i<j;i+) if(ai.st>ai+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;i<n;i+) if(ai.dt>ai-1.wct) ai.wct=ai.dt+ai.st; ai.zt=(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;j<n;j+) if(aj.dt>ai.wct) ; else b=b+1; for(j=b-1;j>=i;j-) for(z=i;z<j;z+) if(az.st>az+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=min; 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;i<n;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",sum1/n); printf("n平均带权周转时间:%.2fnn",sum2/n); break; case 1: for(j=0;j<n;j+) for(i=0;i<n;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算法的平均周转时间和平均带权周转时间的低。

    注意事项

    本文(操作系统FCFS与FJS算法作业调度算法.docx)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开