磁盘

5.3 讲的是最重要的一类外存设备。它之所以要单独占一节,是因为磁盘有一个别的设备没有的特点:访问同一块数据的耗时,取决于上一次访问的是哪一块。

这个”有状态”的特性是后面磁盘调度算法存在的全部理由,也是本节访问时间公式要刻画的东西。

机制

磁盘的物理结构

磁盘由若干盘面组成,每个盘面上有一个磁头。每个盘面被划分成一圈圈的磁道,每条磁道又被划分为若干扇区——扇区是磁盘读写的最小单位。

所有盘面上处于同一半径位置的磁道,合起来称为一个柱面。 这个概念之所以重要,是因为所有磁头是固定在同一个磁臂上、一起移动的:磁臂移动到某个位置,所有盘面上的磁头就同时对准了同一个柱面。

磁盘地址为什么是”柱面号 | 盘面号 | 扇区号”

磁盘地址由三部分构成,且顺序是固定的:柱面号在最高位,然后是盘面号,最后是扇区号。

这个顺序不是随意的,它由三种动作的代价差异决定:

换柱面要移动磁臂——这是机械运动,最慢。换盘面只需切换到另一个磁头——这是电子切换,几乎不花时间。换扇区要等盘片转过来——介于两者之间。

把柱面号放在最高位,意味着地址连续的数据块会优先分布在同一柱面的不同盘面上,只有一个柱面用满了才换到下一个柱面。这样读一大片连续数据时,磁臂几乎不用动。

若把盘面号放在最高位,结果会完全相反:每读完一个盘面的一条磁道就要移动磁臂,寻道次数暴增。

磁盘的访问时间

一次磁盘访问的时间由三部分组成:① 寻道时间 ——启动磁臂并把磁头移动到指定磁道所花的时间。设启动磁臂的时间为 、跨越一条磁道的时间为 、共跨越 条磁道,则② 旋转延迟时间 ——磁头定位到目标磁道后,等待目标扇区转到磁头下方所需的时间。设磁盘转速为 (转/秒),平均需要转半圈:③ 传输时间 ——把数据从磁盘读出或写入的时间。设读写字节数为 、每条磁道容量为 字节:三者的量级差异是本节最该记住的事实:寻道时间是机械臂的移动,通常是毫秒量级,远大于另外两项——这直接决定了后面所有磁盘调度算法的优化目标。

本节与 5.3.3 的分工说明:教材把”磁盘地址结构的设计”与”减少延迟时间的方法(交替编号、错位命名)” 一并放在 5.3.3 中。本页只保留地址结构(下面那道连续存放的真题需要它), 交替编号与错位命名请看 5.3.3。

边界

影响最大的是寻道时间

疑问点:磁盘读取时间中影响最大的部分

  1. 在磁盘中读取数据的下列时间中,影响最大的是( )。 A. 处理时间 B. 延迟时间 C. 传送时间 D. 寻道时间

  2. 当设计针对传统机械式硬盘的磁盘调度算法时,主要考虑下列哪种因素对磁盘 I/O 的性能影响最为显著?( ) A. 移动磁头的延迟 B. 单个磁盘块的读/写时间 C. 磁盘平均旋转延迟 D. 磁盘最大旋转延迟

两题答案分别是 D 和 A,本质是同一件事:寻道(移动磁头)最慢。

原因是量级差:寻道是唯一涉及”磁臂机械移动”的动作,要克服惯性、要加速减速、要定位,通常是毫秒量级;旋转延迟只是等盘片转半圈;传输时间只是数据流过磁头,两者都小得多。

第二题问的是”设计调度算法时主要考虑什么”,答案自然也是寻道——这正是 所有磁盘调度算法都在优化磁头移动距离、而没有一个算法去优化旋转延迟的原因。

旋转延迟与什么有关、与什么无关

疑问点:关于旋转延迟的不正确叙述

  1. 在下列有关旋转延迟的叙述中,不正确的是( )。 A. 旋转延迟的大小与磁盘调度算法无关 B. 旋转延迟的大小取决于磁盘空闲空间的分配程序 C. 旋转延迟的大小与文件的物理结构有关 D. 扇区数据的处理时间对旋转延迟的影响较大

答案 D(选”不正确”的)。

A 对:磁盘调度算法优化的是磁头移动顺序,即寻道,它不改变盘片的转速,也不改变数据落在哪个扇区,因此与旋转延迟无关。

B 对:空闲空间分配程序决定了数据块被放在哪些扇区,而扇区的角位置直接决定了要等多久,因此有关。

