磁盘调度62991.docVIP

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
磁盘调度62991

磁盘调度 1设计目的 (1)要求学生设计一个模拟磁盘调度的程序。 (2)理解磁盘调度过程中的三个时间段。 (3)理解磁盘调度的三种算法。 2实验原理 共享设备的典型代表磁盘,磁盘的物理块的地址由柱面号、磁头号、扇区号来指定,完成磁盘某一个物理块的访问要经过三个阶段:寻道时间Ts、旋转延迟Tw和读写时间Trw。 寻道时间Ts是磁头从当前磁道移动到目标磁道所需要的时间;旋转延迟Tw是当磁头停留在目标磁道后,目标物理块从当前位置旋转到磁头位置的时间;读写时间Trw是目标物理块内容与内存中对应交换的时间。磁盘调度的原则是公平和高吞量,衡量指标有访问时间T和平均访问时间Ta: T=Ts+Tw+Trw T=Tsa+Twa+Trwa 寻道时间和旋转延迟为调度算法的主要考虑因素。减少访问时间就是要减少寻道时间和旋转延迟。 3设计要求 (1)设计一个函数完成先来先服务的磁盘调度功能。 (2)设计一个函数完成最短寻道时间优先的磁盘调度功能。 (3)设计一个函数完成电梯算法的磁盘调度功能。 4环境 操作系统WindowsXP,开发工具VC++6.0或者BCB6.0。 5步骤 (1)打开VC,选择菜单项File(New,选择Project选项卡并建立一个名为cidao的win32 console application工程。 (2)在工程中创建原文件cidao.cpp:选择菜单项Project(Add to Project(File,此时将打开一个新窗口,在其中输入想要创建的文件名字,这里是cidao.cpp,其中编辑好原文件并保存。 (3)通过调用菜单项Build(Rebuild all进行编译连接,可以在指定的工程目录下得到debug(cidao.exe程序,可以在控制台进入该debug目录运行程序。 6运行结果分析 FCFS将申请磁盘服务的进程按先后顺序排队,每次调度选择位于队首的进程运行。请求的先后顺序是18,5,23,8,16。可以计算出所有进程运行后磁头一共移动的磁道数:13+18+15+8=54(见图12.12)。 SSTF算法选择离当前磁头位置最近的目标物理块优先访问,以保证最短的寻道时间。以上述进程为例,当选择磁道号后就会出现进行运行后磁头一共移动的磁道数:3+8+2+5=18(见图12.13)。 磁头向一个方向移动的过程中,选择最近的目标物理块访问,直到没有要访问的物理块,然后磁头变换移动方向以同样的方式选择访问磁盘的进程。可以计算进程运行后磁头一共移动的磁道数:2+5+15+3=25(见图12.14)。 7参考源代码 #include”stdio.h” #include”stdlib.h” #include”iostream.h” #define maxsize 100 //先来先服务调度算法 Void FCFS(int array[],int m) { int sum=0,j,I; for(i=0;im ;i++) { coutarray[i]” ”; } for(i=0,j=1;jm;i++,j++) { sum+=abs(array[j]-array[i]); } cout”移动的总道数:”sumendl; } //最短寻道时间优先调度算法 Void ShortPath(int array[],int m) { int temp; int k=1; int now , l ,r; int I , j ,sum=0; for(i=0 ;im; i++) for(j=i+1;jm;j++) { if(array[i]array[j]) { temp=array[i]; array[i]=array[j]; array[j]=temp; } } for(i=0;im;i++) { coutarray[i]””; } cout”请输入当前的磁道号:”; cinnow; if(array[m-1]=now) { for(i=m-1;i=0;i--) coutarray[i]””; sum=now-array[0]; } else if(array[0]=now) { for(i=0;im;i++) coutarray[i]””; sum=array[m-1]-now; } else { while(array[k]now) { k++; } l=k-1; r=k; /*确定当前磁道在已排的序列中的位置,后面的算法都用到了,可以直接复制后再进行少量修改,节省时间。*/ while((l=0)(rm)) { if((now-array[l])=(array[r]-now)) { coutarray[l]””; s

文档评论(0)

jiupshaieuk12 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档