第五章 磁盘移臂调度算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

例 : 假定磁盘共有40个柱面,当前磁头正 在第11道服务,等待服务的进程有6个,它们请 求的柱面分别是:1, 36, 16, 34, 9 和 12 。 按SSTF算法: 算法: 算法 移动为:11 → 12 → 9 → 16 → 1 → 34 → 36 总移动柱面数:1+3+7+15+33+2 = 61
例 : 假定磁盘共有40个柱面,当前磁头正 在第11道服务,等待服务的进程有6个,它们请 求的柱面分别是:1, 36, 16, 34, 9 和 12 。 算法: 按SCAN算法: 算法 移动为:11 → 12 → 16 → 34 → 36 → 9 → 1 总移动柱面数:1+4+18+2+27+8 = 60 尽管此例的平均寻道时间电梯算法优于SSF算法, 但一般而言SSTF算法下平均寻道时间要优于电梯算法。 从效率和公平性考虑,目前较多采用电梯调度算法。
2 FSCAN算法 算法 FSCAN算法实质上是 算法实质上是 算法实质上是N-Step-SCAN算法 算法 的简化。 的简化。它只将磁盘请求访问队列分成两个 子队列。 子队列。 一是当前所有请求磁盘I/O的进程形成的 一是当前所有请求磁盘 的进程形成的 队列,由磁盘调度按SCAN算法进行处理 算法进行处理。 队列,由磁盘调度按SCAN算法进行处理。 另一个队列则是在扫描期间, 另一个队列则是在扫描期间,新出现的 所有请求磁盘I/O进程的队列 进程的队列, 所有请求磁盘 进程的队列,把它们排入另 一个等待处理的请求队列。 一个等待处理的请求队列。 这样, 这样,所有的新请求都将被推迟到下一 次扫描时处理。 次扫描时处理。
先来先服务FCFS 一、先来先服务
(First-Come, First-Served)
这是一种最简单的磁盘调度算法。它根 这是一种最简单的磁盘调度算法。 据进程请求访问磁盘的先后次序进行调度。 据进程请求访问磁盘的先后次序进行调度。 在任何时候,都有许多I/O请求在排队等 在任何时候,都有许多 请求在排队等 每次当调用进程从磁盘读出时, 待。每次当调用进程从磁盘读出时,首先要 把磁头定位到它所要求的正确磁道上。 把磁头定位到它所要求的正确磁道上。移动 磁头所需时间取决于磁头必须移动多远的距 下页表是一作用于等待的I/O进程请求其 离wenku.baidu.com下页表是一作用于等待的 进程请求其 要求读出的磁道的分布情况。 要求读出的磁道的分布情况。
按按此策略完成 这组I/O操作需移动 这组 操作需移动 磁头的总距离为642 磁头的总距离为 磁道。 磁道。
当前磁道=100 移动方向=IN(向里) 进程号 磁道号 移动距离(磁道数) 7 134 34 14 192 58 23 205 13 9 376 171 3 396 20 17 3 393 34 18 15 12 19 1 4 19 0 32 29 10 29 40 11 22 56 16 磁头移动的总距离=642 (磁道)
该策略隐含有一个难以捉摸的问题: 该策略隐含有一个难以捉摸的问题:这 就是有些进程将会“饿死” 就是有些进程将会“饿死”。如假定在进程 9(要求读出磁道 上的信息 的请求得到服 要求读出磁道376上的信息 上的信息)的请求得到服 要求读出磁道 务之前的某段时间,系统又收到一个请求流, 务之前的某段时间,系统又收到一个请求流, 而且这些请求 些请求所要求移动的磁道数均小于 而且这些请求所要求移动的磁道数均小于 376所移动的距离,因而进程 和进程 永远 所移动的距离, 和进程3永远 所移动的距离 因而进程9和进程 得不到服务。 得不到服务。 优点:改善了磁盘平均服务时间; 优点:改善了磁盘平均服务时间; 缺点: 缺点:造成某些访问请求长期等待得不 到服务
5.4.1 磁盘移臂调度 磁盘是对被多个进程共享的设备。当有多个进 磁盘是对被多个进程共享的设备。 程都请求访问磁盘时,应采用一种适当的调度算法, 程都请求访问磁盘时,应采用一种适当的调度算法, 以使各进程对磁盘的平均访问(主要是寻道) 以使各进程对磁盘的平均访问(主要是寻道)时间 最小。由于在访问磁盘的时间中、主要是寻道时间, 最小。由于在访问磁盘的时间中、主要是寻道时间, 因此, 因此,磁盘调度的目标应是使磁盘的平均寻道时间 最少。 最少。 常用的磁盘调度算法有: 常用的磁盘调度算法有: 先来先服务; ⑴ 先来先服务; ⑵ 最短寻道时间优先; 最短寻道时间优先; 扫描算法; ⑶ 扫描算法; ⑷ 循环扫描算法 等.
按按此策略完成这组I/O操作需移动磁头的总距 操作需移动磁头的总距 按按此策略完成这组 离为490磁道。。(如右下图所示) 磁道。。 离为 磁道。。(如右下图所示) 当前磁道=100 移动方向=OUT(向0道) 该方法克服了最短 进程号 磁道号 移动距离(磁道数) 寻道优先的缺点, 寻道优先的缺点,既考 22 56 44 虑了距离, 虑了距离,同时又考虑 29 40 16 了方向。 了方向。 32 29 11 4 19 10 但是,必须说明, 但是,必须说明, 12 19 0 这种修改的SCAN调度 这种修改的 调度 34 18 1 策略并不总是优于纯 17 3 15 7 134 131(移动方向=IN) SSTF调度算法。 调度算法。 调度算法 14 192 58 由于这种算法中磁 23 205 13 头移动的规律颇似电梯 9 376 171 的运行,故又常称为电 的运行,故又常称为电 3 396 20 磁头移动的总距离=490 (磁道) 梯调度算法
当前磁道=100
其中进程是按其发出 进程号 磁道号 移动距离(磁道数) 请求的先后顺序排列的。 请求的先后顺序排列的。 4 19 81 9 376 357 采用的是FCFS调度策略。 调度策略。 采用的是 调度策略 23 205 171 完成这组I/O操作需移动 完成这组 操作需移动 7 134 71 磁道。 磁头的总距离为1604磁道。 磁头的总距离为 磁道 34 18 116 22 56 38 优点:公平、简单, 优点:公平、简单,且 14 192 136 每个进程的请求都能依次 3 396 204 32 29 367 得到处理, 得到处理,不会出现某进 17 3 26 程的请求长期得不到满足 12 19 16 29 40 21 的情况。 的情况。 磁头移动的总距离=1604 (磁道) 缺点: 缺点:与后面讲的几种 调度算法相比,其平均寻道距离较大。 调度算法相比,其平均寻道距离较大。故此算法仅 适用于请求磁盘上的进程数较少的场合。 适用于请求磁盘上的进程数较少的场合。
由此可知总的柱面移动数为61, 明显地优于FCFS。
思考:假设磁盘访问序列: 思考:假设磁盘访问序列: 98, 183, 37, 122, 14, 124, 65, 67 读写头起始位置: 读写头起始位置:53 试安排磁头服务序列,并计算磁头移动总距离(道数 道数) 试安排磁头服务序列,并计算磁头移动总距离 道数
扫描(SCAN)算法(电梯调度算法) 算法( 三、扫描 算法 电梯调度算法) 具体做法: 当设备无访问请求时, 磁头不动; 具体做法 : 当设备无访问请求时 , 磁头不动 ; 当有访问请求时, 磁头按一个方向移动, 当有访问请求时 , 磁头按一个方向移动 , 在移动过 程中对遇到的访问请求进行服务, 程中对遇到的访问请求进行服务 , 然后判断该方向 上是否还有访问请求, 如果有则继续扫描; 上是否还有访问请求 , 如果有则继续扫描 ; 否则改 变移动方向,并为经过的访问请求服务,如此反复. 变移动方向,并为经过的访问请求服务,如此反复.
思考:假设磁盘访问序列: 思考:假设磁盘访问序列: 98, 183, 37, 122, 14, 124, 65, 67 读写头起始位置: 读写头起始位置:53 试安排磁头服务序列,并计算磁头移动总距离(道数 道数) 试安排磁头服务序列,并计算磁头移动总距离 道数
循环扫描算法CSAN(Circular SCAN)(不考) 四、循环扫描算法 (不考) SCAN算法存在这样的问题:当磁头刚从里向外 算法存在这样的问题: 算法存在这样的问题 移动过某一磁道时、恰有进程请求访问此磁道, 移动过某一磁道时、恰有进程请求访问此磁道,这 时该进程必须等待,待磁头从里向外. 时该进程必须等待,待磁头从里向外.然后再从外 向里扫描完所有要访问的磁道后、 向里扫描完所有要访问的磁道后、才处理该进程的 请求,致使该进程的请求被严重地推迟。为了减少 请求,致使该进程的请求被严重地推迟。 这种延迟, 这种延迟, SSTF的另一个修改版本是循环扫描法 的另一个修改版本是循环扫描法 (CSAN)。 该算法规定磁头单向移动。例如,只自里 。 该算法规定磁头单向移动。例如, 向外移动,当磁头移到最外的被访问磁道时, 向外移动,当磁头移到最外的被访问磁道时,磁头 立即返回到最里的欲访磁道, 立即返回到最里的欲访磁道,即将最小磁道号紧接 着最大磁道号构成循环,进行扫描。即一个在磁道0 着最大磁道号构成循环,进行扫描。即一个在磁道 上的I/O请求 将在磁道400上请求之后马上可以得 请求, 上的 请求,将在磁道 上请求之后马上可以得 到满足。 到满足。
例 : 假定磁盘共有40个柱面,当前磁头正 在第11道服务,等待服务的进程有6个,它们请 求的柱面分别是:1, 36, 16, 34, 9 和 12 (以请求 时间先后为序)。 按FCFS算法: 算法: 算法 移动为:11 → 1 → 36 → 16 → 34 → 9 → 12 总移动柱面数:10+35+20+18+25+3 = 111
思考:假设磁盘访问序列: 思考:假设磁盘访问序列: 98, 183, 37, 122, 14, 124, 65, 67 读写头起始位置: 读写头起始位置:53 试安排磁头服务序列,并计算磁头移动总距离(道数 道数) 试安排磁头服务序列,并计算磁头移动总距离 道数
最短寻道时间优先SSTF 二、最短寻道时间优先 (Shortset Seek Time First) 当前磁道=100 第一种改进方法是: 第一种改进方法是: 进程号 磁道号 移动距离(磁道数) 最短寻找时间优先(SSTF) 最短寻找时间优先 7 134 34 14 192 58 的调度方法。采用这种调 的调度方法。 23 205 13 度策略, 度策略,每当启动一个新 22 56 149 29 40 16 操作时, 的磁盘 I/O操作时,首先 操作时 32 29 11 查看这个等待请求的挂起 4 19 10 12 19 0 队列, 队列,找出其中寻找时间 34 18 1 最短的进程。 最短的进程。 17 3 15 按此策略完成这组I/O 按此策略完成这组 9 376 373 3 396 20 操作需移动磁头的总距离 磁头移动的总距离=700 (磁道) 磁道。 如右图所示) 磁道 如右图所示 为700磁道。(如右图所示
CSCAN的优缺点 的优缺点 的讨论作为一个习题留 给读者
调度算法( 五、N-Step-SCAN和FSCAN调度算法(不考) 和 调度算法 不考) 1 N-Step-SCAN算法 算法 几种调度算法中, 在 SSTF、SCAN及CSCAN几种调度算法中, 、 及 几种调度算法中 都可能出现磁臂停留在某处不动的情况。 都可能出现磁臂停留在某处不动的情况。 例如, 例如,有一个或几个进程对某一磁道有着较高 的访问频率, 的访问频率,即他们反复请求对某一磁道进行 I/O, , 从而垄断了整个磁盘设备。我们把这一现象称为磁 从而垄断了整个磁盘设备。我们把这一现象称为磁 臂粘着(Armstickiness)。在高密度盘上更容易出现此 臂粘着 。 情况。 情况。 N-Step-SCAN是将磁盘请求队列分成若干个 是将磁盘请求队列分成若干个 长度为N的子队列 的子队列, 长度为 的子队列,对一个队列处理完后又处理另一 个队列,这样可避免出现粘着现象。 个队列,这样可避免出现粘着现象。 很大时, 的性能, 当N很大时,会使 很大时 会使N-Step-SCAN的性能,接近于 的性能 SCAN算法的性能;当 N=1时, N-Step-SCAN算法 算法的性能; 算法的性能 时 算法 退化为FCFS算法。 算法。 退化为 算法
相关文档
最新文档