欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    磁盘调度算法实验报告(共14页).doc

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

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

    磁盘调度算法实验报告(共14页).doc

    精选优质文档-倾情为你奉上磁盘调度算法 学生姓名: 学生学号: 专业班级: 指导老师: 2013年6月20日1、实验目的: 通过这次实验,加深对磁盘调度算法的理解,进一步掌握先来先服务FCFS、最短寻道时间优先SSTF、SCAN和循环SCAN算法的实现方法。2、问题描述:设计程序模拟先来先服务FCFS、最短寻道时间优先SSTF、SCAN和循环SCAN算法的工作过程。假设有n个磁道号所组成的磁道访问序列,给定开始磁道号m和磁头移动的方向(正向或者反向),分别利用不同的磁盘调度算法访问磁道序列,给出每一次访问的磁头移动距离,计算每种算法的平均寻道长度。3、需求分析 通过这次实验,加深对磁盘调度算法的理解,进一步掌握先来先服务FCFS、最短寻道时间优先SSTF、SCAN和循环SCAN算法的实现方法。 通过已知开始磁道数、访问磁道总数、磁道号访问序列、访问方向及访问方式得到访问序列及移动距离和平均移动距离!(1) 输入的形式; int TrackOrderMaxNumber;/被访问的磁道号序列 int direction;/寻道方向 int Num;/访问的磁道号数目int start;/(2) 输出的形式; int MoveDistanceMaxNumber=0;/移动距离 double AverageDistance=0;/平均寻道长度 移动的序列! (3) 程序所能达到的功能; 模拟先来先服务FCFS、最短寻道时间优先SSTF、SCAN和循环SCAN算法的工作过程。假设有n个磁道号所组成的磁道访问序列,给定开始磁道号m和磁头移动的方向(正向或者反向),分别利用不同的磁盘调度算法访问磁道序列,给出每一次访问的磁头移动距离,计算每种算法的平均寻道长度。(4) 测试数据,包括正确的输入及其输出结果和含有错误的输入及其输出结果。 开始磁道号:100 磁道号方向:内(0)和外(1) 磁道号数目:9 页面序列:55 58 39 18 90 160 150 38 1844、概要设计说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。 int TrackOrderMaxNumber;/被访问的磁道号序列int MoveDistanceMaxNumber=0;/移动距离double AverageDistance=0;/平均寻道长度int direction;/寻道方向int Num;/访问的磁道号数目 int start;/开始磁道号5、 详细设计实现程序模块的具体算法。6、 调试分析(1) 调试过程中遇到的问题以及解决方法,设计与实现的回顾讨论和分析; 在SCAN_CSAN算法中在访问不同的数组时没有注意到上一个磁道号和要访问的磁道号的大小比较导致结果不对,后来在分析结果中找出原因。(2)算法的性能分析(包括基本操作和其它算法的时间复杂度和空间复杂度的分析)及其改进设想; FCFS:时间复杂度为O(1) 空间复杂度为:O(1) SSTF:时间复杂度为O(n2) 空间复杂度为:O(1) SCAN_CSAN:时间复杂度为O(n2) 空间复杂度为:O(1)7、 用户使用说明 程序的使用说明,列出每一步的操作步骤。(1) 输入开始磁道号(2) 输入访问磁道号总数(3) 输入访问磁道号序列序列(4) 选择算法(5) 选择方向(6) 得出结果8、 测试结果9、 存在问题 在求移动距离时,若调用的库函数求绝对值会更方便!10、 心得体会 首先要明确磁盘调度的原理,画出算法流程图!这样在解决问题时更容易! 11、附录程序源代码:#include <iostream.h>#define MaxNumber 100void FCFS(int TrackOrderMaxNumber,int MoveDistanceMaxNumber,double AverageDistance,int start,int Num)int i,temp=start,sum=0; cout<<"移动顺序 移动距离"<<endl;for(i=0;i<Num;i+)if(TrackOrderi>temp) MoveDistancei=TrackOrderi-temp;else MoveDistancei=temp-TrackOrderi;sum+=MoveDistancei;temp=TrackOrderi; cout<<TrackOrderi<<" "<<MoveDistancei<<endl;cout<<endl;AverageDistance=sum*1.0/Num;cout<<"平均寻道长度:"<<AverageDistance<<endl;void SSTF(int TrackOrderMaxNumber,int MoveDistanceMaxNumber,double AverageDistance,int start,int Num) int temp=start, sum=0,s,count=0,min; int kindMaxNumber=0; cout<<"移动顺序 移动距离"<<endl; while(count<Num) for(int i=0;i<Num;i+) if(kindi=0) if(TrackOrderi>temp) min=TrackOrderi-temp; else min=temp-TrackOrderi;s=i; break; int temp1; for( i=0;i<Num;i+) /找出里此时磁道距离最近的磁道号 if(TrackOrderi>temp) temp1=TrackOrderi-temp;else temp1=temp-TrackOrderi;if(temp1<min && kindi=0)min=temp1;s=i; MoveDistancecount=min; sum+=MoveDistances; temp=TrackOrders; cout<<TrackOrders<<" "<<MoveDistances<<endl; kinds=1; count+; cout<<endl;AverageDistance=sum*1.0/Num;cout<<"平均寻道长度:"<<AverageDistance<<endl;void paixu(int aMaxNumber,int n,int TrackOrderMaxNumber)/从小到大排序 int sym=0; while(sym=0) int kind=0; for(int i=0;i<n-1;i+)int s1=ai;int s2=ai+1; if(TrackOrders1>TrackOrders2) int s=ai+1; ai+1=ai; ai=s; kind=1; if(kind=0)sym=1; void SCAN_CSAN(int TrackOrderMaxNumber,int MoveDistanceMaxNumber,double AverageDistance,int start,int Num,int direction,int chioce)int sum=0;int aMaxNumber,bMaxNumber;int temp=start;int i,num1=0,num2=0; cout<<"移动顺序 移动距离"<<endl;for(i=0;i<Num;i+)/分类if(TrackOrderi> temp)anum1=i;num1+;else bnum2=i;num2+; paixu(a,num1,TrackOrder);/将数组按从小到达排序paixu(b,num2,TrackOrder);/将数组按从小到达排序 int s;if(direction=0) /访问方向向外for(i=0;i<num1;i+)/先访问num1并从前往后访问 s=ai; MoveDistances=TrackOrders-temp; sum+=MoveDistances; temp=TrackOrders; cout<<TrackOrders<<" "<<MoveDistances<<endl;if(chioce=3)/SCAN算法 for(i=num2-1;i>=0;i-) /再访问num2并且从后往前访问 s=bi; MoveDistances=temp-TrackOrders; sum+=MoveDistances; temp=TrackOrders; cout<<TrackOrders<<" "<<MoveDistances<<endl;else /CSAN算法 s=b0; MoveDistances=temp-TrackOrders; sum+=MoveDistances; temp=TrackOrders; cout<<TrackOrders<<" "<<MoveDistances<<endl; for(i=1;i<num2;i+) /再访问num2并且从前往后访问 s=bi; MoveDistances=TrackOrders-temp; sum+=MoveDistances; temp=TrackOrders; cout<<TrackOrders<<" "<<MoveDistances<<endl;else /访问方向向内 for(i=num2-1;i>=0;i-)/先访问num2并且从后往前访问 s=bi; MoveDistances=temp-TrackOrders; sum+=MoveDistances; temp=TrackOrders; cout<<TrackOrders<<" "<<MoveDistances<<endl;if(chioce=3) /SCAN算法 for(i=0;i<num1;i+)/再访问num1并且从前往后访问 s=ai; MoveDistances=TrackOrders-temp; sum+=MoveDistances; temp=TrackOrders; cout<<TrackOrders<<" "<<MoveDistances<<endl;else /CSAN算法 s=anum1-1; MoveDistances=TrackOrders-temp; sum+=MoveDistances; temp=TrackOrders; cout<<TrackOrders<<" "<<MoveDistances<<endl; for(i=num1-2;i>=0;i-)/再访问num1并且从后往前访问 s=ai; MoveDistances=temp-TrackOrders; sum+=MoveDistances; temp=TrackOrders; cout<<TrackOrders<<" "<<MoveDistances<<endl; cout<<endl; AverageDistance=sum*1.0/Num; cout<<"平均寻道长度:"<<AverageDistance<<endl;void main()int TrackOrderMaxNumber;/被访问的磁道号序列int MoveDistanceMaxNumber=0;/移动距离double AverageDistance=0;/平均寻道长度int direction;/寻道方向int Num;/访问的磁道号数目int start;/开始磁道号int kind=0,chioce;cout<<"请输入开始磁道号:"cin>>start;cout<<"请输入访问的磁道号数目:"cin>>Num;cout<<"请输入被访问的磁道号序列:"for(int i=0;i<Num;i+)cin>>TrackOrderi; while(kind=0)cout<<"请选择算法:1-FCFS,2-SSTF,3-SCAN,4-循环SCAN: "cin>>chioce;if(chioce=1) FCFS(TrackOrder,MoveDistance,AverageDistance,start, Num);else if(chioce=2) SSTF(TrackOrder,MoveDistance,AverageDistance,start, Num);else cout<<"请输入磁道号访问方向,0:增加;1:减少: " cin>>direction; SCAN_CSAN(TrackOrder,MoveDistance, AverageDistance,start,Num,direction,chioce);cout<<"*"<<endl;cout<<"请选择继续还是结束,0:继续;1:结束 "cin>>kind;专心-专注-专业

    注意事项

    本文(磁盘调度算法实验报告(共14页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开