磁盘时间
寻找时间,延迟时间,传输时间。所能影响的只有寻道时间
算法
磁盘调度算法用于决定磁盘读写请求的顺序,以提高磁盘访问效率,减少平均寻道时间和响应时间。下面介绍几种常见的磁盘调度算法及其特点:
先来先服务(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 | 提供稳定的调度,不受动态请求影响 | 实现复杂,内存需求高 | 高负载、高并发场景 |