6.8 磁盘存储器的性能和调度

L40

学习目标

磁盘访问时间由寻道、旋转延迟和传输时间组成,调度算法优化寻道顺序。

  • 磁盘访问时间:由寻道时间(磁头移到磁道)、旋转延迟时间(等待扇区到达)和传输时间组成。
  • 先来先服务(FCFS):按请求到达顺序服务,简单但寻道距离长。
  • 最短寻道时间优先(SSTF):选择距当前磁头最近的请求,可能饥饿远处请求。
  • 扫描算法(SCAN/电梯算法):磁头单向移动并服务沿途请求,到端点后反向;CSCAN循环扫描。

原理 · 深入理解

6.8 磁盘存储器的性能和调度

本节概览:先建立「磁盘存储器的性能和调度」的框架,再依次展开下列小节。

  1. 磁盘性能简述
  2. 早期的磁盘调度算法
  3. 基于扫描的磁盘调度算法

6.8.1 磁盘性能简述

磁盘设备可包括一个或多个物理盘片,每个磁盘片分一个或两个存储面,每个盘面上有若干个磁道,磁道之间留有必要的间隙。为使处理简单,每条磁道上可存储相同数目的二进制位。

图6-28 磁盘的结构和布局 柱面 磁道 扇区
图6-28 磁盘的结构和布局

磁盘访问时间由寻道时间、旋转延迟时间和传输时间组成。

图6-29 磁盘的格式化 低级格式化 分区 逻辑格式化
图6-29 磁盘的格式化

磁盘可从不同角度进行分类,最常见的有硬盘和软盘、单片盘和多片盘、固定头磁盘和活动头(移动头)磁盘等。磁盘设备工作时以恒定速率旋转,为读或写,磁头必须能移动到所指定的磁道上,并等待所指定的扇区的开始位置旋转到磁头下,然后再开始读或写数据。

  1. 固定头磁盘:每条磁道上都有一读/写磁头,所有磁头都被装在一刚性磁臂中
  2. 移动头磁盘:每一个盘面仅配有一个磁头,也被装入磁臂中

磁盘访问时间:由寻道时间、旋转延迟时间和传输时间三部分组成。寻道时间是把磁头移到指定磁道所需时间;旋转延迟时间是磁头到达磁道后等待指定扇区转到磁头下所需时间;传输时间是读写数据本身所需时间。

6.8.2 早期的磁盘调度算法

先来先服务(FCFS)是最简单的磁盘调度算法,根据进程请求访问磁盘的先后次序进行调度。优点是公平、简单,且每个进程的请求都能依次得到处理。

最短寻道时间优先(SSTF)算法选择这样的进程:其要求访问的磁道与当前磁头所在磁道距离最近,以使每次寻道时间最短,但这种算法不能保证平均寻道时间最短。

图6-30 FCFS调度算法 磁头 谁先来先服务,平均寻道可能很长
图6-30 FCFS调度算法

结合图 6-31 SSTF 调度算法理解:最短寻道时间优先算法选择距当前磁头位置最近的请求为之服务,以减少寻道时间。

图6-31 SSTF调度算法 磁头 总挑离磁头最近的请求
图6-31 SSTF调度算法

6.8.3 基于扫描的磁盘调度算法

循环扫描(CSCAN)算法是对SCAN算法的改进,磁头只沿一个方向移动并在到达边缘后立即返回另一端继续扫描,避免SCAN中返回途中处理请求的不均匀性。

循环扫描(CSCAN)算法

本页说明:循环扫描(CSCAN)算法。

结合插图「图6-32 SCAN调度算法示例」理解本节要点。

图6-32 SCAN调度算法示例 磁头 电梯:扫到头再回头
图6-32 SCAN调度算法示例

结合插图「图6-33 CSCAN调度算法示例」理解本节要点。

图6-33 CSCAN调度算法示例 磁头 只向一个方向服务,回头空走
图6-33 CSCAN调度算法示例

NStepSCAN和FSCAN调度算法

在SSTF、SCAN及CSCAN几种调度算法中,都可能出现磁臂停留在某处不动的情况,例如,有一个或几个进程对某一磁道有较高的访问频率,即这个(些)进程反复请求对某一磁道的I/O操作,从而垄断了整个磁盘设备。我们把这一现象称为“磁臂粘着”(Armstickiness)。在高密度磁盘上容易出现此情况。

FSCAN算法实质上是N步SCAN算法的简化,即FSCAN只将磁盘请求队列分成两个子队列。一个是由当前所有请求磁盘I/O的进程形成的队列,由磁盘调度按SCAN算法进行处理。另一个是在扫描期间,将新出现的所有请求磁盘I/O的进程放入等待处理的请求队列。这样,所有的新请求都将被推迟到下一次扫描时处理。

磁盘调度:电梯 SCAN 磁头 请求队列:55, 58, 39, 18, 90, 160, 150, 38, 184 SCAN / C-SCAN 减少平均寻道 · Flash 无旋转延迟

做 · 交互动画

  • 根据「学习目标」列出 3 个关键词,对照原理段落解释给自己听。
  • 填写外设→module→service 表;交互动画预览寻道。

磁盘存储器的性能和调度

用控件单步操作;日志区记下每一步发生了什么。

总结与提升

  • 能举出嵌入式简化保护的一种做法。
  • 能用自己的话复述学习目标,并指出概念与板上实验的对应。
  • 能解释路径名解析步骤。
  • 映射表含 uart0、gpio,并预留 tft/rgb。

延伸思考

  • 多租户物联网网关为何又要细粒度 ACL?
  • 如果把本节机制拿到 Linux 或完整 OpenHarmony 上,会多出哪些硬件假设?
  • 扁平「对象键值存储」算目录吗?
  • 磁盘调度在 Flash 上还有意义吗?

← 本阶段封面 · 课程列表