【软考练习手册001】最短移臂调度算法(SSTF)

3 阅读3分钟

一、 经典题目实战

题目:

在磁盘调度管理中,应先进行移臂调度,再进行旋转调度。假设磁盘移动臂位于 21 号柱面上,进程的请求序列如下表所示。如果采用最短移臂调度算法(SSTF),那么系统的响应序列应为( )。

请求序列柱面号磁头号扇区号
1789
2363
2396
32105
1784
32310
1779
23104
38108

选项:

A. ②⑧③④⑤①⑦⑥⑨

B. ②③⑧④⑥⑨①⑤⑦

C. ①②③④⑤⑥⑦⑧⑨

D. ②⑧③⑤⑦①④⑥


二、 核心解析:SSTF 算法逻辑

1. 算法原则

  • 移臂调度(SSTF) :磁头始终选择距离当前柱面位置最近的下一个柱面。
  • 旋转调度:当磁头到达指定柱面后,由于磁盘在匀速旋转,磁头会按照扇区号从小到大的顺序依次处理请求(因为扇区是排队经过磁头的)。

2. 推导过程

  • 初始位置:柱面 21。
  • 第一站:柱面 23(距离 21 最近,距离为 2)。该柱面有请求 ②(扇区3)、③(扇区6)、⑧(扇区4)。按扇区顺序处理:② → ⑧ → ③
  • 第二站:柱面 17(当前在 23,距离 17 最近,距离为 6)。该柱面有请求 ①(扇区9)、⑤(扇区4)、⑦(扇区9)。按扇区顺序处理:⑤ → ⑦ → ①
  • 第三站:柱面 32(当前在 17,距离 32 最近,距离为 15)。该柱面有请求 ④(扇区5)、⑥(扇区10)。处理顺序:④ → ⑥
  • 第四站:柱面 38。最后处理请求

最终答案:D


三、 深度问答:拆解磁盘物理结构

为了彻底理解这道题,我们需要理解磁盘的“潜规则”。以下是关于磁盘硬件与调度的逻辑整理:

1. 磁盘的“坐标系”:柱面、磁头、扇区

  • 柱面(Cylinder) :磁盘由多层盘片组成,半径相同的磁道叠加在一起形成柱面。它是磁头“横向移动”到达的位置。

  • 磁头(Head) :每个盘面对应一个磁头。它决定了你在哪一层盘片上读写。

  • 扇区(Sector) :磁道上的最小数据单位。磁盘像传送带一样旋转,扇区就是传送带上的格子。

    • 科普:一个扇区通常代表 512 字节4KB 的数据。

2. 调度算法的“潜逻辑”

  • 为什么先移臂,再旋转?

    移动机械臂(寻道)是机械运动,速度最慢;盘片旋转虽然也慢,但比移臂快。所以先定大位置(柱面),再定小位置(扇区)。

  • 为什么扇区按号码排序?

    因为磁盘旋转方向固定,扇区 1 过去后紧跟着就是扇区 2。为了效率,磁头会顺着旋转方向“顺手”把路过的扇区都读了。

  • 如果两个柱面距离一样近怎么办?

    通常会参考磁头的移动方向(电梯算法/SCAN),或者按请求的先后顺序(FCFS)来决定。

3. 物理与逻辑的界限:C 盘、D 盘与真实磁盘

  • 电脑里的磁盘:那是硬件实体(HDD 或 SSD)。

  • C 盘/D 盘:这是逻辑分区。就像把一个大仓库(物理磁盘)用围栏隔成了不同的房间。

  • 重装系统为什么不丢 D 盘数据?

    重装系统通常只清空 C 盘对应的“房间目录”,而磁头在操作时,严格被限制在 C 盘对应的柱面范围内,不会跨界影响到 D 盘。


四、 总结:从机械时代到固态时代

虽然现代电脑多使用 SSD(固态硬盘) ,它内部没有旋转盘片和机械臂,因此像 SSTF 这样的算法在 SSD 上已经不再适用(因为 SSD 访问任何地址的速度都几乎一样快)。

但是,学习 SSTF 依然重要,因为它代表了资源调度优化的核心思想:如何以最低的代价(移动距离最小)完成最多的任务。


博主结语: 每一个比特(Bit)的读取,背后都是一场微秒级的机械与电力的交响乐。