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

上传人:无*** 文档编号:80797452 上传时间:2022-04-26 格式:DOC 页数:10 大小:223.50KB
收藏 版权申诉 举报 下载
先来先服务FCFS和短作业优先SJF进程调度算法实验报告_第1页
第1页 / 共10页
先来先服务FCFS和短作业优先SJF进程调度算法实验报告_第2页
第2页 / 共10页
先来先服务FCFS和短作业优先SJF进程调度算法实验报告_第3页
第3页 / 共10页
资源描述:

《先来先服务FCFS和短作业优先SJF进程调度算法实验报告》由会员分享,可在线阅读,更多相关《先来先服务FCFS和短作业优先SJF进程调度算法实验报告(10页珍藏版)》请在装配图网上搜索。

1、先来先服务FCFS和短作业优先SJF进程调度算法1、实验目的通过这次实验,加深对进程概念的理解,进一步掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。2、需求分析(1) 输入的形式和输入值的范围输入值:进程个数Num 范围:0Num=100 依次输入Num个进程的到达时间 范围: 依次输入Num个进程的服务时间 范围: 输入要使用的算法(1-FCFS,2-SJF) 范围:1或者2(2) 输出的形式(X表示变量)时刻X:进程X开始运行。 其完成时间:X 周转时间:X 带权周转时间:X(省略(Num-1)个)平均周转时间:X平均带权周转时间:X(3) 程序所能达到的功能输入进程个数Num

2、,每个进程到达时间ArrivalTimei,服务时间ServiceTimei。采用先来先服务FCFS或者短作业优先SJF进程调度算法进行调度,计算每个进程的完成时间、周转时间和带权周转时间,并且统计Num个进程的平均周转时间和平均带权周转时间。3、概要设计说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。4、详细设计5、调试分析 (1)调试过程中遇到的问题以及解决方法,设计与实现的回顾讨论和分析 开始的时候没有判断进程是否到达,导致短进程优先算法运行结果错误,后来加上了判断语句后就解决了改问题。基本完成的设计所要实现的功能,总的来说,FCFS编写容易,

3、SJF需要先找到已经到达的进程,再从已经到达的进程里找到进程服务时间最短的进程,再进行计算。 (2)算法的改进设想 改进:即使用户输入的进程到达时间没有先后顺序也能准确的计算出结果。(就是再加个循环,判断各个进程的到达时间先后,组成一个有序的序列)(3)经验和体会 通过本次实验,深入理解了先来先服务和短进程优先进程调度算法的思想,培养了自己的动手能力,通过实践加深了记忆。6、用户使用说明(1)输入进程个数Num(2)依次输入Num个进程的到达时间(3)依次输入Num个进程的服务时间(4)选择要使用的算法7、测试结果正确一(FCFS):正确一(SJF):正确二(FCFS):正确二(SJF):错误

4、(进程个数错误):错误(选择算法错误):8、附录/*/* 进程调度算法 BY:09软件工程二班 李群 */*#include#includeusing namespace std;static const int Max=100;int ArrivalTimeMax;/到达时间int ServiceTimeMax;/服务时间int FinishTimeMax;/完成时间int WholeTimeMax;/周转时间double WeightWholeTimeMax;/帯权周庄时间double AverageWT_FCFS,AverageWT_SJF; /平均周转时间double AverageW