C 对:文件的物理结构(连续、链接还是索引)决定了下一块数据在哪里,进而影响读完这一块后要等多久,因此有关。

D 错:扇区数据的处理时间属于 CPU 或控制器处理数据的时间,它不是”盘片转动等待”的组成部分。虽然处理慢了可能错过下一个扇区(这正是 5.3.3 中”交替编号”要解决的问题),但**“影响较大”的说法过强**,且它与旋转延迟不是同一个量。

连续存放时下一块放在哪

疑问点:连续存放的下一块的磁盘地址

  1. 假设磁盘有 256 个柱面,4 个磁头(盘面),每个磁道有 8 个扇区(编号均从 0 开始)。文件 A 在磁盘上连续存放。若文件 A 中的一个块存放在 5 号柱面、1 号磁头下的 7 号扇区,则文件 A 的下一块应存放在( )。 A. 5 号柱面,2 号磁头下的 7 号扇区 B. 5 号柱面,2 号磁头下的 0 号扇区 C. 6 号柱面,1 号磁头下的 7 号扇区 D. 6 号柱面,1 号磁头下的 0 号扇区

答案 B。 这道题就是”柱面号在最高位”这条设计的直接应用。

扇区编号 0~7,当前在 7 号扇区,已经是本磁道的最后一个。 因此要进位。问题是往哪个方向进位。

按地址结构”柱面号 | 盘面号 | 扇区号”,扇区号进位应该进到盘面号上——即换到同一柱面的下一个磁头(1 → 2),扇区号归 0。得到 5 号柱面、2 号磁头、0 号扇区,即选项 B。

这样做的物理意义正是本节开头讲的那条:换磁头是电子切换,不用移动磁臂;只有当这个柱面上所有 4 个盘面都用完了,才需要移到 6 号柱面。

逐项排除:A 错在扇区号没归零——7 号已是最后一个,不可能还是 7。C 和 D 都错在过早换柱面——5 号柱面上还有 2、3 号磁头没用,没理由现在就去移动磁臂。

随机寻道下的平均访问时间

疑问点:随机寻道方式下读写 b 字节的平均访问时间

  1. 已知某磁盘的平均转速为 秒/转,平均寻道时间为 秒,每个磁道可以存储的字节数为 ,现向该磁盘读/写 字节的数据。采用随机寻道的方法,每道的所有扇区组成一个簇,其平均访问时间是( )。 A.  B.  C.  D.

答案 A。 这道题的关键是先想清楚”要访问几个磁道”和”访问一个磁道要多久”。

① 要访问几个磁道。 每条磁道存 字节,要读写 字节,因此需要访问个磁道② 访问一个磁道要多久。 题干说”采用随机寻道”,意味着每访问一个磁道都要付一次平均寻道时间 (不能像顺序访问那样连着读)。又说”每道的所有扇区组成一个簇”,意味着每次要把整条磁道读完,即转一整圈,耗时 (注意题干给的 是”秒/转”,本身就是一整圈的时间,不必再乘 )。

因此访问一个磁道的时间是 。

③ 相乘。这道题最容易错的地方有两处:一是把 当成转速而去算 ——题干明确说是”秒/转”,且”整道组成一个簇”要求转满一圈;二是漏掉”随机寻道”这个条件,误以为寻道只需一次。

对照速查

磁盘结构含义
扇区读写的最小单位
磁道盘面上的一圈
柱面所有盘面上同一半径的磁道
磁头每个盘面一个,全部固定在同一磁臂上一起移动
磁盘地址顺序理由
柱面号(最高位)换柱面要移动磁臂,最慢放最高位使其最少变化
盘面号换盘面只是电子切换,最快优先在同一柱面内换
扇区号(最低位)换扇区要等盘片转—
访问时间公式量级
寻道时间 最大(毫秒级机械运动)
旋转延迟 (平均半圈)中
传输时间 小
旋转延迟有关 / 无关
磁盘调度算法无关(调度优化的是寻道)
空闲空间分配程序有关(决定数据落在哪个扇区)
文件的物理结构有关(决定下一块在哪)

考点

  • 柱面 = 所有盘面上同一半径的磁道;磁头一起移动
  • 磁盘地址是”柱面号 | 盘面号 | 扇区号”,因为换柱面最慢、换盘面最快
  • 连续存放时扇区号进位进到盘面号,不是柱面号(真题选项 B)
  • 访问时间三部分,寻道时间最大——这是磁盘调度算法的唯一优化目标
  • 旋转延迟与磁盘调度算法无关,与空闲空间分配和文件物理结构有关
  • 随机寻道题:磁道数 (寻道 + 转一圈)

链接