三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

磁盘物理结构与延迟时间优化:从磁道扇区到交替编号

磁盘物理结构与延迟时间优化:从磁道扇区到交替编号

磁盘物理结构与延迟时间优化:从磁道扇区到交替编号

核心要点

  • 磁盘读写时间 = 寻道时间(Seek Time)+ 旋转延迟(Rotational Latency)+ 传输时间(Transfer Time),其中寻道时间占比最大、是调度优化的核心目标
  • 交替编号(Interleaving)的核心逻辑:磁头读完一个扇区后需要一小段处理时间,而盘片在持续旋转——如果 0 号扇区紧挨 1 号,等处理完 1 号已经转过去了,必须等多转一圈
  • 错位命名(Cylinder Skew)的原理类似但发生在多盘面之间:磁头切换盘面需要时间,不同盘面的同名扇区故意错开一段距离
  • 从出厂到可用,磁盘经历三步:低级格式化(划分扇区)→ 分区(划分 C/D/E 盘)→ 逻辑格式化(创建文件系统)

磁头在一个圈上找数据:磁盘到底长什么样?

机械硬盘(HDD)的物理结构像一个多层的旋转蛋糕——多个圆形盘片(Platter)叠在一起,每个盘面(Surface)上都有一个读/写磁头(Head),磁头固定在统一移动的磁头臂(Arm)上。

盘面被划分为若干同心圆环——每个圆环称为一个磁道(Track)。所有盘面上相同编号的磁道构成了一个柱面(Cylinder)。每个磁道又被划分为若干弧段——每个弧段称为一个扇区(Sector),是磁盘读/写的最小单位(通常 512 字节)。

[引用] 教材中的 CHS 地址(Cylinder-Head-Sector)格式就是通过柱面号、磁头号(盘面号)、扇区号来定位一个扇区。现代磁盘内部已使用 LBA(Logical Block Addressing)逻辑块编址,由磁盘控制器完成 LBA → CHS 的转换,但 CHS 模型在考研中仍然是考点。

[经验] 一个反直觉的事实:最内侧磁道的扇区面积最小,数据密度最大。因为同一圈上需要存储的数据量相同(每个磁道的扇区数相等,都是固定比特率写入),外侧磁道有更大的周长,物理空间更宽裕。现代磁盘使用区位记录(Zone Bit Recording, ZBR)技术,让外侧磁道拥有更多扇区,但考研一般讨论简化模型。


磁盘读写时间的三个组成部分

要读写一个扇区,磁头需要完成三个动作。这个公式是磁盘性能分析的基础:

读写时间 = 寻道时间 + 旋转延迟 + 传输时间

寻道时间(Seek Time):磁头臂从当前位置移动到目标磁道所需的时间。包含启动加速时间和匀速移动时间。这是三者中最慢的(毫秒级),也是磁盘调度算法(FCFS / SSTF / SCAN)优化的主要对象。

寻道时间不是线性增长的——移动 1 个磁道和移动 100 个磁道的时间差距远小于 100 倍,因为启动加速就已经占了相当比例。但考研计算题一般简化为"每移动一个磁道耗时固定"。

旋转延迟(Rotational Latency):磁头到达目标磁道后,等待目标扇区旋转到磁头下方所需的时间。平均为旋转半圈的时间。假设转速 7200 rpm(转/分钟),旋转一圈约 8.33ms,平均旋转延迟 ≈ 4.17ms。

传输时间(Transfer Time):数据实际从扇区被磁头读取的时间。取决于转速和每次读取的扇区数。读取一个扇区(512 字节)的传输时间通常在微秒级别,远小于前两者。

[经验] 408 题目一般会给磁盘转速,要求计算"读完一个扇区需要多长时间"。标准计算公式:单圈时间 = 60 / 转速(rpm),平均延迟 = 单圈 / 2。如果题目给了寻道时间,记得三者相加。


