Appearance
题目
系统总是访问磁盘的某个磁道而不响应对其他磁道的访问请求,这种现象称为磁臂黏着。下列磁盘调度算法中,不会导致磁臂粘着的是( )。
错因
B
只看了"最短寻道"的高效面,没意识到它的"局部贪心"会出大问题。如果某个进程持续往同一个磁道发请求(比如反复写一个热点文件),SSTF 每次都会优先选这个最近的请求——磁头就粘在这磁道附近来回服务,远端的请求一直得不到机会,正是磁臂粘着的典型成因。
C
被 SCAN"会扫到端点"这个直觉骗了,以为只要不停地走就不会卡。但 SCAN 在到达一端之前会响应沿途新到来的请求——如果某个磁道在磁头当前方向上持续被请求,磁头就会"被拉住"在这一段附近反复服务,靠近端点的远端请求迟迟不能到。换句话说,SCAN 也可能粘着,只是比 SSTF 缓和一些。
D
CSCAN 比 SCAN 更公平(单方向扫描完再快速回到起点),看起来"不会卡",于是选了 D。但 CSCAN 同样不能拒绝沿途新请求——单方向扫描过程中如果某磁道持续来请求,磁头依旧会反复留在那一带服务,只不过到达端点后会跳到另一头重启。粘着的本质("贪心地优先就近请求")没消除。
总解析
磁臂粘着的根本原因:调度算法让磁头位置/方向决定下一个服务谁——只要有进程持续往某个磁道发请求,磁头就会被它吸住。
| 算法 | 选择规则 | 是否依赖磁头当前位置 | 会粘着? |
|---|---|---|---|
| FCFS | 按请求到达顺序服务 | 不依赖 | 不会 ✓ |
| SSTF | 选离磁头最近的请求 | 依赖 | 会(最严重) |
| SCAN | 沿当前方向就近选 | 依赖 | 会 |
| CSCAN | 单方向扫描就近选,到端点折回起点 | 依赖 | 会 |
判定原则:算法越"贪近",粘着越严重;FCFS 完全按时间排队、不看磁头位置,因此不可能粘着。
FCFS 的代价是寻道时间长(请求在盘面上跳来跳去),但公平性给到了——每个请求都按到达顺序拿到服务,热点磁道再多请求也得排队。
最终答案是 A。