Skip to content

机械硬盘模拟器使用指南

考情分析

磁盘结构、地址计算、访问时间和调度算法是 408 的高频考点。很多同学能背下 LBA→CHS 公式、能列出六种调度算法,但一到计算题就卡——因为脑子里没有"一条数据从写入磁盘到被磁头找到"的完整画面

这个模拟器用一次完整的 探索结构 → 写入数据 → 检索数据 操作,把四大考点串成一条线:

考点你会在哪个场景看到考频
磁盘物理结构(盘面/磁道/扇区/柱面)探索结构🔥🔥
LBA→CHS 地址计算写入数据🔥🔥🔥
访问时间 = 寻道 + 旋转 + 传输写入数据🔥🔥🔥
六种调度算法 + 总寻道距离计算检索数据🔥🔥🔥

按顺序走完三个场景大约 20 分钟。走完之后,你再做真题,脑子里的画面会清楚很多。

加载可视化中...

场景一:探索结构(3D 视图)

打开模拟器后,你看到的是一个等轴测 3D 视图——三层盘片上下堆叠,中心有主轴,右侧伸出磁臂和磁头。这就是教科书里那张"磁盘结构示意图"的交互版。

一眼看懂的三件事

1. 三层盘片 = 三个盘面

左侧标注"盘面 0 / 1 / 2"。点击上方标签页切换活跃盘面,被选中的那层会展开扇区细节,其他层显示简化磁道环。

2. 磁臂 + 三个磁头

右侧灰色横杆是磁臂,穿过三层盘片、每层有一个红色磁头。关键认知:三个磁头是固定在同一根臂上的,同进同退——这就是"寻道以柱面为单位"的物理原因。

3. 同心环 = 磁道,格子 = 扇区

每层盘片上的同心椭圆环就是磁道(默认 5 条),每条磁道被切成 8 个格子(扇区)。

你应该点击这三个东西

点击任意灰色扇区 → 弹出详情面板:

  • CHS 地址 (柱面号, 盘面号, 扇区号) —— 考试里的磁盘地址就是这个
  • LBA 地址 + 从 CHS 到 LBA 的计算公式
  • 扇区内部结构:间隙 → 扇区头 → 数据区(512B) → ECC 校验

考研要记住的

扇区是磁盘的最小读写单位,通常 512 字节。不管你只写 1 个字节还是写满 512 字节,磁盘都要占用整个扇区。

点击磁道编号(椭圆环旁边的数字) → 弹出柱面侧视图

三个盘面上同一编号的磁道被红色虚线连起来——这就是柱面(Cylinder)

408 易混概念

  • 磁道:一个盘面上的一圈 → 属于单个盘面
  • 柱面:所有盘面上同一编号的磁道 → 跨盘面

在 3D 视图里看一眼就记住了:磁道是"一个圆环",柱面是"一摞圆环"。磁盘地址先写柱面号,就是因为寻道以柱面为单位——磁臂一动,三个磁头同时到达同一柱面。

点击红色磁头圆点 → 弹出磁头结构侧视图,展示磁头悬浮在盘面上方约 10nm 处。考试不考这个细节,但它解释了一个直觉:磁头为什么不能瞬移——它是物理运动的,所以有寻道时间。

自定义参数

点右上角齿轮图标,可以修改:

  • 磁盘结构:盘面数 / 磁道数 / 扇区数(修改会清空数据)
  • 时间参数:转速 RPM(默认 7200)/ 平均寻道时间 ms(默认 8)

三个关键时间公式

真题最常用,模拟器的"参数"行会直接显示对应数值:

  • 平均旋转延迟 Tr=600002×RPM ms(半圈时间)
  • 传输一个扇区 tsector=60000RPM× ms
  • 寻道时间 Ts=× ms

场景二:写入数据

点击"写入数据"标签。视图会从 3D 切换成俯视图(只看一个盘面),因为写入操作需要精确到单个扇区。

操作步骤

  1. 在输入框输入文本(如 hello),点击"写入"
  2. 动画自动开始,你会真的看到磁臂滑动 → 盘片旋转 → 扇区亮起

动画的六个阶段

每一步都可以暂停(⏸)、单步推进(⏭)、回退(⏮):

阶段你能看到什么对应考点
① 分配 LBA右侧面板显示 LBA 编号逻辑地址
② LBA→CHS右侧展开 5 行计算公式核心:连除取余法
③ 寻道磁臂从旧磁道滑到目标磁道寻道时间 N × t_seek
④ 旋转盘片整体旋转,目标扇区转到磁头下方旋转延迟 N × t_sector
⑤ 写入目标扇区橙色脉冲闪烁后变蓝传输时间 1 × t_sector
⑥ 汇总三个时间合并,显示总访问时间 ms总时间 = 寻道 + 旋转 + 传输