交替编号:为什么 0 号扇区旁边不是 1 号?

[共识] 如果逻辑上相邻的扇区(如 0 号和 1 号)在物理上也相邻排列,连续读多个扇区时会遇到一个大问题。

[引用] 教材的分析十分精到:磁头读取完一个扇区的内容后,需要一小段时间处理——校验数据、放到缓冲区、通知控制器。但盘片在持续旋转。当磁头处理完 0 号扇区准备读 1 号时,1 号扇区已经从磁头下方"转过去了"。必须等待盘片旋转整整一圈,1 号扇区才能再次回到磁头下方。

这就产生了巨大的延迟——本来旋转半圈以内就能读完的连续扇区,因为处理延迟,变成每读一个扇区就要多等一圈。

交替编号(Interleaving)的解决方案:将逻辑上连续的扇区在物理上隔开几个位置排列。例如:

不使用交替: 0 1 2 3 4 5 6 7 使用交替: 0 4 1 5 2 6 3 7

这样,读 0 → 处理 → 读 1 时,1 号扇区刚好转到磁头下方,不需要多等一整圈。交替的间隔取决于控制器处理速度和磁盘转速的匹配。

[经验] 考研中如果出现交替编号题,通常会给你"处理时间"和"转速",让你判断交替间隔应该设置为几个扇区。实际计算逻辑是:处理时间内盘片转过多少个扇区,就隔开多少个扇区排列。


错位命名:不同盘面的扇区对齐是个陷阱

[共识] 交替编号解决了"同一磁道内连续扇区"的延迟问题。但还有一个类似的问题发生在不同盘面之间

当一个磁道上的数据读完、需要切换到另一个盘面继续读时,磁头需要切换(切换电子开关)+ 盘片仍在旋转。如果两个盘面的 0 号扇区在物理上完全对齐(同一角度位置),切换磁头的时间会导致目标盘面的 0 号扇区已经转过去了。

[引用]错位命名(Cylinder Skew)技术正是为了解决这个问题:不同盘面的同名扇区在物理上故意错开一段距离。例如盘面 0 的 0 号扇区在角度 0°,盘面 1 的 0 号扇区在角度 30°。这样,磁头切换的时间刚好让盘面 1 的 0 号扇区旋转到磁头下方。

[经验] 交替编号和错位命名目标相同(减少延迟),但作用域不同:交替编号优化同一磁道内的连续读,错位命名优化跨盘面的连续读。


磁盘初始化:从低级格式化到逻辑格式化的三步走

一块崭新的磁盘从出厂到能够存放文件,需要经过三个步骤:

第一步:低级格式化(物理格式化)。将每个磁道划分为固定大小的扇区(通常 512 字节)。每个扇区分为头(Header)、数据区(Data Area)、尾(Trailer)三部分。头和尾包含扇区编号、校验码(奇偶校验/CRC)等管理信息——这些信息由磁盘控制器使用,OS 看不到。

[引用] 教材指出:低级格式化还会检测并标记坏扇区,用备用扇区替换。这一步骤通常由磁盘制造商在出厂前完成,普通用户极少需要自己做。

第二步:磁盘分区。将物理磁盘划分为若干个逻辑分区(Partition / Volume),就是我们熟悉的 C 盘、D 盘、E 盘。分区信息写入 MBR(主引导记录)或 GPT(GUID 分区表)中。每个分区的起始和结束柱面由分区表记录。

第三步:逻辑格式化。在每个分区上创建文件系统——包括:创建根目录、初始化空闲空间管理用的数据结构(位示图 / 空闲分区表)、将 superblock 信息写入磁盘。逻辑格式化之后,分区才算真正"可用"——操作系统可以往里面写文件了。

请注意区分"文件系统的逻辑格式化"和"低级格式化":一个是 OS 层面的软件初始化,一个是硬件层面的扇区划分。在 408 题目中,“格式化"通常指逻辑格式化,除非题目明确写了"低级格式化”。


