磁臂调度—最短路径优先算法.pptVIP

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

磁臂调度—最短路径优先算法 福州大学阳光学院 03-3 方镔 2402082 指导老师:吕书龙 摘要: 磁臂调度是指当同时有多个访盘要求时在等待时,对这些要求的顺序的确定安排或调整,旨在减少平均磁盘服务时间.磁臂调度由操作系统中的磁盘设备驱动完成,相应的算法称为磁臂调度算法;磁臂调度算法包括两个方面的考虑:首先要根据这些要求所访问的磁道按照某种标准对这些要求排序,旨在减少寻道时间,称为磁臂调度,仅在移动头磁盘中采用;其次对同一磁道多个要求扇区顺序排列,旨在减少延迟时间,称为扇区排队,仅在无控制器磁道缓冲的系统中采用; 关键词:最短路径优先 , 磁臂调度 设计的背景介绍 1.1 介绍相关概念,相关算法 最短搜索优先调度算法(Shortest-Seek-Time-First,简称SSTF 或SSF)总是在访盘队列中挑选离当前磁头最近的访盘请求作为下一个服务对象. 2.算法介绍:如下面的访盘序列98,183,37,122,14,124,65,67磁头最初所在的磁道号为53按fcfs算法产生的序列为65,67,37,14,98,122,124,183.磁头移动的总距 shift=abs(53-65)+abs(67-65)+abs(37-67)+abs(14-37)+abs(98-14)+abs(122-98)+abs(124-122) +abs(183-124) 设计思路和总体流程图 3.实现环境:DOS/WINDOWS平台,TC2.0/3.0/VC++ LINUX平台,VI/EMACS等编辑器,CC/GCC编译器 2.1 基本思路 首先申请一个和请求访盘序列一样大的指针数组空间currents1用来存放对原始申请访盘序列从小到大排序后的序列.再申请一个比请求访盘序列大1的指针数组空间currents2用来存放最后的扫描的磁道.其中第一个存放的是磁头最初所在的磁道号. 基本思路分支1 根据最初磁头current所在的位置可以分为三种情况: (1)当最初磁头current所在的磁道号大于所有申请访盘的磁道时.这时的路 线就是从currents1的最后一个磁道向低方向扫描到最小的一个磁道就是SSTF算法的路线,并把currents1的数从大到小存放到currents2中,最后输出currents2就是SSTF算法的路线. 磁头移动的总距shift=(track.current-*(currents1+0)) 基本思路分支2 (2)当最初磁头current所在的磁道号小于所有申请访盘的磁道时这时的路线就是从currents1的最前的一个磁道向高方向扫描到最大的一个磁道就是SSTF算法的路线,并把currents1的数从小到大存放到currents2中,最后输出currents2就是SSTF算法的路线. 磁头移动的总距shift=*(currents1+track.num-1)-track.current 基本思路分支3 (1)当最初磁头current所在的磁道号小于申请访盘的最大的磁道号而大于最小的磁道号时,这时就需要从current中找到下一个被扫描的磁道号.找到后并依次放入currents2中,最后输出currents2就是SSTF算法的路线. Shift+=(*(currents2+i+1)-*(currents2+i))(i=0,1,2,3,…track.tracknum) 2.2数据文件格式说明 (1)文件格式如下: tracknum:10 current:90 trackserial:14 183 37 124 65 122 67 98 888 88 其中tracknum:是代表请求访盘的磁道总数 current:是代表当前磁头所在的磁道号; trackserial:申请访盘的磁道序列; 2.3数据结构定义 typedef struct { int tracknum,current;//其中tracknum是代表请求访盘的磁道总数 int *currents;// current:是代表当前磁头所在的磁道号; ? }TRACK; *currents是一个动态的数组空间,其大小为tracknum.用来存放申请访盘的磁道 2.4总体流程图 2.4总体流程图 2 2.5程序模块分割,功能说明,接口函数: 主程序分为6个模块,6种算法,fcfs算法的模块是函数fcfs(),实现了先来先服务算法。Scanl算法的模块是函数scanl(),实现了单向向小算法,scanh算法的模块是函数scanh(),实现了单向向大算法。Cscanl算法的模块是函数cscanl(),实现了循环向小算法。Cscanh算法的模块是函数cscanh(),实现了循环向大算法。Sstf

文档评论(0)

181****2553 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档