重点看③和④

寻道阶段你能看到磁臂真的在滑(径向移动);旋转阶段你能看到盘片真的在转(扇区转到磁头位置)。这两个动画对应的就是考试里"寻道时间"和"旋转延迟"的物理含义——很多同学背公式但不知道这两件事在物理上有什么区别,看一遍动画就懂了。

地址计算公式(核心考点)

第一次写入时,右侧面板会自动展开计算详情。以 LBA = 13、默认参数(3 盘面、8 扇区/磁道)为例:

=LBA×=133×8=1324=0=13mod24=13==138=1=mod=13mod8=5(0,1,5)

记忆技巧

LBA→CHS 就是连续做两次除法取余

  1. 先除"每柱面扇区数"(= 盘面数 × 每磁道扇区数),商 = 柱面号,余数继续
  2. 再除"每磁道扇区数",商 = 盘面号,余数 = 扇区号

多次写入

建议至少写入 5 条数据(如 helloworldosdiskexam)。写入后:

  • 磁盘上出现蓝色扇区——这些就是已占用的扇区
  • 底部"已写入数据"列表显示每条数据的 LBA → (C, H, S) 映射
  • 右侧面板的时间行显示具体毫秒数(如 3 × 3.20ms = 9.60 ms

这些数据在场景三会被用于演示调度算法。

场景三:检索数据

点击"检索数据"标签,进入核心场景。

操作步骤

  1. 你会看到一个请求队列——由之前写入数据所在的磁道号组成
  2. 如果队列太短(< 5),点"+ 随机请求"补充
  3. 设置起始磁道——默认跟随写入后的磁头位置,可以手动覆盖成真题里的起点
  4. 选择磁头方向——↑ 增(向磁道号增大)或 ↓ 减(向磁道号减小)
  5. 选择调度算法——FCFS / SSTF / SCAN / C-SCAN / LOOK / C-LOOK
  6. 点击"开始调度"

方向是真题必给条件

SCAN 类算法的答案取决于初始方向。同一组请求,SCAN↑ 和 SCAN↓ 的访问序列和总寻道距离完全不同。真题写"磁头当前向磁道号增大方向移动"——务必把方向对齐再跑模拟器。

你会看到什么

  • 磁盘视图:磁臂逐步移向目标磁道,经过的磁道高亮
  • 折线图:横轴 = 访问顺序,纵轴 = 磁道号——这就是 408 真题要你画的那个图
  • 实时数据:当前磁道 / 本次寻道 / 累计寻道距离

调度跑完后出现绿色结果面板

指标说明
总寻道距离所有移动距离之和
平均寻道长度= 总寻道 ÷ 请求数(真题第二问常考)
总寻道时间= 总寻道 × 每道耗时(ms)
磁头访问序列完整文本,直接和手算结果对照

对比不同算法(最有价值的功能)

  1. 用 FCFS 跑完 → 看到折线图
  2. 切换到 SSTF → 点"开始调度"重新跑
  3. 折线图叠加显示,不同算法不同颜色

你会直观地看到:

  • FCFS 的折线上蹿下跳,总距离最大
  • SSTF 的折线更平滑,但远处请求可能被饿死
  • SCAN 像电梯一样来回扫,折线呈 V 形

SCAN vs LOOK 考试高频陷阱

  • SCAN:磁头必须走到最远端(磁道 0 或最大磁道号)才折返
  • LOOK:磁头只走到最远的请求处就折返

在模拟器里同一组数据分别跑 SCAN 和 LOOK,折线图的端点不同,总距离也不同——这就是计算题里常见的坑。

播放控制

按钮作用
上一步(回退)
⏸ / ▶暂停 / 继续
下一步(手动推进)
速度选择0.5x / 1x / 2x

建议第一遍 0.5x 慢速看,理解后用 2x 快速对比。

六种算法速查表

算法依赖方向饥饿到端点一句话特征
FCFS先来先服务,最简单最公平,总寻道距离最大
SSTF贪心选最近请求,距离小但远处请求可能饿死
SCAN到端点电梯算法:扫到磁道尽头再折返
C-SCAN到端点单向扫:到端点后直接跳回起点,响应更均匀
LOOK到最远请求SCAN 改良:没请求了就折返,省掉空跑
C-LOOK到最远请求C-SCAN 改良:到最远请求后跳回最近未处理请求

三句话记全

  1. FCFS 公平,SSTF 贪心——不依赖方向
  2. SCAN/C-SCAN 到端点,LOOK/C-LOOK 不到端点——这是唯一区别
  3. C- 系列单向扫,非 C- 系列来回扫——C = Circular(循环)

陷阱提醒:当请求集的最远点恰好等于磁道端点时,SCAN 和 LOOK 结果相同。只有最远请求没到端点时,SCAN 才会多走一段空程——这种差异经常成为计算题的坑。

真题演练

真题 1:调度算法计算题

题目:磁盘有 5 个磁道(编号 0-4),每磁道 8 个扇区,转速 7200 RPM,平均寻道时间 8ms。当前磁头位于磁道 2向磁道号增大方向移动。请求队列(按到达顺序):0, 4, 1, 3, 0

分别用 FCFS、SSTF、SCAN、LOOK 四种算法,写出访问序列、总寻道距离、平均寻道长度。

用模拟器验算:检索场景 → 起始磁道 2 → 方向 ↑ (增) → 依次选算法跑。

算法访问序列总寻道距离平均寻道
FCFS2 → 0 → 4 → 1 → 3 → 02+4+3+2+3 = 142.8
SSTF2 → 1 → 0 → 0 → 3 → 41+1+0+3+1 = 61.2
SCAN↑2 → 3 → 4 → 1 → 0 → 01+1+3+1+0 = 61.2
LOOK↑2 → 3 → 4 → 1 → 0 → 01+1+3+1+0 = 61.2

为什么 SCAN 和 LOOK 结果一样?

因为最大请求 4 = 最大磁道号 4。把最大请求改成 3,SCAN 仍要去磁道 4 再折返,而 LOOK 在 3 就折返——总距离立刻不同。在模拟器里改一下请求就能验证。

真题 2:访问时间计算题

题目:磁盘转速 15000 RPM,平均寻道时间 6ms,每磁道 500 扇区,扇区大小 512B。读取 10KB 连续数据需要多少时间?

解题

Tseek=6 msTrotate=600002×15000=2 msTtransfer=10×1024/512500×6000015000=20500×4=0.16 msTtotal=6+2+0.168.16 ms

用模拟器验算:齿轮面板设 RPM = 15000、平均寻道 = 6,写入一条数据后看右侧"参数"行:平均旋转延迟 2.00 ms ✓。模拟器的每磁道扇区数小(8 而非 500),单扇区传输时间不同,但旋转延迟这个"强度量"是数值精确的

推荐使用流程

第一轮:建立直觉(10 分钟)

  1. 探索结构:在 3D 视图里点扇区、点磁道号、点磁头——搞清楚"盘面 vs 柱面"的物理区别
  2. 写入 5 条数据:重点看 LBA→CHS 的计算公式 + 寻道/旋转动画
  3. 用 FCFS 检索:看磁头怎么跑 + 折线图怎么画

第二轮:对比算法(10 分钟)

  1. 同一组请求,依次跑 FCFS → SSTF → SCAN → LOOK → C-SCAN → C-LOOK
  2. 看叠加折线图——FCFS 上蹿下跳,SCAN V 形,SSTF 短而紧凑
  3. 手算一遍总寻道距离,和绿色面板对照
  4. 切换方向 ↑ / ↓,看 SCAN 访问序列怎么变

第三轮:真题验算(按需)

  1. 齿轮面板调 RPM / 平均寻道 / 磁道数等参数
  2. 检索场景设起始磁道方向
  3. 跑完后对照绿色面板的磁头访问序列 + 总寻道距离 + 平均寻道长度
  4. 先把上面两道真题都跑一遍,再上自己的真题卷

考研高频考点速览

考点考频关键记忆
LBA→CHS 地址计算🔥🔥🔥连除取余法:先除每柱面扇区数,再除每磁道扇区数
访问时间三分量🔥🔥🔥T = 寻道 + 旋转(半圈)+ 传输
调度算法总寻道距离🔥🔥🔥给队列 + 起点 + 方向,手算访问序列和总距离
SCAN vs LOOK 折返位置🔥🔥SCAN 到端点,LOOK 到最远请求
SSTF 饥饿问题🔥🔥远处请求可能永远不被服务(贪心的代价)
CHS 地址格式🔥(柱面, 盘面, 扇区)——先柱面是因为寻道以柱面为单位

真题练习

相关真题(6题)

2024Q32选择题2分

CSCAN磁盘调度:循环扫描算法的磁头移动距离计算

2018Q30选择题2分

FCFS不会磁臂黏着:按请求顺序服务,不依赖磁头当前位置

2015Q32选择题2分

SCAN磁盘调度:从58号向内侧扫描到199再折返到15的磁道数

2012Q32选择题2分

磁盘I/O优化:设置多个分区不能改善I/O性能

2010Q30选择题2分

SCAN电梯调度:先向增加方向扫描到尽头再折返

2010Q45综合题8分

综合题:CSCAN磁盘调度+位图空间管理+SSD调度策略对比