引导块:开机后第一个被读入内存的东西

每个分区的第一个扇区称为引导块(Boot Block)。计算机开机后,BIOS 先读取磁盘第一个扇区(MBR),由 MBR 中的代码定位活动分区的引导块,引导块中的引导程序再负责加载该分区中的操作系统内核。

提示:引导块的作用可以结合第一章"操作系统引导"小节来理解。引导块 → 操作系统内核加载器 → 内核初始化 → 系统正常运行,这是一条完整的启动链路。

对于没有安装操作系统的分区(如纯数据盘),引导块可以置空。

如果计算机装了两个操作系统(如 Windows + Linux,各占一个分区),MBR 的引导代码会让用户选择从哪个分区的引导块启动——这就是双系统引导的基本原理。现代 UEFI 系统用 ESP 分区(EFI System Partition)替代了这一方案,但原理类似。


坏块管理:磁盘坏了怎么办?

磁盘在使用过程中不可避免会产生坏块(Bad Block)——物理上损坏、无法可靠读写的扇区。OS 和磁盘控制器协同处理坏块:

  • 硬件层面:磁盘控制器在低级格式化时检测坏块,用备用扇区替换,对 OS 透明(OS 根本不知道有扇区坏了)
  • 软件层面:文件系统(如 ext4)可以维护一个坏块列表,在分配磁盘块时跳过这些位置

[经验] 现代磁盘普遍使用 SMART(Self-Monitoring, Analysis and Reporting Technology)技术持续监控磁盘健康状态,当重映射扇区数(Reallocated Sector Count)持续增长时,就是磁盘即将失效的预警信号。


FAQ

为什么寻道时间占磁盘读写时间的最大比例?

因为磁头臂是机械部件,移动需要克服惯性。一次寻道通常在 3-15ms,而旋转延迟平均 4ms 左右,传输时间在微秒级。所以磁盘调度算法优先优化寻道路径——宁可多转半圈,也不多移动一次磁头臂。

交替编号中的"间隔"怎么确定?

间隔 = 处理时间 / 一个扇区的通过时间。例如:处理时间为 200μs,盘速 7200rpm(一圈 8.33ms,每扇区约 100μs),则间隔约为 2 个扇区。逻辑扇区排列可能是:0, 3, 6, 1, 4, 7, 2, 5。

SSD 也需要交替编号吗?

不需要。SSD 没有旋转盘片和移动磁头——它没有寻道时间和旋转延迟的概念。SSD 的读写延迟主要来自闪存芯片本身的访问时间(微秒级),远低于 HDD 的机械延迟。

低级格式化和逻辑格式化的区别考试中怎么区分?

低级格式化 = 划分扇区(硬件层面),逻辑格式化 = 创建文件系统(OS 层面)。题目说"新买的硬盘需要做……"一般指逻辑格式化(分区 + 建文件系统),因为低级格式化出厂时已完成。

为什么靠近轴心的磁道读写速度看起来和外侧一样(简化模型)?

因为磁盘是恒定角速度(CAV, Constant Angular Velocity)旋转——不管在哪个磁道上,磁头扫过的扇区数相同(每圈时间固定、扇区数固定)。但现代磁盘用 ZBR 技术让外侧磁道有更多扇区,外圈传输速度更快。考研一般用简化模型(假设各磁道扇区数相同)。


总结

磁盘的性能瓶颈由三个时间分量叠加而成,其中寻道时间占比最大。交替编号和错位命名是两种巧妙的物理层面优化——它们不改变磁盘的机械结构,只是改变了扇区编号在盘面上的排列方式,就将旋转延迟降到了最低。

从低级格式化到逻辑格式化的三步走流程,完整回答了"一块崭新的磁盘如何变成能存文件的文件系统"——扇区、分区、文件系统,层层递进。


← 返回列表