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

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

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

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

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

    先来先服务调度算法和短作业优先调度算法先来先服务调度算法和短作业优先调度算法 #include <stdio.h> struct fcfs /定义进程的结构体 char name10; /进程名 float arrivetime; /到达时间 float servicetime; /服务时间 float starttime; /开始时间 float finishtime; /完成时间 float zztime; /周转时间 float dqzztime; /带权周转时间 ; struct sjf /定义进程的结构体 char name10; /进程名 float arrivetime; /到达时间 float servicetime; /服务时间 float starttime; /开始时间 float finishtime; /完成时间 float zztime; /周转时间 float dqzztime; /带权周转时间 ; fcfs a100; /定义先来先服务算法进程的最大数量 sjf b100; /定义短作业优先算法进程的最大数量 void Finput(fcfs *p,int N) /输入函数 int i; printf("intput the process's name & arrivetime & servicetime:nfor exmple: a 0 100n"); for(i=0;i<=N-1;i+) printf("input the %dth process's 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;k<N;k+) printf("->%s",pk.name); printf("nnthe process's 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) /按到达时间排序,先到达排在前面 for(int i=0;i<=N-1;i+) for(int j=0;j<=i;j+) if(pi.arrivetime<pj.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.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 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) /输入函数 int i; printf("intput the process's name & arrivetime & servicetime:nfor exmple: a 0 100nn"); for(i=0;i<=N-1;i+) printf("input the %dth process's 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 finishtime,float zztime,float dqzztime,int N) int k; printf("nrun order:n"); printf("%s",p0.name); for(k=1;k<N;k+) printf("->%s",pk.name); printf("nnthe process's information:n"); printf("nnametarrivetservicetstarttfinishtzztdqzzn"); 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 Ssort(sjf *p,int N) /按短作业优先算法排序 for(int i=1;i<=N-1;i+) for(int j=1;j<=i;j+) if(pi.servicetime<pj.servicetime) sjf temp; temp=pi; pi=pj; pj=temp; /运行结果 void Sdeal(sjf *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.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 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,arrivetime,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 process's number:n"); scanf("%d",&N); Finput(a,N); FCFS(a,N); if(n=2) /短作业优先算法 int M; printf("-短作业优先调度算法-n"); printf("input the process's 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;

    注意事项

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

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开