操作系统-磁盘-磁盘的调度算法

时间:2024-11-12 21:29:41

磁盘时间

在这里插入图片描述
寻找时间,延迟时间,传输时间。所能影响的只有寻道时间

算法

磁盘调度算法用于决定磁盘读写请求的顺序,以提高磁盘访问效率,减少平均寻道时间和响应时间。下面介绍几种常见的磁盘调度算法及其特点:

先来先服务(FCFS - First-Come, First-Served)

  • 算法描述:按照请求到达的顺序进行调度,不做任何优化。
  • 优点:实现简单,公平地处理所有请求。
  • 缺点:可能导致“饥饿”或长时间延迟,尤其是在请求分布不均时,容易出现长寻道时间。

最短寻道时间优先(SSTF - Shortest Seek Time First)

  • 算法描述:选择与当前磁头位置距离最近的请求进行调度。谁离磁道近就选择谁。
  • 优点:减少了平均寻道时间,效率比FCFS高。
  • 缺点:可能出现“饥饿”现象,远端请求可能一直得不到处理,因为短距离请求持续加入。

扫描算法(SCAN,也称电梯算法,有点像雨刷)

  • 算法描述:磁头在磁盘上来回移动,处理其路径上所有的请求。每当到达一个边界时,磁头改变方向。
  • 优点:较均衡地处理请求,减少了磁头的频繁移动,避免了SSTF中的“饥饿”现象。
  • 缺点:边缘的请求可能会等待较长时间。

LOOK算法

  • 算法描述:与SCAN类似,但LOOK算法不会将磁头移动到最远端的边界,而是根据请求位置,在有请求的最后一个位置掉头。
  • 优点:减少了不必要的磁头移动,进一步提高了效率。
  • 缺点:在极端情况下可能存在一定的不公平性。

循环扫描算法(C-SCAN - Circular SCAN)

  • 算法描述:磁头从一端开始移动到另一端,处理路径上的请求。当磁头到达一端后,立即返回另一端并继续处理,而不在返回路径上处理请求。
  • 优点:提供更均衡的响应时间,对磁盘中心和边缘的请求处理较公平。
  • 缺点:可能增加回程路径上的非工作时间,但整体公平性更好。

循环LOOK算法(C-LOOK)

  • 算法描述:类似C-SCAN,磁头只在有请求的位置掉头,而不是移动到磁盘的最远端。磁头到达一端后直接返回起始端继续处理。
  • 优点:减少了磁头回程路径上的非工作时间,同时保持了C-SCAN的公平性。
  • 缺点:仍然有一定的空闲时间在返回路径上。

算法对比

调度算法 优点 缺点 适用场景
FCFS 实现简单,公平 可能出现长时间延迟和不均衡 小型系统或低负载场景
SSTF 平均寻道时间短 可能产生“饥饿”问题 高效读写,但请求频繁
SCAN 相对公平,减少了频繁移动 边缘请求等待时间较长 负载较重的系统
C-SCAN 更加公平,对各个请求响应时间一致 增加了磁头的回程非工作时间 大型系统或需要公平性
LOOK 减少不必要的移动 仍有边缘请求可能延迟 需要灵活调度的系统
C-LOOK 保持公平性,减少回程非工作时间 实现复杂性稍高 公平性优先的系统
N-Step SCAN 高负载下提供稳定响应时间 实现复杂,管理较难 负载波动较大的系统
FSCAN 提供稳定的调度,不受动态请求影响 实现复杂,内存需求高 高负载、高并发场景