5、WT_FCFS,AverageWWT_SJF;/平均帯权周转时间int ServiceTime_SJFMax;/在SJF算法中使用到int Num=0;int NowTime=0;/记录当前时间double SumWT=0,SumWWT=0;/SumWT用来计算总的周转时间,SumWWT用来计算总的帯权周转时间int i;int choice;/记录选择/*/ 先到先服务算法/*void FCFS()/找最早到达的。cout-endl;cout-FCFS-endl;cout-endl;for(i=0;iNowTime)/假如进程到达的时间比现在已经运行的时间NowTime大,说明在NowTim

6、e时刻进程未到达NowTime=ArrivalTimei;/把进程的到达时间赋给NowTimeNowTime+=ServiceTimei;/把进程的服务时间加到NowTime上FinishTimei=NowTime;/计算完成时间WholeTimei=FinishTimei-ArrivalTimei;/计算周转时间=完成时间-到达时间WeightWholeTimei=(double)WholeTimei/ServiceTimei;/计算带权周转时间=周转时间/服务时间SumWT+=WholeTimei;/计算总的周转时间SumWWT+=WeightWholeTimei;/计算总的帯权周转时间A

7、verageWT_FCFS=SumWT/Num;/平均周转时间AverageWWT_FCFS=SumWWT/Num;/平均帯权周转时间for(i=0;iNum;i+)/依次输出结果cout时刻FinishTimei-ServiceTimei: 进程i+1开始运行。 其完成时间:FinishTimei 周转时间:WholeTimeisetprecision(3) 帯权周转时间:WeightWholeTimeisetprecision(3)endl;cout平均周转时间:AverageWT_FCFSendl;cout平均帯权周转时间:AverageWWT_FCFSendl;/*/ 短进程优先算法/

8、*void SJF()/找已经到达的且服务时间最短的进程(假定输入的进程是按照到达时间先后输入的)cout-endl;cout-SJF-endl;cout-endl;int min=0;NowTime=ArrivalTime0+ServiceTime0;/计算第一次的NowTImeFinishTime0=NowTime;/计算第一个进程的完成时间ServiceTime_SJF0=1000;/赋初值。cout时刻FinishTime0-ServiceTime0: 进程1开始运行。;int allin=0,j,k;for(i=1;iNum;i+)/进入循环,从第二个到达的进程开始k=1;min=0

9、;if(allin=0)/找到已经到达的进程个数j=0;while(ArrivalTimej=NowTime & j=Num)allin=1;elsej=Num;j=j-1;/j是已经到达的进程数while(kServiceTime_SJFk)/比较,找到服务时间最短的进程min=k;k+;ServiceTime_SJFmin=0;/找完后置零,便于下一次循环时使用NowTime+=ServiceTimemin;/累加当前时间FinishTimemin=NowTime;/完成时间for(i=0;iNum;i+)/计算周转时间,带权周转时间,总的周转时间和总的带权周转时间WholeTimei=F

10、inishTimei-ArrivalTimei;WeightWholeTimei=(double)WholeTimei/ServiceTimei;SumWT+=WholeTimei;SumWWT+=WeightWholeTimei;AverageWT_SJF=SumWT/Num;/平均周转时间AverageWWT_SJF=SumWWT/Num;/平均带权周转时间cout 其完成时间:FinishTime0 周转时间:WholeTime0setprecision(3) 帯权周转时间:WeightWholeTime0setprecision(3)endl;for(i=1;iNum;i+)/输出结果

11、cout时刻FinishTimei-ServiceTimei: 进程i+1开始运行。 其完成时间:FinishTimei 周转时间:WholeTimeisetprecision(3) 帯权周转时间:WeightWholeTimeisetprecision(3)endl;cout平均周转时间:AverageWT_SJFendl;cout平均帯权周转时间:AverageWWT_SJFendl;/*/ 输入函数/*void input()coutNum;while(Num100|Num=0)coutNum;cout-endl;for(i=0;iNum;i+)cout请输入第i+1ArrivalTim

12、ei;cout-endl;for(i=0;iNum;i+)int data=0;cout请输入第i+1data;ServiceTimei=data;ServiceTime_SJFi=data;cout-endl;coutchoice;/*/ 主函数/*void main()cout*endl;cout* 进程调度算法 BY:09软件工程二班 李群 *endl;cout*endl;char flag=y;Loop:NowTime=0;SumWT=0;SumWWT=0;/参数初始化 input();/输入if(choice=1)FCFS();/调用FCFS算法else if(choice=2)SJF();/调用SJF算法else/输入有误,则重新选择while(1) cout您的选择有误!请重新选择!endl;coutchoice;if(choice=1)FCFS();break;else if(choice=2)SJF();break;coutendlflag;if(flag=y | flag=Y)goto Loop;

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!