欢迎来到天天文库
浏览记录
ID:11742161
大小:140.50 KB
页数:7页
时间:2018-07-13
《先来先服务fcfs和短作业优先sjf进程调度算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验一先来先服务FCFS和短作业优先SJF进程调度算法一需求分析【实验目的】通过这次实验,加深对进程概念的理解,进一步掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。【实验内容】问题描述:设计程序模拟进程的先来先服务FCFS和短作业优先SJF调度过程。假设有n个进程分别在T1,…,Tn时刻到达系统,它们需要的服务时间分别为S1,…,Sn。分别采用先来先服务FCFS和短作业优先SJF进程调度算法进行调度,计算每个进程的完成时间、周转时间和带权周转时间,并且统计n个进程的平均周转时间和平均带权周转时间。程序需求:1)进程个数n;每个进程
2、的到达时间T1,…,Tn和服务时间S1,…,Sn;2)要求采用先来先服务FCFS和短作业优先SJF分别调度进程运行,计算每个进程的完成时间,周转时间和带权周转时间,并且计算所有进程的平均周转时间和带权平均周转时间;4)输出:输出计算出来的每个进程的完成时间,周转时间、带权周转时间、所有进程的平均周转时间以及带权平均周转时间。5)测试数据:作业情况调度算法进程名ABCDE平均到达时间01234服务时间43524FCFS(a)完成时间47121418周转时间461011149带权周转时间1225.53.52.8SJF(b)完成时间4918613周
3、转时间4816398带权周转时间12.673.11.52.252.1二概要设计1)程序中进程调度时间变量描述如下:constintMaxNum=100;//定义进程的最大总数doubleArrivalTime[MaxNum];到达时间doubleServiceTime[MaxNum];服务时间doubleFinishTime[MaxNum];完成时间doubleWholeTime[MaxNum];周转时间doubleWeightWholeTime[MaxNum];带权周转时间doubleAverageWT_FCFS;定义FCFS平均周转时间d
4、oubleAverageWWT_FCFS;定义FCFS平均带权周转时间doubleAverageWT_SJF;定义SJF平均周转时间doubleAverageWWT_SJF;定义SJF平均带权周转时间2)进程调度的实现过程如下:Ø变量初始化;Ø接收用户输入n,T1,…,Tn,S1,…,Sn;Ø按照算法进行进程调度,计算进程的完成时间、周转时间和带权周转时间;Ø计算所有进程的平均周转时间和平均带权周转时间;Ø按格式输出调度结果。三详细设计1)Main函数intmain(){cout<<"请输入进程总的个数n(n为整数且05、endl;cin>>n;while(n<1){cout<<"你输入的n值不合适,请重新输入!"<>n;}cout<<"请按照进程到达的时间由小到大依次输入n个进程的到达时间,以空格隔开:"<>ArrivalTime[i];cout<<"请按上面的顺序依次输入各个进程的服务时间,以空格隔开:"<>ServiceTime[i];FCFS(ArrivalTime,ServiceTime,n);//调用FCFS子程序6、SJF(ArrivalTime,ServiceTime,n);//调用SJF子程序}2)FCFS算法voidFCFS(double*ArrivalTime,double*ServiceTime,doublen){FinishTime[0]=ArrivalTime[0]+ServiceTime[0];WholeTime[0]=FinishTime[0]-ArrivalTime[0];WeightWholeTime[0]=WholeTime[0]/ServiceTime[0];AverageWT_FCFS=WholeTime[0];Average7、WWT_FCFS=WeightWholeTime[0];for(inti=1;iArrivalTime[i]8、9、FinishTime[i-1]==ArrivalTime[i])FinishTime[i]=FinishTime[i-1]+ServiceTime[i];elseFinishTime[i]=ArrivalTime[i]+ServiceTime[i];WholeTime[i]=FinishTime[i]-ArrivalTime[i];WeightWholeTime[i]=Whole10、Time[i]/ServiceTime[i];AverageWT_FCFS+=WholeTime[i];AverageWWT_FCFS+=WeightWholeTi
5、endl;cin>>n;while(n<1){cout<<"你输入的n值不合适,请重新输入!"<>n;}cout<<"请按照进程到达的时间由小到大依次输入n个进程的到达时间,以空格隔开:"<>ArrivalTime[i];cout<<"请按上面的顺序依次输入各个进程的服务时间,以空格隔开:"<>ServiceTime[i];FCFS(ArrivalTime,ServiceTime,n);//调用FCFS子程序
6、SJF(ArrivalTime,ServiceTime,n);//调用SJF子程序}2)FCFS算法voidFCFS(double*ArrivalTime,double*ServiceTime,doublen){FinishTime[0]=ArrivalTime[0]+ServiceTime[0];WholeTime[0]=FinishTime[0]-ArrivalTime[0];WeightWholeTime[0]=WholeTime[0]/ServiceTime[0];AverageWT_FCFS=WholeTime[0];Average
7、WWT_FCFS=WeightWholeTime[0];for(inti=1;iArrivalTime[i]
8、
9、FinishTime[i-1]==ArrivalTime[i])FinishTime[i]=FinishTime[i-1]+ServiceTime[i];elseFinishTime[i]=ArrivalTime[i]+ServiceTime[i];WholeTime[i]=FinishTime[i]-ArrivalTime[i];WeightWholeTime[i]=Whole
10、Time[i]/ServiceTime[i];AverageWT_FCFS+=WholeTime[i];AverageWWT_FCFS+=WeightWholeTi
此文档下载收益归作者所有