ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:38.89KB ,
资源ID:25100502      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25100502.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验一先来先服务FCFS和短作业优先SJF进程调度算法.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验一先来先服务FCFS和短作业优先SJF进程调度算法.docx

1、实验一先来先服务FCFS和短作业优先SJF进程调度算法实验一 先来先服务 FCFS 和短作业优先 SJF 进程调度算法 1、需求分析(1)输入的形式和输入值的范围 首先输入进程个数,然后输入进程到达的时间和服务时 间,输入完成,程序显示 FCFS和 SJF 算法的结果。(2)输出的形式 程序的输出根据用户输入的到达时间以及服务时间, 通过相应 的计算输出其各自的完成时间,周转时间,带全周转时间以及平 均值,程序会先输出 FCFS的结果,然后输入 SJF的结果。3) 程序所能达到的功能1)输入进程个数 n;每个进程的到达时间 T1, ,Tn 和服务时间 S1, ,nS。2)采用先来先服务 FCF

2、S 和短作业优先 SJF分别调度进程运行, 计算每个进程的周转时间和带权周转时间, 并且计算所有进程的平均 周转时间和带权平均周转时间;3)输出:输出计算出来的每个进程的周转时间、带权周转时间、 所有进程的平均周转时间以及带权平均周转时间。(4) 测试数据,包括正确的输入及其输出结果和含有错误的输入及 其输出结果正确输入的结果错误输入的结果2、概要设计抽象数据类型的定义:static int MaxNum=100;/ 进程的最大值int ArrivalTime100;/ 到达时间int ServiceTime100;/ 服务时间int FinishTime100;/ 完成时间int Whole

3、Time100;/ 周转时间double WeightWholeTime100;/ 带权周转时间double AverageWT_FCFS,AverageWT_SJF; / 平均周转时间double AverageWWT_FCFS,AverageWWT_SJF平;/ 均带权周转时间 int Num=0;int NowTime=0;/ 记录当前时间double SumWT=0,SumWWT=0;/SumW用T来计算总的周转时间, SumWW用T来计算总的帯权周转时间int i;int choice;/ 记录选择 主程序的流程以及各程序模块之间的层次 ( 调用)关系:定义和初始化程序的数据提示用户

4、输入各数据相应的值进行 FCFS 算法进行 SJF 算法输出运算的结果3、详细设计首先定义一个临时数组 ,把到达时间的数组赋值给它, 然后 对其进行排序, 同时将原来到达时间的数组的序号给数组。 从而 再用一个 for 循环,便可得到各个进程的完成时间,周转时间, 和加权周转时间 FinishTimenum1k=ServiceTimenum1k+FinishTimenum1k-1;WholeTimenum1k=ServiceTimenum1k+FinishTimenum1k- 1-temk;WeightWholeTimenum1k=( double)WholeTimenum1k/Servic

5、eTimenum1k;从而得到平均周转时间和平均带权周转时间(2)SJF 算法 该算法默认输入的进程按照到达时间先后输入先将第一个到达 的进程在它的服务时间里运行, 将此进程运行完成时已经到达的 进程进行排序,选择时间最短的那一个运行,然后依次类推,如 果一个服务运行完没有其他的服务到达, 则等到其他服务到达时 再运行,最后得到其完成时间, 这样也就能够求出其他的所求量 。4、调试分析(1) 调试过程中遇到的问题以及解决方法, 设计与实现的回顾 讨论和分析一开始没有对程序是否到达进行判断,导致了算法的错 误,后来调试中发现及时改正解决了这个问题。(2) 算法的性能分析 ( 包括基本操作和其它算

6、法的时间复杂度 和空间复杂度的分析 ) 及其改进设想FCFS算法比较有利于长作业,而不利于短作业; SJF 算 法能有效的降低作业的平均等待时间, 提高系统吞吐量, 但是该算法 对长作业不利,没有考虑作业的紧迫程度且该算法不一定能真正做到 短作业优先调度。改进:能够生成一个直观的过程的界面。(3)经验和体会 通过本次实验,深入理解了 FCFS和 SJF 算法的思想, 培养了自己的动手能力,通过实践加深了记忆。5、用户使用说明1)输入进程个数 n2)输入每个进程的到达时间3)输入每个进程的服务时间6、测试结果7、附录/ zy1_my.cpp : 定义控制台应用程序的入口点。/#include u

