6.8 磁盘存储器的性能和调度
L40
学习目标
磁盘访问时间由寻道、旋转延迟和传输时间组成,调度算法优化寻道顺序。
- 磁盘访问时间:由寻道时间(磁头移到磁道)、旋转延迟时间(等待扇区到达)和传输时间组成。
- 先来先服务(FCFS):按请求到达顺序服务,简单但寻道距离长。
- 最短寻道时间优先(SSTF):选择距当前磁头最近的请求,可能饥饿远处请求。
- 扫描算法(SCAN/电梯算法):磁头单向移动并服务沿途请求,到端点后反向;CSCAN循环扫描。
原理 · 深入理解
6.8 磁盘存储器的性能和调度
本节概览:先建立「磁盘存储器的性能和调度」的框架,再依次展开下列小节。
- 磁盘性能简述
- 早期的磁盘调度算法
- 基于扫描的磁盘调度算法
6.8.1 磁盘性能简述
磁盘设备可包括一个或多个物理盘片,每个磁盘片分一个或两个存储面,每个盘面上有若干个磁道,磁道之间留有必要的间隙。为使处理简单,每条磁道上可存储相同数目的二进制位。
磁盘访问时间由寻道时间、旋转延迟时间和传输时间组成。
磁盘可从不同角度进行分类,最常见的有硬盘和软盘、单片盘和多片盘、固定头磁盘和活动头(移动头)磁盘等。磁盘设备工作时以恒定速率旋转,为读或写,磁头必须能移动到所指定的磁道上,并等待所指定的扇区的开始位置旋转到磁头下,然后再开始读或写数据。
- 固定头磁盘:每条磁道上都有一读/写磁头,所有磁头都被装在一刚性磁臂中
- 移动头磁盘:每一个盘面仅配有一个磁头,也被装入磁臂中
磁盘访问时间:由寻道时间、旋转延迟时间和传输时间三部分组成。寻道时间是把磁头移到指定磁道所需时间;旋转延迟时间是磁头到达磁道后等待指定扇区转到磁头下所需时间;传输时间是读写数据本身所需时间。
6.8.2 早期的磁盘调度算法
先来先服务(FCFS)是最简单的磁盘调度算法,根据进程请求访问磁盘的先后次序进行调度。优点是公平、简单,且每个进程的请求都能依次得到处理。
最短寻道时间优先(SSTF)算法选择这样的进程:其要求访问的磁道与当前磁头所在磁道距离最近,以使每次寻道时间最短,但这种算法不能保证平均寻道时间最短。
结合图 6-31 SSTF 调度算法理解:最短寻道时间优先算法选择距当前磁头位置最近的请求为之服务,以减少寻道时间。
6.8.3 基于扫描的磁盘调度算法
循环扫描(CSCAN)算法是对SCAN算法的改进,磁头只沿一个方向移动并在到达边缘后立即返回另一端继续扫描,避免SCAN中返回途中处理请求的不均匀性。
循环扫描(CSCAN)算法
本页说明:循环扫描(CSCAN)算法。
结合插图「图6-32 SCAN调度算法示例」理解本节要点。
结合插图「图6-33 CSCAN调度算法示例」理解本节要点。
NStepSCAN和FSCAN调度算法
在SSTF、SCAN及CSCAN几种调度算法中,都可能出现磁臂停留在某处不动的情况,例如,有一个或几个进程对某一磁道有较高的访问频率,即这个(些)进程反复请求对某一磁道的I/O操作,从而垄断了整个磁盘设备。我们把这一现象称为“磁臂粘着”(Armstickiness)。在高密度磁盘上容易出现此情况。
FSCAN算法实质上是N步SCAN算法的简化,即FSCAN只将磁盘请求队列分成两个子队列。一个是由当前所有请求磁盘I/O的进程形成的队列,由磁盘调度按SCAN算法进行处理。另一个是在扫描期间,将新出现的所有请求磁盘I/O的进程放入等待处理的请求队列。这样,所有的新请求都将被推迟到下一次扫描时处理。
做 · 交互动画
- 根据「学习目标」列出 3 个关键词,对照原理段落解释给自己听。
- 填写外设→module→service 表;交互动画预览寻道。
磁盘存储器的性能和调度
用控件单步操作;日志区记下每一步发生了什么。
总结与提升
- 能举出嵌入式简化保护的一种做法。
- 能用自己的话复述学习目标,并指出概念与板上实验的对应。
- 能解释路径名解析步骤。
- 映射表含 uart0、gpio,并预留 tft/rgb。
延伸思考
- 多租户物联网网关为何又要细粒度 ACL?
- 如果把本节机制拿到 Linux 或完整 OpenHarmony 上,会多出哪些硬件假设?
- 扁平「对象键值存储」算目录吗?
- 磁盘调度在 Flash 上还有意义吗?