Appearance
机械硬盘模拟器使用指南
考情分析
磁盘结构、地址计算、访问时间和调度算法是 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)
三个关键时间公式
真题最常用,模拟器的"参数"行会直接显示对应数值:
- 平均旋转延迟
ms(半圈时间) - 传输一个扇区
ms - 寻道时间
ms
场景二:写入数据
点击"写入数据"标签。视图会从 3D 切换成俯视图(只看一个盘面),因为写入操作需要精确到单个扇区。
操作步骤
- 在输入框输入文本(如
hello),点击"写入" - 动画自动开始,你会真的看到磁臂滑动 → 盘片旋转 → 扇区亮起
动画的六个阶段
每一步都可以暂停(⏸)、单步推进(⏭)、回退(⏮):
| 阶段 | 你能看到什么 | 对应考点 |
|---|---|---|
| ① 分配 LBA | 右侧面板显示 LBA 编号 | 逻辑地址 |
| ② LBA→CHS | 右侧展开 5 行计算公式 | 核心:连除取余法 |
| ③ 寻道 | 磁臂从旧磁道滑到目标磁道 | 寻道时间 N × t_seek |
| ④ 旋转 | 盘片整体旋转,目标扇区转到磁头下方 | 旋转延迟 N × t_sector |
| ⑤ 写入 | 目标扇区橙色脉冲闪烁后变蓝 | 传输时间 1 × t_sector |
| ⑥ 汇总 | 三个时间合并,显示总访问时间 ms | 总时间 = 寻道 + 旋转 + 传输 |
重点看③和④
寻道阶段你能看到磁臂真的在滑(径向移动);旋转阶段你能看到盘片真的在转(扇区转到磁头位置)。这两个动画对应的就是考试里"寻道时间"和"旋转延迟"的物理含义——很多同学背公式但不知道这两件事在物理上有什么区别,看一遍动画就懂了。
地址计算公式(核心考点)
第一次写入时,右侧面板会自动展开计算详情。以 LBA = 13、默认参数(3 盘面、8 扇区/磁道)为例:
记忆技巧
LBA→CHS 就是连续做两次除法取余:
- 先除"每柱面扇区数"(= 盘面数 × 每磁道扇区数),商 = 柱面号,余数继续
- 再除"每磁道扇区数",商 = 盘面号,余数 = 扇区号
多次写入
建议至少写入 5 条数据(如 hello、world、os、disk、exam)。写入后:
- 磁盘上出现蓝色扇区——这些就是已占用的扇区
- 底部"已写入数据"列表显示每条数据的
LBA → (C, H, S)映射 - 右侧面板的时间行显示具体毫秒数(如
3 × 3.20ms = 9.60 ms)
这些数据在场景三会被用于演示调度算法。
场景三:检索数据
点击"检索数据"标签,进入核心场景。
操作步骤
- 你会看到一个请求队列——由之前写入数据所在的磁道号组成
- 如果队列太短(< 5),点"+ 随机请求"补充
- 设置起始磁道——默认跟随写入后的磁头位置,可以手动覆盖成真题里的起点
- 选择磁头方向——
↑ 增(向磁道号增大)或↓ 减(向磁道号减小) - 选择调度算法——FCFS / SSTF / SCAN / C-SCAN / LOOK / C-LOOK
- 点击"开始调度"
方向是真题必给条件
SCAN 类算法的答案取决于初始方向。同一组请求,SCAN↑ 和 SCAN↓ 的访问序列和总寻道距离完全不同。真题写"磁头当前向磁道号增大方向移动"——务必把方向对齐再跑模拟器。
你会看到什么
- 磁盘视图:磁臂逐步移向目标磁道,经过的磁道高亮
- 折线图:横轴 = 访问顺序,纵轴 = 磁道号——这就是 408 真题要你画的那个图
- 实时数据:当前磁道 / 本次寻道 / 累计寻道距离
调度跑完后出现绿色结果面板:
| 指标 | 说明 |
|---|---|
| 总寻道距离 | 所有移动距离之和 |
| 平均寻道长度 | = 总寻道 ÷ 请求数(真题第二问常考) |
| 总寻道时间 | = 总寻道 × 每道耗时(ms) |
| 磁头访问序列 | 完整文本,直接和手算结果对照 |
对比不同算法(最有价值的功能)
- 用 FCFS 跑完 → 看到折线图
- 切换到 SSTF → 点"开始调度"重新跑
- 折线图叠加显示,不同算法不同颜色
你会直观地看到:
- 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 改良:到最远请求后跳回最近未处理请求 |
三句话记全
- FCFS 公平,SSTF 贪心——不依赖方向
- SCAN/C-SCAN 到端点,LOOK/C-LOOK 不到端点——这是唯一区别
- 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 → 方向 ↑ (增) → 依次选算法跑。
| 算法 | 访问序列 | 总寻道距离 | 平均寻道 |
|---|---|---|---|
| FCFS | 2 → 0 → 4 → 1 → 3 → 0 | 2+4+3+2+3 = 14 | 2.8 |
| SSTF | 2 → 1 → 0 → 0 → 3 → 4 | 1+1+0+3+1 = 6 | 1.2 |
| SCAN↑ | 2 → 3 → 4 → 1 → 0 → 0 | 1+1+3+1+0 = 6 | 1.2 |
| LOOK↑ | 2 → 3 → 4 → 1 → 0 → 0 | 1+1+3+1+0 = 6 | 1.2 |
为什么 SCAN 和 LOOK 结果一样?
因为最大请求 4 = 最大磁道号 4。把最大请求改成 3,SCAN 仍要去磁道 4 再折返,而 LOOK 在 3 就折返——总距离立刻不同。在模拟器里改一下请求就能验证。
真题 2:访问时间计算题
题目:磁盘转速 15000 RPM,平均寻道时间 6ms,每磁道 500 扇区,扇区大小 512B。读取 10KB 连续数据需要多少时间?
解题:
用模拟器验算:齿轮面板设 RPM = 15000、平均寻道 = 6,写入一条数据后看右侧"参数"行:平均旋转延迟 2.00 ms ✓。模拟器的每磁道扇区数小(8 而非 500),单扇区传输时间不同,但旋转延迟这个"强度量"是数值精确的。
推荐使用流程
第一轮:建立直觉(10 分钟)
- 探索结构:在 3D 视图里点扇区、点磁道号、点磁头——搞清楚"盘面 vs 柱面"的物理区别
- 写入 5 条数据:重点看 LBA→CHS 的计算公式 + 寻道/旋转动画
- 用 FCFS 检索:看磁头怎么跑 + 折线图怎么画
第二轮:对比算法(10 分钟)
- 同一组请求,依次跑 FCFS → SSTF → SCAN → LOOK → C-SCAN → C-LOOK
- 看叠加折线图——FCFS 上蹿下跳,SCAN V 形,SSTF 短而紧凑
- 手算一遍总寻道距离,和绿色面板对照
- 切换方向 ↑ / ↓,看 SCAN 访问序列怎么变
第三轮:真题验算(按需)
- 齿轮面板调 RPM / 平均寻道 / 磁道数等参数
- 检索场景设起始磁道和方向
- 跑完后对照绿色面板的磁头访问序列 + 总寻道距离 + 平均寻道长度
- 先把上面两道真题都跑一遍,再上自己的真题卷
考研高频考点速览
| 考点 | 考频 | 关键记忆 |
|---|---|---|
| LBA→CHS 地址计算 | 🔥🔥🔥 | 连除取余法:先除每柱面扇区数,再除每磁道扇区数 |
| 访问时间三分量 | 🔥🔥🔥 | T = 寻道 + 旋转(半圈)+ 传输 |
| 调度算法总寻道距离 | 🔥🔥🔥 | 给队列 + 起点 + 方向,手算访问序列和总距离 |
| SCAN vs LOOK 折返位置 | 🔥🔥 | SCAN 到端点,LOOK 到最远请求 |
| SSTF 饥饿问题 | 🔥🔥 | 远处请求可能永远不被服务(贪心的代价) |
| CHS 地址格式 | 🔥 | (柱面, 盘面, 扇区)——先柱面是因为寻道以柱面为单位 |