7、sing namespace std;int main()void FCFS(int *ArrivalTime,int *ServiceTime,int num); void SJF(int *ArrivalTime,int *ServiceTime,int num); cout 请输入进程的个数 num;int *ArrivalTime=new intnum;int *ServiceTime=new intnum;cout 请输入到达时间 endl; for(i=0;iArrivalTimei;cout 请输入服务时间 endl;for(i=0;iServiceTimei;coutFCFS

8、算法 ;FCFS(ArrivalTime,ServiceTime,num); coutendl;coutendl;coutSJF 算法 ;SJF(ArrivalTime,ServiceTime,num);return 0;void FCFS(int *ArrivalTime,int *ServiceTime,int num)int i=0;int j=0;int *FinishTime=new intnum;int *WholeTime=new intnum;double *WeightWholeTime=new doublenum; double AverageWholeTime=0;dou

9、ble AverageWeightWholeTime=0;int lastFinishTime=0;for(i=0;ilastFinishTime) FinishTimei=ArrivalTimei+ServiceTimei;elseFinishTimei=lastFinishTime+ServiceTimei; lastFinishTime=FinishTimei; WholeTimei=FinishTimei-ArrivalTimei;WeightWholeTimei=WholeTimei/(double)ServiceTimei;cout 完成时间如下: endl;for(i=0;inu

10、m;i+) coutFinishTimei ;coutendl;cout 周转时间如下: endl;int allWholeTime=0;for(i=0;inum;i+) allWholeTime=allWholeTime+WholeTimei; coutWholeTimei ;coutendl;AverageWholeTime=allWholeTime/(double)num;cout 平均周转时间如下: AverageWholeTimeendl;cout 带权周转时间如下: endl;double allWeightWholeTime=0;for(i=0;inum;i+) allWeigh

11、tWholeTime=allWeightWholeTime+WeightWholeTimei; coutWeightWholeTimei ;coutendl;AverageWeightWholeTime=allWeightWholeTime/num;cout 平均带权周转时间如下: AverageWeightWholeTimeendl; coutendl;void SJF(int *ArrivalTime,int *ServiceTime,int num)int i=0;int j=0;bool *done=new boolnum;int *copyArrivalTime=new intnum

12、;for(i=0;inum;i+)copyArrivalTimei=ArrivalTimei;int *copyServiceTime=new intnum;for(i=0;inum;i+)copyServiceTimei=ServiceTimei;for(i=0;inum;i+)donei=false;int *FinishTime=new intnum;int *copyFinishTime=new intnum;int *WholeTime=new intnum;double *WeightWholeTime=new doublenum;double AverageWholeTime=0

13、;double AverageWeightWholeTime=0;int lastFinishTime=0;int tempTime=0;int tempService=0;coutendl;for(i=0;inum;i+)if(i!=0)for(j=i;jnum;j+) if(copyServiceTimejcopyServiceTimei) if(copyArrivalTimejlastFinishTime) tempTime=copyArrivalTimei; tempService=copyServiceTimei; copyArrivalTimei=copyArrivalTimej;

14、 copyServiceTimei=copyServiceTimej; copyArrivalTimej=tempTime; copyServiceTimej=tempService;copyFinishTimei=lastFinishTime+copyServiceTimei; lastFinishTime=copyFinishTimei;coutendl;for(i=0;inum;i+)for(j=0;jnum;j+)if(ArrivalTimei=copyArrivalTimej)FinishTimei=copyFinishTimej;WholeTimei=FinishTimei-Arr

15、ivalTimei;WeightWholeTimei=WholeTimei/(double)ServiceTimei;cout 完成时间如下: endl;for(i=0;inum;i+)coutFinishTimei ;coutendl;cout 周转时间如下: endl;int allWholeTime=0;for(i=0;inum;i+)allWholeTime=allWholeTime+WholeTimei;coutWholeTimei ;coutendl;AverageWholeTime=allWholeTime/(double)num;cout 平均周转时间如下: AverageWholeTimeendl;cout 带权周转时间如下: endl;double allWeightWholeTime=0; for(i=0;inum;i+)allWeightWholeTime=allWeightWholeTime+WeightWholeTimei; coutWeightWholeTimei ;coutendl;AverageWeightWholeTime=allWeightWholeTime/num;cout 平均带权周转时间如下: AverageWeightWholeTimeendl; coutendl;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1