首页/操作系统/05-io/磁盘调度算法 🔗 在 Obsidian 中打开
操作系统 · 05-io

磁盘调度算法

重要度 ⭐⭐ 操作系统/IO管理IO管理磁盘调度磁盘寻道408
速查
磁盘访问时间 $T_a = T_s + T_r + T_{\text{传输}}$,寻道时间最长SSTF 平均寻道短但会饥饿,SCAN(电梯)是最常用折中,C-SCAN 更公平。

速查

项目
核心概念$$T_a = T_s + T_r + T_{\text{传输}}$$
关键公式/性质磁道(Track):盘片上的同心圆
考试频率⭐⭐⭐⭐

核心概念

1. 磁盘结构

  • 磁道(Track):盘片上的同心圆
  • 扇区(Sector):磁道被分割成的弧段,是最小存取单位
  • 柱面(Cylinder):所有盘片上相同编号的磁道
  • 磁头(Head):读写数据的部件

2. 磁盘访问时间组成

$$T_a = T_s + T_r + T_{\text{传输}}$$

组成部分含义典型值
寻道时间 $T_s$磁头移动到目标磁道的时间最长,几毫秒到十几毫秒
旋转延迟 $T_r$等待目标扇区转到磁头下方的时间平均 = 旋转半圈的时间
传输时间读写数据的时间通常很短

旋转延迟计算:$T_r = \dfrac{1}{2} \times \dfrac{60}{rpm} \text{ (秒)}$。

3. 六种磁盘调度算法

  1. FCFS(先来先服务):按请求到达顺序服务。优点:公平、无饥饿;缺点:寻道时间长、效率低。
  2. SSTF(最短寻道时间优先):选离当前磁头最近的请求。优点:平均寻道时间短;缺点:可能饥饿
  3. SCAN(电梯算法):磁头单方向移动到尽头再反向。优点:寻道时间较好、无饥饿;缺点:两端磁道等待不均。
  4. C-SCAN(循环扫描):单方向移动,到头直接回起点再同方向。优点:各磁道等待更均匀;缺点:回程不服务。
  5. LOOK(改进 SCAN):该方向无请求就反向,不到尽头。
  6. C-LOOK(改进 C-SCAN):回程直接跳到最远有请求的磁道。

4. 算法对比

算法寻道时间公平性饥饿特点
FCFS公平简单但效率低
SSTF不公平可能饿死远端请求
SCAN较短较公平电梯算法,两端不均
C-SCAN较短公平回程不服务,等待更均匀
LOOK较短较公平SCAN 的优化版
C-LOOK较短公平C-SCAN 的优化版

5. 寻道时间计算示例

假设当前磁头在 53 号磁道,请求序列:98, 183, 37, 122, 14, 124, 65, 67。

  • FCFS:53→98→183→37→122→14→124→65→67,总移动 $= 45+85+146+85+108+110+59+2 = $ 640
  • SSTF:53→65→67→37→14→98→122→124→183,总移动 $= 12+2+30+23+84+24+2+59 = $ 236
  • SCAN(向 0 方向):53→37→14→0→65→67→98→122→124→183,总移动 $= 16+23+14+65+2+31+24+2+59 = $ 236

关键定义表格

术语定义
寻道时间磁头移动到目标磁道所需的时间
旋转延迟等待目标扇区旋转到磁头下的时间
传输时间读写数据实际花费的时间
磁道盘片上的同心圆环
扇区磁道上的弧段,是最小存取单位
柱面所有盘片上相同编号的磁道的集合

常见考法

  1. 计算题:给定请求序列,计算各算法的总寻道距离
  2. 选择题:各算法的特点和适用场景
  3. 选择题:哪种算法可能产生饥饿
  4. 计算题:计算旋转延迟
  5. 综合题:对比不同算法的性能

易错点

注意
  1. SCAN 和 C-SCAN 的区别:SCAN 来回扫描,C-SCAN 单方向扫描后跳回起点
  2. SSTF 会产生饥饿,这是其最大缺点
  3. 计算寻道距离时,起始磁道不算移动距离
  4. LOOK/LOOK 是 SCAN/C-SCAN 的优化,不需要移动到磁盘尽头
  5. 旋转延迟 = 半圈的时间,不是一圈

核心结论

必背
  1. 寻道时间是磁盘访问时间的主要部分
  2. SSTF 寻道时间最短但可能饥饿
  3. SCAN(电梯算法)是最常用的折中方案
  4. C-SCAN 比 SCAN 更公平,但回程浪费

记忆卡片

磁盘访问时间由哪三部分组成?
寻道时间(磁头移动)、旋转延迟(等待扇区转到磁头下)、传输时间。寻道时间最长。
SSTF 算法的最大问题?
可能产生饥饿——离磁头远的请求可能一直得不到服务。
SCAN 和 C-SCAN 的区别?
SCAN 来回扫描、到端反向;C-SCAN 单方向扫描到端跳回起点再同方向。C-SCAN 各磁道等待更均匀。
旋转延迟如何计算?
$= \frac{1}{2}\times 60/rpm$(秒),即半圈的时间。
LOOK 和 SCAN 的区别?
LOOK 是 SCAN 的优化——该方向没请求就立即反向,不需移到尽头。

交互动画 · 寻道轨迹

磁头 53 | 请求 98 183 37 122 14 124 65 67
点击算法查看磁头移动轨迹与总寻道距离
起始磁道不计入移动距离

相关知识点

device-management filesystem-impl-and-disk-org filesystem-implementation disk-storage

↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。