磁盘调度算法
磁盘调度由操作系统完成以调度到达磁盘的 I/O 请求。磁盘调度也称为 I/O 调度。
磁盘调度很重要,因为:
- 多个 I/O 请求可能由不同的进程到达,并且磁盘控制器一次只能处理一个 I/O 请求。因此其他 I/O 请求需要在等待队列中等待并需要被调度。
- 两个或多个请求可能彼此远离,因此可能导致更大的磁盘臂移动。
- 硬盘驱动器是计算机系统中最慢的部分之一,因此需要以有效的方式进行访问。
有许多磁盘调度算法,但在讨论它们之前,让我们快速浏览一些重要术语:
- 寻道时间:寻道时间是将磁盘臂定位到要读取或写入数据的指定磁道所花费的时间。所以给出最小平均寻道时间的磁盘调度算法更好。
- 旋转延迟:旋转延迟是磁盘的所需扇区旋转到一个位置以便它可以访问读/写磁头所花费的时间。因此,提供最小旋转延迟的磁盘调度算法更好。
- 传输时间:传输时间是传输数据的时间。这取决于磁盘的旋转速度和要传输的字节数。
- 磁盘访问时间:磁盘访问时间为:
Disk Access Time = Seek Time +
Rotational Latency +
Transfer Time
- 磁盘响应时间:响应时间是请求等待执行其 I/O 操作所花费的平均时间。平均响应时间是所有请求的响应时间。方差响应时间是衡量单个请求相对于平均响应时间的服务方式。所以给出最小方差响应时间的磁盘调度算法更好。
磁盘调度算法
- FCFS: FCFS 是所有磁盘调度算法中最简单的。在 FCFS 中,请求按照它们到达磁盘队列的顺序进行处理。让我们通过一个例子来理解这一点。
例子:
假设请求的顺序是- (82,170,43,140,24,16,190)
读写头当前位置为:50
所以,总寻道时间:
=(82-50)+(170-82)+(170-43)+(140-43)+(140-24)+(24-16)+(190-16)
=642
好处:
- 每个请求都有公平的机会
- 无无限期延期
缺点:
- 不尝试优化寻道时间
- 可能无法提供最好的服务
- SSTF:在SSTF(Shortest Seek Time First)中,具有最短寻道时间的请求首先被执行。因此,每个请求的寻道时间在队列中预先计算,然后根据计算出的寻道时间进行调度。因此,磁盘臂附近的请求将首先执行。 SSTF 无疑是对 FCFS 的改进,因为它减少了平均响应时间并增加了系统的吞吐量。让我们通过一个例子来理解这一点。
例子:
假设请求的顺序是- (82,170,43,140,24,16,190)
读写头当前位置为:50所以,总寻道时间:
=(50-43)+(43-24)+(24-16)+(82-16)+(140-82)+(170-40)+(190-170)
=208
好处:
- 平均响应时间减少
- 吞吐量增加
缺点:
- 提前计算寻道时间的开销
- 如果请求的寻道时间比传入的请求长,则可能导致请求饥饿
- 响应时间差异很大,因为 SSTF 只支持某些请求
- SCAN:在 SCAN 算法中,磁盘臂移动到特定方向并为进入其路径的请求提供服务,到达磁盘末端后,它反转其方向并再次为到达其路径的请求提供服务。因此,该算法作为电梯工作,因此也称为电梯算法。结果,中端的请求得到更多服务,到达磁盘臂后面的请求将不得不等待。
例子:
假设要处理的请求是-82,170,43,140,24,16,190。而读/写臂在50,也给出了磁盘臂应该“向更大的值”移动。
因此,寻道时间计算如下:
=(199-50)+(199-16)
=332
好处:
- 高吞吐量
- 响应时间差异小
- 平均响应时间
缺点:
- 磁盘臂刚访问过的位置请求的等待时间长
- CSCAN :在 SCAN 算法中,磁盘臂在反转其方向后再次扫描已扫描的路径。因此,可能有太多请求在另一端等待,或者在扫描区域等待的请求可能为零或很少。
在 CSCAN算法中避免了这些情况,其中磁盘臂而不是反转其方向,而是转到磁盘的另一端并从那里开始为请求提供服务。因此,磁盘臂以圆形方式移动,该算法也类似于 SCAN 算法,因此称为 C-SCAN(圆形 SCAN)。
例子:
假设要处理的请求是-82,170,43,140,24,16,190。而读/写臂在50,也给出了磁盘臂应该“向更大的值”移动。
寻道时间计算如下:
=(199-50)+(199-0)+(43-0)
=391
好处:
- 与 SCAN 相比,提供更统一的等待时间
- LOOK:它类似于SCAN磁盘调度算法,不同之处在于磁盘臂尽管走到磁盘的末尾,但只去到磁头前面的最后一个要服务的请求,然后从那里反转它的方向只要。因此,它可以防止由于不必要的遍历到磁盘末尾而发生的额外延迟。
例子:
假设要处理的请求是-82,170,43,140,24,16,190。而读/写臂在50,也给出了磁盘臂应该“向更大的值”移动。
因此,寻道时间计算如下:
=(190-50)+(190-16)
=314
- CLOOK:由于LOOK与SCAN算法相似,因此CLOOK与CSCAN磁盘调度算法相似。在 CLOOK 中,磁盘臂尽管走到了最后,但只去到磁头前面要服务的最后一个请求,然后从那里去到另一端的最后一个请求。因此,它还可以防止由于不必要的遍历磁盘末尾而产生的额外延迟。
例子:
假设要处理的请求是-82,170,43,140,24,16,190。并且读/写臂在50,并且还给出了磁盘臂应该“向更大的值”移动
因此,寻道时间计算如下:
=(190-50)+(190-16)+(43-16)
=341 - RSS – 它代表随机调度,就像它的名字一样,它就是自然。它用于调度涉及随机属性(例如随机处理时间、随机到期日期、随机权重和随机机器故障)的情况,该算法非常适合。这就是为什么它通常用于分析和模拟。
- LIFO – 在 LIFO(后进先出)算法中,最新的作业在现有作业之前得到服务,即按照请求得到服务的顺序,最新或最后输入的作业首先得到服务,然后以相同的顺序处理其余的作业。
好处
- 最大限度地提高局部性和资源利用率
缺点
- 对其他请求似乎有点不公平,如果新请求不断传入,则会导致旧请求和现有请求挨饿。
例子
假设请求的顺序是- (82,170,43,142,24,16,190)
读写头当前位置为:50 - N-STEP SCAN – 也称为 N-STEP LOOK 算法。在此为 N 个请求创建一个缓冲区。属于缓冲区的所有请求都将一次性得到服务。此外,一旦缓冲区已满,就不会在此缓冲区中保留新请求,而是将其发送到另一个缓冲区。现在,当这 N 个请求得到服务时,又到了另一个前 N 个请求的时候了,这样所有的 get 请求都会得到有保证的服务
好处
- 它完全消除了请求的饥饿
- FSCAN – 该算法使用两个子队列。在扫描过程中,第一个队列中的所有请求都得到服务,新传入的请求被添加到第二个队列中。所有新请求都保持暂停,直到第一个队列中的现有请求得到服务。
好处- FSCAN 与 N-Step-SCAN 一起防止“臂粘性”(I/O 调度中的现象,其中调度算法继续为当前扇区或附近的请求提供服务,从而防止任何搜索)
每个算法都有其独特的方式。整体性能取决于请求的数量和类型。
注:平均旋转延迟一般取1/2(旋转延迟)。
锻炼
1)假设一个磁盘有 201 个柱面,编号从 0 到 200。有时磁盘臂在柱面 100,并且有一个对柱面 30、85、90、100、105、110、135 的磁盘访问请求队列和 145. 如果最短搜索时间优先 (SSTF) 用于调度磁盘访问,则在服务了 ____________ 个请求后,将服务于柱面 90 的请求。 (GATE CS 2014
(一) 1
(乙) 2
(三) 3
(四) 4
请参阅此解决方案。
2)考虑一个能够一次加载和执行单个顺序用户进程的操作系统。使用的磁盘磁头调度算法是先来先服务 (FCFS)。如果 FCFS 被最短寻道时间优先 (SSTF) 取代,供应商声称可以提供 50% 更好的基准测试结果,那么用户程序的 I/O 性能的预期改进是什么? (GATE CS 2004)
(一) 50%
(B) 40%
(C) 25%
(四) 0%
请参阅此解决方案。
3)假设对于一个有 100 个磁道的磁盘,给定以下磁盘请求序列(磁道号):45, 20, 90, 10, 50, 60, 80, 25, 70。假设 R/W 磁头的初始位置在第 50 条轨道上。与 SCAN(电梯)算法相比,当使用最短寻道时间优先 (SSTF) 算法时,R/W 磁头将经过的额外距离(假设 SCAN 算法在开始执行时向 100 移动) 是 _________ 曲目
(一) 8
(乙) 9
(三) 10
(四) 11
请参阅此解决方案。
4)考虑一个典型的磁盘,它以每分钟 15000 转 (RPM) 的速度旋转,并且传输速率为 50 × 10^6 字节/秒。如果磁盘的平均寻道时间是平均旋转延迟的两倍,控制器的传输时间是磁盘传输时间的 10 倍,则读取或写入磁盘的 512 字节扇区的平均时间(以毫秒为单位)为 _____________
请参阅此解决方案。