先来先服务FCFS和短作业优先SJF进程调度算法

上传人:壹****1 文档编号:542591224 上传时间:2023-04-10 格式:DOC 页数:9 大小:119.50KB
返回 下载 相关 举报
先来先服务FCFS和短作业优先SJF进程调度算法_第1页
第1页 / 共9页
先来先服务FCFS和短作业优先SJF进程调度算法_第2页
第2页 / 共9页
先来先服务FCFS和短作业优先SJF进程调度算法_第3页
第3页 / 共9页
先来先服务FCFS和短作业优先SJF进程调度算法_第4页
第4页 / 共9页
先来先服务FCFS和短作业优先SJF进程调度算法_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《先来先服务FCFS和短作业优先SJF进程调度算法》由会员分享,可在线阅读,更多相关《先来先服务FCFS和短作业优先SJF进程调度算法(9页珍藏版)》请在金锄头文库上搜索。

1、【实验题目】:先来先服务FCFS和短作业优先SJF进程调度算法通过这次实验,加深对进程概念的理解,进一步掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。【实验内容】问题描述:设计程序模拟进程的先来先服务FCFS和短作业优先SJF调度过程。假设有n个进程分别在工,T时刻到达系统,它们需要的服1n务时间分别为S1,.,S。分别采用先来先服务FCFS和短作业优先SJF1n进程调度算法进行调度,计算每个进程的完成时间,周转时间和带权周转时间,并且统计n个进程的平均周转时间和平均带权周转时间。【实验要求】要求如下:1)进程个数n;每个进程的到达时间T1,.,T和服务时间1nS,S;选择算法1-

2、FCFS,2-SJF。1n2)要求采用先来先服务FCFS和短作业优先SJF分别调度进程运行,计算每个进程的周转时间,带权周转时间,并且计算所有进程的平均周转时间,带权平均周转时间;3)输出:要求模拟整个调度过程,输出每个时刻的进程运行状态,如“时刻3:进程B开始运行”等等;4)输出:要求输出计算出来的每个进程的周转时间,带权周转时间,所有进程的平均周转时间,带权平均周转时间。程序代码:#include#include#defineNumber5voidmain()intn;intdaodaNumber,fuwuNumber,i;cout请依次输入各个进程的到达时间并以空格间隔:;for(i=0

3、;idaodai;coutvv“请依次输入各个进程的服务时间,并以空格间隔:“;for(i=0;ifuwui;coutn;while(n3)coutn;structstatedd/声明结构booldoneF,doneS;intdaoda,fuwu;floatwancheng,zhouzhuan,daiquan,wan,zhou,dai;stateddprocessNumber;声明结构变量,这里为数组inttimeflyF=O,timeflyS=O;定义两个类似于秒表的变量intj,k,l,nextproF,nextproS;/获取数据for(i=0;iNumber;i+)processi.d

4、oneF=false;processi.doneS=false;processi.wancheng=0;processi.zhouzhuan=0;processi.daiquan=0;processi.wan=0;processi.zhou=0;processi.dai=0;processi.daoda=daodai;processi.fuwu=fuwui;/获取最先到达的进程下标firstintfirst=0;l=first;for(i=1;idaodai)first=i;processfirst.doneF=true;processfirst.doneS=true;processfirst

5、.wancheng=processfirst.fuwu+processfirst.daoda;processfirst.wan=processfirst.fuwu+processfirst.daoda;timeflyF+=processfirst.daoda+processfirst.fuwu;timeflyS+=processfirst.daoda+processfirst.fuwu;/接下去到达的进程/fcfs/#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*

6、#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*for(j=1;jNumber;j+)nextproF=Number+1;fo

7、r(k=0;kNumber;k+)if(!processk.doneF)if(processk.daodaprocessk.daoda)nextproF=k;/获取到达时刻最先的进程/else/if2/if1/for/处理processnextproF.wancheng=processnextproF.fuwu+timeflyF;timeflyF+=processnextproF.fuwu;processnextproF.doneF=true;/circle2/Zii/IIJ#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*

8、#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*for(j=1;jNumber;j+)nextproS=Number+1;for(k=0;kNumber;k+)if(!processk.doneS)if(processk.daodaprocessk.fuwu)nextproS=k;/获取服务时间最小的进程/else/if2/if1/for/处理processnextproS.wan=processnextproS.fuwu+timeflyS;timeflyS+=processnextpr

9、oS.fuwu;processnextproS.doneS=true;/circle2/#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*floatFz=0,Fdq=0,Sz=0,Sdq=0;/for(i=0;iNumber;i+)/processi.zhouzhu

10、an=processi.wancheng-processi.daoda;Fz+=processi.zhouzhuan;processi.daiquan=processi.zhouzhuan/processi.fuwu;Fdq+=processi.daiquan;/processi.zhou=processi.wan-processi.daoda;Sz+=processi.zhou;processi.dai=processi.zhou/processi.fuwu;Sdq+=processi.dai;/=输出/if(n=1|n=3)couttendl;coutFCFS:endl;for(i=0;i

11、Number;i+)if(i1)coutvv时刻vvlvv:进程vvi+lvv在运行vvendl;elsecoutvv时刻vvprocessi-l.wanchengvv:进程vvi+lvv在运行vvendl;coutvvsetw(10)vv进程IDvv;coutvvsetw(10)vv完成时间vv;coutvvsetw(10)vv周转时间vv;coutvvsetw(10)vv带权周转时间vvvvendl;for(i=0;ivNumber;i+)coutvvsetw(10)vvi+1vv;coutvvsetw(10)vvsetiosflags(ios:fixed)vvsetprecision(2

12、)vvprocessi.wanchengvv;coutvvsetw(10)vvsetiosflags(ios:fixed)vvsetprecision(2)vvprocessi.zhouzhuanvv;coutvvsetw(10)vvsetiosflags(ios:fixed)vvsetprecision(2)vvprocessi.daiquanvvvvendl;coutvv平均周转时间为:vvsetiosflags(ios:fixed)vvsetprecision(2)vvFz/Numbervvendl;coutvv平均带权周转时间为:vvsetiosflags(ios:fixed)vvse

13、tprecision(2)vvFdq/Numbervvendl;/if(n=2|n=3)couttendl;coutSJF:endl;for(i=0;iNumber;i+)if(i1)coutvv时刻vvlvv:进程vvi+lvv在运行vvendl;elsecoutvv时刻vvprocessi-1.wanvv:进程vvi+lvv在运行vvendl;coutvvsetw(10)vv进程IDvv;coutvvsetw(10)vv完成时间vv;coutvvsetw(10)vv周转时间vv;coutvvsetw(10)vv带权周转时间vvvvendl;for(i=0;ivNumber;i+)coutvvsetw(10)vvi+1vv;coutvvsetw(10)vvsetiosflags(ios:fixed)vvsetprecision(2)vvprocessi

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号