Appearance
题目
假设磁头当前位于第 105 道,正在向磁道序号增加的方向移动。现有一个磁道访问请求序列,采用 SCAN 调度得到的磁道访问序列是( )。
错因
B
服务完 110 后突然折返服务 68 / 45 / 35 / 12——但 SCAN 在当前方向(向增)上还有 170 / 180 / 195 没服务,不能中途折返。折返必须等当前方向上"没有更远请求"才发生。
C
向增方向扫完到 195 后反方向时序倒置:从 195 折返应该按从大到小经过 68, 45, 35, 12(按距离 195 的远近 = 磁道号大→小);选 12, 35, 45, 68 是按从小到大顺序——磁头会反复来回了,不符合"折返后顺序扫描"。
D
直接按从小到大全排——这是简单排序,不是 SCAN 调度。SCAN 要从当前位置 105 开始按方向扫描,先增后折返,不会把 12 放在最前面。
总解析
SCAN(电梯算法):磁头沿当前方向走,沿途服务请求;本方向上没有更远请求时折返反方向继续。
当前状态:磁头 = 105,方向 = 增大。
梳理请求序列(从选项推得):
按方向分组:
| 方向 | 请求磁道 | 排序 |
|---|---|---|
| 增方向(≥ 105) | 110, 170, 180, 195 | 升序:110 → 170 → 180 → 195 |
| 减方向(< 105) | 68, 45, 35, 12 | 降序(折返后离磁头近的先服务):68 → 45 → 35 → 12 |
SCAN 路径:
105 → 110 → 170 → 180 → 195 (向增方向,到本方向最远)
↓ 折返
→ 68 → 45 → 35 → 12 (向减方向,按距离近的先)完整服务序列:110, 170, 180, 195, 68, 45, 35, 12
| 阶段 | 磁道 | 距离前一磁道 |
|---|---|---|
| 初始 | 105 | — |
| 增 | 110 | +5 |
| 增 | 170 | +60 |
| 增 | 180 | +10 |
| 增 | 195 | +15(向增方向最远) |
| 折返减 | 68 | -127(一次大跳,到反方向首个请求) |
| 减 | 45 | -23 |
| 减 | 35 | -10 |
| 减 | 12 | -23 |
关键:折返不在边界(这里没扫到磁道 0 或 199 然后折返),SCAN 在 195 折返——因为本方向上没有更远的请求了。这种"扫到最远请求即折返"的变体也常被叫做 LOOK,但 408 通常视为 SCAN 的标准做法。
最终答案是 A。