磁盘存储器
磁盘是本章唯一有机械运动的部件,它的一切特性都从这一条推出来:移动磁臂要毫秒,旋转盘片要毫秒,而电子切换磁头几乎不要时间。
这个”三个动作、三个数量级”的结构,决定了磁盘地址的字段顺序、决定了访问时间的三项构成、也决定了磁盘调度算法为什么只优化寻道。 把三个动作的开销排出序,这一节就通了大半。
机制
物理结构
一台磁盘存储器由磁盘驱动器、磁盘控制器、盘片三部分组成。
- 磁道:盘面上的同心圆。最外圈是 0 号磁道。
- 扇区(块):磁道被分成的若干段,是磁盘读写的最小单位。
- 柱面:各盘面上半径相同的磁道构成的集合。柱面号 = 磁道号。
- 磁头:每个记录面一个,所有磁头装在同一根磁臂上,同进同退。
“所有磁头共用一根磁臂”这一条是柱面概念存在的全部理由:磁臂停在某个位置时,所有盘面上处在该半径的磁道都是可达的,切换到哪个盘面只需要电子选通。
传统磁盘各磁道的扇区数相同,因此内圈的位密度高于外圈;每个磁道的容量相同,这一条在容量计算里天天用。
磁盘地址:柱面号 → 盘面号 → 扇区号
疑问点:这个字段顺序是人为规定,还是为了让访问更快
是为了让访问更快,而且是本章设计意图最明显的一处。
三个动作的开销相差数量级:
动作 物理过程 量级 换扇区 等盘片转过来 微秒~毫秒 换盘面(换磁头) 电子切换,磁臂不动 几乎为 0 换柱面(换磁道) 移动磁臂,机械动作 毫秒,最贵 地址递增时,低位字段变化最频繁,高位字段变化最少。把最贵的柱面号放在最高位,意味着只有把一整个柱面读完,才需要移动一次磁臂。
所以有一个常被追问的推论要纠正:换磁头比找磁道开销大——这是反的。 换磁头只是把读写电路接到另一个磁头上,磁臂完全不动;找磁道要驱动音圈电机把磁臂移到新的半径并稳定下来。前者几乎免费,后者是磁盘上最贵的动作。
沿着同一个思路还能看到另外两处”小巧思”: 一是 0 号磁道在最外圈——外圈周长大、线速度高,把常用的引导区放在这里读得最快。 二是扇区交错编号(interleaving)——早期控制器处理完一个扇区需要时间,若扇区物理相邻则下一个已转过去了,于是把逻辑相邻的扇区在物理上隔开几个位置,让处理时间与旋转时间重叠。 这两处与”柱面号在最高位”是同一种思路:把慢的动作藏到快的动作后面去。
容量:格式化与非格式化
差额被扇区头、扇区间隙和校验码占去了——它们占物理空间但不存用户数据。
疑问点:扇区里为什么要存地址
一个扇区由三段构成:头(ID 域)· 数据区 · 尾(ECC 校验)。头里放的正是该扇区的柱面号、磁头号、扇区号,外加同步字段和一个 CRC。
磁头无法”知道”自己现在在哪。 磁臂寻道后停在某个半径上,盘片在高速旋转,控制器唯一的定位手段是把经过磁头的内容读出来,看 ID 域是不是要找的那个扇区——是就读数据区,不是就继续等下一个扇区转过来。扇区里的地址是磁盘的唯一定位依据。
这也解释了为什么格式化会让容量变小:格式化做的事就是把这些 ID 域、间隙和校验码写上去。
与这道题一起考的另一个选项是”磁盘存储器的最小读/写单位为 1 字节”,这是错的:最小读写单位是一个扇区(块)。原因同样在上面——定位靠 ID 域,一次定位的成本极高,按字节读写在物理上毫无意义。 这一条正是 OS 4.1.5 文件的物理结构中”块是文件系统分配的最小单位”的硬件来源。
存取时间
寻道时间
旋转延迟
“平均取半圈”有前提:目标扇区的位置随机。若题目说明是连续读取同一磁道上相邻的扇区,后续扇区不再需要旋转延迟——这一条限定在 OS 5.3.3 磁盘调度里会被反复用到。
磁盘阵列 RAID
RAID 用多个物理磁盘构成一个逻辑磁盘,同时追求两个目标:用条带化提高并行度(速度),用冗余提高可靠性。
| 级别 | 组织 | 冗余方式 | 有效容量( | 特点 |
|---|---|---|---|---|
| RAID 0 | 条带化 | 无 | 速度最快,可靠性最差 | |
| RAID 1 | 镜像 | 完全复制 | 可靠性最高,最浪费 | |
| RAID 2 | 位交叉 | 海明码 | — | 已淘汰 |
| RAID 3 | 位交叉 | 奇偶校验,专用校验盘 | 校验盘是瓶颈 | |
| RAID 4 | 块交叉 | 奇偶校验,专用校验盘 | 校验盘是瓶颈 | |
| RAID 5 | 块交叉 | 奇偶校验,校验块分散到各盘 | 无瓶颈,最常用 |
补充:位交叉与块交叉——按多大单位轮流分到各盘?
“交叉”就是把连续数据按一定单位,轮流分散到多块磁盘上。 以 3 块数据盘为例(暂不画校验):
- 位交叉:按 **bit(位)**拆分,第 1、2、3 位依次放到盘 1、2、3,第 4 位再放回盘 1。同一份数据的各个位分布在多盘上,读取时通常要多盘一起工作。
- 块交叉:按一整块数据拆分,第 1、2、3 块依次放到盘 1、2、3,第 4 块再放回盘 1。每块内部的数据留在同一盘上,不同盘可以并行处理各自的读请求;这里的块可包含多个扇区。
记忆:位交叉是“拆成位再分盘”;块交叉是“整块轮流放各盘”。区别在条带化的粒度。
RAID 0 没有任何冗余,它的可靠性比单盘还差(任一盘坏则全部数据丢失)——“RAID 都能提高可靠性”是错的,0 级是纯粹的性能手段。
疑问点:RAID 需要专门的一套设备来控制吗,是否还需要操作系统配合
两种实现都存在,区别恰好在”要不要操作系统配合”上:
硬件 RAID:由**独立的 RAID 控制器(RAID 卡)**完成条带划分、校验计算和重建。对操作系统完全透明——OS 只看到一块逻辑磁盘,不需要任何额外驱动逻辑,只要有该控制器的驱动程序即可。热插拔与自动重建也由控制器独立完成。
软件 RAID:由操作系统的存储子系统实现(如 Linux 的 md/LVM、Windows 的存储空间)。这时确实需要操作系统配合,条带和校验的计算占用主机 CPU。
“哪块盘坏了拔掉重新插一块就自动同步”描述的是硬件 RAID 的热插拔 + 自动重建。 重建期间阵列处于降级模式:数据仍可访问(靠校验实时算出丢失的部分),但性能下降,且此时再坏一块盘就真的丢数据了——这正是 RAID 6(双校验)存在的理由。
408 的边界:只考 RAID 0~5 的组织方式、有效容量和可靠性对比。硬件/软件实现之分、重建过程、RAID 6 都属于工程背景,可以用来理解,不作为答题依据。
RAID 不是备份。 它防的是磁盘硬件故障,不防误删除、不防文件损坏、不防勒索软件——这些故障会被镜像和校验忠实地同步到每一块盘上。
边界
“扇区”和”块”在磁盘语境下同义。 在文件系统语境下”块”可能是若干扇区的组合,见 OS 4.3.1。
磁盘是直接存取存储器(DAM),不是随机存取。 因为存取时间与当前磁头位置有关,见 3.1.1。
“每个磁道的扇区数相同”是教材模型。 现代磁盘用分区记录(外圈磁道扇区更多)以提高容量利用率,但 408 的计算题一律按扇区数相同处理,除非题目明说。
旋转延迟取半圈的前提是位置随机。 连续读同一磁道上的相邻扇区时,只在第一个扇区付一次旋转延迟。
磁盘的调度算法(FCFS / SSTF / SCAN / C-SCAN)在操作系统里考,见 OS 5.3.3。计组这一节只负责结构、地址和时间计算。
对照速查
| 动作 | 开销 | 对应地址字段 |
|---|---|---|
| 换扇区 | 小(等旋转) | 扇区号(低位) |
| 换盘面/磁头 | 几乎为 0(电子切换) | 盘面号(中位) |
| 换柱面 | 最大(磁臂机械移动) | 柱面号(高位) |
| 项 | 公式 |
|---|---|
| 格式化容量 | 扇区字节 × 每道扇区 × 每面磁道 × 记录面数 |
| 平均旋转延迟 | |
| 传输时间 | |
| 存取时间 |
| 判断 | 对错 |
|---|---|
| 格式化容量 < 非格式化容量 | ✅ |
| 扇区中包含数据、地址和校验 | ✅ |
| 磁盘最小读写单位是 1 字节 | ❌(一个扇区) |
| 换磁头比换磁道开销大 | ❌(反了) |
| RAID 都能提高可靠性 | ❌(RAID 0 不能) |
| RAID 可以代替备份 | ❌ |
考点
- 地址顺序 柱面号 | 盘面号 | 扇区号,为的是让最贵的寻道最不频繁
- 换磁头几乎免费,寻道最贵
- 最小读写单位是扇区,扇区含 ID 域(地址)+ 数据 + ECC
- 格式化容量 < 非格式化容量
;平均旋转延迟取半圈,前提是位置随机- 磁盘属于直接存取存储器
- RAID 0 无冗余可靠性最差;RAID 5 校验分散无瓶颈
- RAID 不是备份
链接
- 🏠 返回总览:计算机组成原理第 3 章:存储系统总览
- ⬅️ 上一节:3.3.4 存储器与 CPU 的连接
- ➡️ 下一节:3.4.2 固态硬盘
- 🔗 3.1.1(直接存取的定义)
- 🌐 跨科:OS 5.3.1 磁盘的结构、OS 5.3.3 磁盘调度算法
- 🌐 跨科:OS 4.1.5 文件的物理结构(块为什么是分配单位)
- 📖 名词库:第 3 章名词库