考研学习
解题方法操作系统

操作系统第 5 章:输入/输出(I/O)管理

408 操作系统「输入/输出(I/O)管理」复习:核心知识点、真题题型、通用解法与易错点。

Last updated on

本章对照本站本章的 408 真题 和 408 模拟选择题 整理。本站把真题分成 I/O 管理基础、设备独立软件、外存管理 三部分;模拟题进一步细化到 I/O 控制方式、应用程序接口、缓冲、设备分配、SPOOLing、设备驱动、磁盘、磁盘调度、SSD。(Any Docs)

这一章看起来知识点比较碎,但实际上 408 的命题高度集中。真正需要建立的是下面这条主线:

用户发出 I/O 请求 → 操作系统 I/O 软件各层处理 → 驱动程序控制设备 → 中断 / DMA 完成传输 → 缓冲与设备独立性提高效率 → 磁盘调度进一步降低机械访问时间。

其中最值得重点掌握的三大块是:

  1. I/O 软件层次、驱动程序、中断和 DMA:选择题核心
  2. 单缓冲 / 双缓冲时间计算:经典计算题
  3. 磁盘调度 + 磁盘结构 + 访问时间:本章最重要综合题

一、先把整章框架搭起来

可以把 I/O 系统想成下面这条链:

用户程序

↓

用户层 I/O 软件

↓

设备独立性软件

↓

设备驱动程序

↓

中断处理程序

↓

设备控制器

↓

I/O 设备

这里最重要的问题是:

一道题问“谁完成这个工作”,必须先判断工作离硬件有多近。

越往上越“通用”,越往下越“设备相关”。


二、题型一:I/O 软件层次与一次 I/O 到底怎么走

这是本章非常稳定的选择题考点。

1. 四层 I/O 软件

从用户向硬件方向:

用户层 I/O 软件 → 设备独立性软件 → 设备驱动程序 → 中断处理程序

【2012 年 408 真题】

题目问:

操作系统 I/O 子系统由四个层次组成,合理的排列顺序是什么?

答案:

用户级 I/O 软件 → 设备无关软件 → 设备驱动程序 → 中断处理程序。

(Any Docs)

这个顺序不能死背,要理解。

用户层 I/O 软件

离应用最近,例如:

  • I/O 库函数
  • 格式化输入输出
  • 用户态接口

典型思想:

“用户想做什么?”


设备独立性软件

核心是:

把各种不同设备抽象成统一接口。

负责的典型工作:

  • 逻辑设备名
  • 设备保护
  • 设备分配
  • 缓冲
  • SPOOLing
  • 统一错误处理
  • 将逻辑设备映射到物理设备

设备驱动程序

核心是:

把抽象 I/O 命令翻译成具体硬件操作。

比如上层说:

“读取逻辑块 100530”

驱动程序可能要进一步算出:

哪个柱面? 哪个磁头? 哪个扇区? 控制器寄存器写什么?


中断处理程序

最靠近硬件。

设备完成工作后:

设备控制器 → 发中断 → CPU → 中断处理程序。


三、题型二:用户发出 I/O 请求以后,谁先谁后?

【2011 年 408 真题】

题目:

用户程序发出磁盘 I/O 请求后,系统正确的处理流程是什么?

答案:

用户程序 → 系统调用处理程序 → 设备驱动程序 → 中断处理程序。

(Any Docs)

这条链非常重要。

实际上可以展开成:

① 用户程序

例如执行:

read()

但用户程序不能直接操作磁盘寄存器。

↓

② 系统调用

CPU 从用户态进入内核态。

↓

③ 设备独立性软件 / I/O 子系统

检查:

  • 参数是否合法
  • 权限是否合法
  • 设备状态
  • 缓冲区
  • 请求队列

↓

④ 设备驱动程序

设置:

  • 设备寄存器
  • DMA 参数
  • 读写方向
  • 地址
  • 数据量

并启动设备。

↓

⑤ 设备执行

↓

⑥ 设备完成 → 发中断

↓

⑦ 中断处理程序

↓

⑧ 唤醒等待进程


一个非常常见的坑

很多同学会写:

用户程序 → 驱动程序 → 系统调用

这是错的。

用户程序没有资格直接调用硬件驱动完成特权操作。

一定先:

系统调用进入内核。


四、题型三:到底是谁最先得到键盘输入?

【2010 年 408 真题】

题目:

本地用户通过键盘登录系统时,首先获得键盘输入信息的程序是谁?

选项包括:

  • 命令解释程序
  • 中断处理程序
  • 系统调用服务程序
  • 用户登录程序

答案是:

中断处理程序。

(Any Docs)

为什么?

按下键盘以后:

键盘控制器检测按键

↓

向 CPU 发中断

↓

CPU 进入键盘中断服务程序

↓

读取键盘控制器数据

↓

再经过驱动程序 / 终端系统

↓

最后才可能交给登录程序或 Shell。

所以题目看到:

“首先获得设备数据”

高度警惕:

中断处理程序。


五、题型四:系统调用、驱动程序、中断程序分别干什么

这是这一章最容易混的一组概念。

可以记成:

层次核心问题
系统调用用户想干什么
设备独立软件用哪个逻辑设备、如何统一管理
驱动程序这个具体硬件该怎么干
中断程序硬件干完以后怎么办

【2013 年 408 真题】

题目:

把磁盘逻辑地址转换成柱面号、磁头号和扇区号,是哪个程序完成?

答案:

设备驱动程序。

(Any Docs)

原因非常重要:

只有驱动程序真正了解具体硬件。

例如:

  • 一柱面多少磁道?
  • 一磁道多少扇区?
  • 设备寄存器怎么控制?

这些都是设备相关信息。

所以只要题目出现:

“将抽象操作转成硬件相关操作”

基本找:

设备驱动程序。


六、题型五:I/O 控制方式——轮询、中断、DMA

这一部分通常以判断题、选择题出现,也可能和组成原理结合。

可以把 I/O 控制方式理解成:

CPU 到底参与数据搬运到什么程度?


1. 程序直接控制 / 程序查询方式

CPU 不断问:

“设备好了没有?”

没好:

继续问。

好了:

CPU 自己搬数据。

特点:

  • 硬件简单
  • CPU 利用率低
  • CPU 大量忙等

2. 中断驱动方式

CPU 启动设备后先去干别的。

设备完成后:

“I/O 操作已完成,可以由 CPU 继续处理。”

于是产生中断。

CPU 再来处理数据。

优点:

CPU 不需要一直轮询。

缺点:

如果高速设备每传一个字节都中断一次:

CPU 会被中断淹没。


3. DMA

DMA 的核心:

让设备与内存直接成块传输数据。

CPU 只负责:

  1. 初始化 DMA
  2. 设置主存地址
  3. 设置数据量
  4. 设置传输方向
  5. 启动 DMA

然后 DMA 自己搬。

完成后:

DMA 发一个中断通知 CPU。


七、2017 年 DMA 顺序题——必须会

【2017 年 408 真题】

给出:

① DMA 控制器发出中断请求 ② 初始化 DMA 控制器并启动磁盘 ③ 从磁盘传输一块数据到内存缓冲区 ④ 执行 DMA 结束中断服务程序

要求排序。

正确顺序:

② → ③ → ① → ④

(Any Docs)

逻辑就是:

CPU 设置 DMA

↓

DMA 开始搬数据

↓

DMA 搬完

↓

DMA 发中断

↓

CPU 执行中断服务程序。


八、DMA 最常见的四个陷阱

本站模拟题里专门考了:

“DMA 整个传输过程中是否完全不需要 CPU、操作系统或中断?”

正确认识是:

错误 1

DMA 完全不需要 CPU。

错。

CPU 需要初始化 DMA。


错误 2

DMA 完全不需要操作系统。

错。

设备驱动仍然需要:

  • 设置 DMA
  • 申请缓冲区
  • 管理权限
  • 处理完成事件

错误 3

DMA 不产生中断。

错。

通常:

一批数据传输完成后产生一次中断。


正确本质

DMA 减少的是:

CPU 对每个字 / 每个字节数据传输的参与。

而不是:

CPU 从此与 I/O 完全无关。

本站模拟题也明确考了这一点。(Any Docs)


九、题型六:中断中哪些事情硬件做,哪些操作系统做

【2020 年 408 真题】

题目给出:

I. 保存被中断程序的中断点 II. 提供中断服务 III. 初始化中断向量表 IV. 保存中断屏蔽字

问哪些是操作系统完成的。

答案:

II、III、IV。

(Any Docs)

这里必须知道:

中断点

通常就是当前程序下一条要执行的位置,比如 PC。

发生中断时:

硬件自动保存关键断点信息。

而:

  • 中断服务程序
  • 中断向量表初始化
  • 更多现场保存和恢复

主要由操作系统处理。


十、题型七:设备独立性——“逻辑设备”与“物理设备”

这是本章非常高频的概念题。

最核心一句话

应用程序不依赖具体物理设备。

应用程序使用:

逻辑设备名

操作系统再映射成:

物理设备。


【2009 年 408 真题】

题目:

程序员使用系统调用打开 I/O 设备时,通常使用什么设备标识?

答案:

逻辑设备名。

(Any Docs)


【2020 年 408 真题】

题目问设备独立性。

一个错误说法是:

更换物理设备后必须修改访问该设备的应用程序。

这是错的。

因为理想状态是:

应用程序

↓

逻辑设备名

↓

逻辑设备表

↓

物理设备

所以替换同类打印机:

改映射 / 驱动即可。

应用程序不用改。(Any Docs)


十一、设备独立性和驱动程序独立性千万别混

网站模拟题有一道非常好的题:

“设备独立性是不是指设备驱动程序独立于物理设备?”

答案:

不是。

恰恰相反:

驱动程序高度依赖具体设备。

真正独立的是:

用户程序。

所以:

用户程序:设备无关

设备驱动:设备相关

(Any Docs)


十二、题型八:设备分配

【2023 年 408 真题】

题目问设备分配需要考虑:

I. 设备类型 II. 访问权限 III. 占用状态 IV. 逻辑设备与物理设备映射关系

答案:

四个都要考虑。

(Any Docs)

为什么?

例如请求:

“提交打印请求。”

操作系统首先要判断:

设备类型

是:

  • 独占设备?
  • 共享设备?
  • 虚拟设备?

权限

这个进程能不能访问?

状态

设备是否正被别人占用?

映射

用户说的是逻辑打印机,到底对应哪台物理打印机?


十三、设备分配数据结构题

模拟题里考:

  • SDT:系统设备表
  • DCT:设备控制表
  • COCT:控制器控制表
  • CHCT:通道控制表

设备分配顺序:

SDT → DCT → COCT → CHCT

(Any Docs)

理解:

先从系统层面找:

哪个设备?

然后:

这个设备自身能不能分?

然后:

它连接的控制器能不能分?

最后:

所属通道能不能分?


十四、题型九:缓冲——本章最重要的计算题之一

缓冲的本质非常简单:

解决生产者和消费者速度不匹配。

比如:

磁盘:慢

CPU:快

如果没有缓冲:

CPU 经常等磁盘。

有缓冲:

磁盘先把数据放到缓冲区。

CPU 再拿。


十五、先理解三个时间

以后所有缓冲计算都设:

  • 设备 → 系统缓冲区:时间 T
  • 系统缓冲区 → 用户区:时间 M
  • CPU 处理数据:时间 C

十六、单缓冲到底哪里能并行?

这是最容易算错的地方。

假设只有一个系统缓冲区。

处理第 1 块:

设备读取第 1 块 → 缓冲区

↓

缓冲区 → 用户区

↓

CPU 处理

但 CPU 处理第 1 块期间:

系统缓冲区已经空出来了。

于是:

设备可以开始读第 2 块。

所以:

设备读下一块,可以和 CPU 处理上一块并行。

但是:

缓冲区向用户区复制数据的时候,同一个缓冲区正在被访问,设备不能同时往里面写下一块。

因此稳定周期为:

对于 n 块,完整时间可以写成:

注意这是标准单缓冲模型。


十七、2011 年真题——单缓冲 / 双缓冲经典题

【2011 年 408 真题】

题目:

某文件有 10 个磁盘块。

每块:

磁盘 → 缓冲区:

缓冲区 → 用户区:

CPU 分析:

问单缓冲和双缓冲时间。

真题答案:

单缓冲:1550 μs 双缓冲:1100 μs

(Any Docs)


单缓冲

代入:

得到:


十八、双缓冲为什么快?

现在有:

缓冲区 A

缓冲区 B

例如:

磁盘 → A:第 1 块

接着:

CPU 处理 A 中对应的数据

同时:

磁盘 → B:第 2 块

然后交换。

所以可以形成真正的流水。

一边:

输入下一块

另一边:

搬运并处理上一块。

所以稳定流水周期为:

总时间:

代入:


十九、需要直接记住的两个缓冲模型

单缓冲

稳定一块平均时间:

n 块完整时间:


双缓冲

稳定周期:

完整时间:

这两个式子非常值得记。

但考试时最好还是:

画流水线。

因为题目如果改变“数据复制是否可忽略”“用户区是否也是缓冲区”等条件,直接套式子容易错。


二十、2013 年真题——只有 2 块数据也能考

【2013 年 408 真题】

题目:

外设 → 系统缓冲:

系统缓冲 → 用户工作区:

CPU 分析:

问读取并分析 2 块数据最短时间。

答案:

300。

(Any Docs)

具体过程:

第 1 块进入缓冲:

复制到用户区:

现在:

之后 CPU 分析第 1 块,时间 90。

与此同时:

磁盘读取第 2 块。

整个下一阶段受慢的一边控制。

最后还要处理第 2 块。

所以:

真正的思考方式不是死记 300,而是:

找哪些阶段可以重叠。


二十一、磁盘高速缓存和缓冲区不要混

【2015 年 408 真题】

题目:

在系统内存中设置磁盘缓冲区的主要目的是什么?

答案:

减少磁盘 I/O 次数。

(Any Docs)

不是:

  • 减少磁头本身一次寻道距离
  • 提高磁盘物理可靠性
  • 实现设备无关性

而是:

原来要访问磁盘,现在可能直接从内存命中。


二十二、磁盘 Cache 在哪里?

模拟题有一个很经典的陷阱:

“磁盘高速缓存是在磁盘中设置的缓冲区。”

错误。

这里课程意义上的磁盘高速缓存通常是:

内存中的一部分空间,用来缓存磁盘块。

如果命中:

不需要启动磁盘。

(Any Docs)


二十三、提前读和延迟写

也是很容易考判断。

提前读

猜:

已经读了块 100,很可能马上要读 101。

于是:

顺便读 101、102……

依赖:

顺序局部性。

所以随机访问很难有效提前读。


延迟写

修改数据后:

先改内存中的缓存。

暂时不立即写盘。

之后:

  • 缓冲区被淘汰
  • 定期刷新
  • 系统同步

再写盘。

所以模拟题中:

“随机写就不能使用延迟写”

是错的。(Any Docs)


二十四、题型十:SPOOLing——概念题必考区

SPOOLing 可以理解成:

用高速磁盘模拟低速独占设备。

最典型:

打印机。


二十五、为什么打印机可以被“共享”?

假设 10 个进程都想打印。

现实中:

一台打印机一次只能真正打印一个作业。

但操作系统让每个进程认为:

“打印请求已经提交给系统。”

实际上:

进程 A

↓

输出井

进程 B

↓

输出井

进程 C

↓

输出井

……

然后后台输出进程:

输出井

↓

输出缓冲

↓

打印机

逐个打印。

因此:

一个独占设备被虚拟成多个逻辑设备。


二十六、SPOOLing 的组成

典型结构:

  • 输入井
  • 输出井
  • 输入缓冲区
  • 输出缓冲区
  • 预输入进程
  • 缓输出进程

其中:

井一般在外存。

缓冲区:

在内存。

这是常考区别。


二十七、2016 年 SPOOLing 真题

【2016 年 408 真题】

题目问哪项错误:

A. 需要外存支持 B. 需要多道程序设计支持 C. 多个作业可以共享一台独占设备 D. 由用户作业控制设备与输入 / 输出井之间的数据传送

答案:

D。

因为:

设备和井之间的数据传输由操作系统控制。

不是用户进程直接控制。(Any Docs)


二十八、SPOOLing 三句话总结

看到 SPOOLing,优先想到:

第一:

外存上的输入井 / 输出井。

第二:

把独占设备虚拟成逻辑共享设备。

第三:

数据传输由操作系统后台进程控制。


二十九、题型十一:磁盘结构和物理地址换算

这一部分既能出选择题,也非常适合综合题。

磁盘典型结构:

柱面 → 磁头 / 磁道 → 扇区。

如果:

  • 每柱面有 H 个磁道
  • 每磁道有 S 个扇区

则每柱面:

个扇区。


三十、逻辑块号转 CHS 的万能方法

设逻辑扇区号为 L。

首先算柱面:

剩余:

磁头号:

扇区号:

注意:

是否从 0 编号必须看题目。


三十一、模拟题:5687 号记录放哪里?

本站模拟题:

80 个柱面,每柱面 12 条磁道,每磁道 16 个扇区。记录大小等于扇区大小,从 0 编号。问第 5687 号记录在哪里。

每柱面:

将 5687 分解:

然后:

所以:

第 29 柱面、第 7 磁道、第 7 扇区。

(Any Docs)

这类题本质就是:

不断做整除和取余。


三十二、2019 年综合真题——这一题非常重要

【2019 年 408 真题】

题目给:

  • 300 个柱面
  • 每柱面 10 个磁道
  • 每磁道 200 个扇区
  • 每扇区 512 B
  • 每簇 2 个扇区

问:

  1. 磁盘容量
  2. SSTF 下几个簇的访问顺序
  3. 某簇对应的柱面 / 磁头 / 扇区,并问谁完成地址转换

(Any Docs)

这题几乎把整章串起来了。


第 1 问:容量

直接乘:

得到:

如果:

则:


第 2 问:先把簇号变成柱面号

每磁道:

个簇。

每柱面:

个簇。

因此:

  • 100260 → 柱面 100
  • 60005 → 柱面 60
  • 101660 → 柱面 101
  • 110560 → 柱面 110

磁头原本在:

柱面 85。

SSTF:

85 → 100 → 101 → 110 → 60

因此访问簇:

100260 → 101660 → 110560 → 60005

(Any Docs)


第 3 问:100530 簇

因为每柱面 1000 簇:

所以柱面:

100。

每磁道 100 簇:

所以磁头:

5。

磁道内第:

30 个簇。

一个簇 2 扇区:

所以占:

第 60、61 扇区。

转换工作由:

设备驱动程序完成。

这道题非常典型,因为它把:

磁盘结构 + 地址转换 + SSTF + 驱动程序

四个知识点揉在了一起。(Any Docs)


三十三、题型十二:磁盘调度——本章最高频计算题

必须熟练区分:

算法核心思想
FCFS按到达顺序
SSTF每次找最近
SCAN电梯,来回扫描
LOOK扫到最后一个请求就回头
CSCAN永远一个方向服务,另一端循环回来
CLOOK到最后一个请求后直接循环到另一侧请求

三十四、FCFS

最简单。

例如请求:

100 → 20 → 180 → 30

就严格这样访问。

优点:

  • 公平
  • 简单
  • 不饥饿

缺点:

  • 寻道可能很长

三十五、SSTF

Shortest Seek Time First。

每一步都:

找距离当前磁头最近的请求。

例如磁头:

100

请求:

90,108,142

距离:

10,8,42

所以先:

108。

然后重新算。

注意:

每移动一步,都必须重新计算。

不能一开始排序一次就结束。


三十六、2021 年 SSTF 真题

【2021 年 408 真题】

磁头:

184

请求:

184、187、176、182、199

SSTF:

184

↓

182

↓

187

↓

176

↓

199

总距离:

答案:

41。

(Any Docs)


三十七、SSTF 最大缺点

如果磁头附近不断来新请求:

很远的请求可能一直等。

这叫:

饥饿。

并容易出现:

磁臂黏着。


三十八、SCAN——电梯算法

假设:

磁头在 105

方向:

磁道号增加

请求:

35,45,12,68,110,180,170,195

【2009 年 408 真题】

先往大方向:

110 → 170 → 180 → 195

然后反向:

68 → 45 → 35 → 12

所以:

110 → 170 → 180 → 195 → 68 → 45 → 35 → 12

(Any Docs)


三十九、SCAN 和 LOOK 的核心区别

这是模拟题很爱考的变式。

假设当前向右,最右边物理磁道是 199。

但最右请求只有 170。

SCAN

通常:

扫到物理端点,再回头。

也就是:

到 199 再返回。

LOOK

只“看”请求。

所以:

到 170 就回头。

因此 LOOK 通常少走一些路。

本站模拟题中“改进的扫描算法”就是 LOOK,并考了这一点。(Any Docs)


四十、2015 年 SCAN 真题

【2015 年 408 真题】

磁道:

0~199。

当前磁头:

58。

“从外侧向内侧移动”。

题目特别说:

最外侧磁道号是 0。

因此:

外 → 内

等价于:

磁道号增大。

请求:

130、42、180、15、199。

先向内:

58 → 130 → 180 → 199

再反向:

199 → 42 → 15

所以移动距离:

加:

得到:

答案:

325。

(Any Docs)


四十一、这里有一个特别重要的坑

不要想当然地认为:

“向内就是编号减小。”

磁道编号完全是题目规定的。

所以磁盘调度题第一件事:

把方向翻译成数字增加 / 数字减少。


四十二、CSCAN——循环扫描

与 SCAN 不同:

SCAN:

→ → → 到头 ← ← ←

CSCAN:

→ → → 到头 跳回另一头 → → →

只有一个服务方向。


四十三、2024 年 CSCAN 真题

【2024 年 408 真题】

磁道:

0~399。

刚访问完:

200。

向磁道号减小方向。

请求:

300、120、110、0、160、210、399。

先向小:

160 → 120 → 110 → 0

到 0。

然后循环到:

399

再继续向小:

300 → 210

磁头移动:

加上返回另一端:

再从 399 到 210:

因此:

答案:

788。

(Any Docs)


四十四、为什么 2024 这题特别值得掌握

因为它明确给了:

0~399。

所以:

CSCAN 的回卷距离必须算。

很多人只计算请求之间距离,会漏掉:

这一大段。


四十五、2010 年综合大题——磁盘题王之一

【2010 年 408 真题】

题目给:

  • CSCAN
  • 2 KB 内存
  • 16384 个磁盘块
  • 转速 6000 r/min
  • 每磁道 100 扇区
  • 相邻磁道平均移动 1 ms
  • 当前磁头 100
  • 向磁道号增大
  • 请求:50、90、30、120
  • 每个磁道随机读取 1 个扇区

问:

  1. 空闲块怎么管理
  2. 总访问时间
  3. 换成 Flash 后用什么算法

(Any Docs)

这道题必须拆开做。


四十六、第 1 问:位图

内存:

位数:

刚好:

每磁盘块用 1 bit。

所以使用:

位图 / 位示图法。


四十七、第 2 问:磁盘访问时间

磁盘总访问时间通常包括:

也就是:

寻道 + 旋转延迟 + 数据传输。


1. 寻道时间

真题标准解答采用的服务顺序:

120 → 30 → 50 → 90。

对应移动:

所以:

这一点本站和其他真题资料给出的标准答案一致。(Any Docs)

这里有个值得特别留意的地方:

2010 真题没有像 2024 真题那样给出完整物理磁道范围,因此标准答案直接按 120 → 30 计算循环距离;而当题目明确给出 0~399 这样的物理端点时,像 2024 真题那样,CSCAN 回卷的端点距离就必须计入。

所以以后不要机械套:

CSCAN 一定怎么算。

而要看题目有没有明确给:

磁道端点。


2. 平均旋转延迟

转速:

每秒:

一圈:

随机扇区平均等待半圈:

4 次:


3. 数据传输时间

每圈:

100 个扇区。

一圈 10 ms。

所以 1 扇区:

4 扇区:

于是:


四十八、磁盘访问时间万能公式

给定转速 N,单位 r/min。

一圈时间:

平均旋转延迟:

每磁道有 S 个扇区。

读取一个扇区:

如果连续读取 k 个扇区:

最终:

这组公式务必会。


四十九、第 3 问:为什么 SSD 用 FCFS 可能更好?

2010 真题问:

换成 Flash / SSD 后,还有必要用 CSCAN 吗?

答案:

可以采用 FCFS。

(Any Docs)

因为机械硬盘的 CSCAN 是为了:

减少磁头来回移动。

但是 SSD:

没磁头。

所以没有:

  • 寻道时间
  • 旋转延迟

这样复杂的机械磁盘调度:

收益大幅下降。

公平简单的:

FCFS

反而可能更适合。


五十、题型十三:物理格式化、分区、逻辑格式化

顺序一定记住:

物理格式化 → 分区 → 逻辑格式化 → 安装操作系统


物理格式化

解决:

这块盘从物理上怎么组织?

例如:

  • 磁道
  • 扇区
  • 扇区控制信息
  • 校验信息

分区

解决:

整块盘分成哪几个逻辑区域?

例如:

C 盘

D 盘


逻辑格式化

解决:

这个分区使用什么文件系统?

例如建立:

  • 根目录
  • 空闲块管理结构
  • 文件系统元数据

五十一、2017 年真题

【2017 年 408 真题】

题目问逻辑格式化做什么:

I. 分区 II. 建立根目录 III. 确定扇区校验码位数 IV. 初始化空闲磁盘块管理结构

正确:

II、IV。

(Any Docs)

原因:

分区:

不属于逻辑格式化。

扇区校验:

更靠近物理格式化。

根目录和空闲空间:

属于文件系统,所以是逻辑格式化。


五十二、2021 年启动大题

【2021 年 408 真题】

题目给出了:

  • ROM 引导程序
  • 磁盘引导程序
  • 分区引导程序
  • OS 初始化程序

问执行顺序。

正确:

ROM 引导 → 磁盘引导 → 分区引导 → 操作系统初始化

(Any Docs)

理解:

开机 CPU 什么都不知道。

只能先执行:

固化在 ROM 中的程序。

ROM 去找:

磁盘第一个扇区 / 主引导记录。

然后:

磁盘引导程序选择分区

↓

分区引导程序

↓

加载 OS

↓

OS 初始化。


五十三、题型十四:SSD

SSD 是目前非常适合继续出新题的部分。

模拟题里已经考了:

  • Flash Translation Layer
  • 擦除块
  • 页
  • 磨损均衡
  • SSD 与 HDD 调度差异。(Any Docs)

五十四、SSD 最重要结构

典型 NAND Flash:

页是读写单位,块是擦除单位。

也就是说:

写:

页级。

擦除:

块级。

因此:

修改一个已经写过的页,往往不能像内存一样原地覆盖。

可能需要:

  1. 写到新页
  2. 更新地址映射
  3. 老页失效
  4. 垃圾回收

五十五、FTL

Flash Translation Layer:

闪存转换层。

主机看到:

逻辑块地址 LBA。

但真正数据可能在:

Flash 某芯片、某块、某页。

FTL 负责:

LBA → Flash 物理地址。

模拟题正确选项也明确指出了这一地址转换功能。(Any Docs)


五十六、磨损均衡

Flash 块:

擦写次数有限。

因此不能永远使用同一批块。

SSD 控制器会尽量让:

各块擦写次数相近。

这就是:

Wear Leveling,磨损均衡。

所以模拟题中:

“优先不断使用更老、已经擦写更多的块”

是错误的。(Any Docs)


五十七、本章最容易混的 10 组概念

建议最后复习时专门检查。

1. 逻辑设备 vs 物理设备

用户:

逻辑设备。

驱动:

物理设备。


2. 设备独立软件 vs 驱动程序

设备独立:

通用。

驱动:

硬件相关。


3. 中断驱动 vs DMA

中断:

数据传输 CPU 参与较多。

DMA:

数据块主要直接在设备和内存之间传输。


4. Cache vs Buffer

Cache:

重点是避免重复访问慢速层。

Buffer:

重点是协调速度差、支持并行。

现实系统中二者功能会有交叉,但考试概念要分清。


5. 输入井 / 输出井 vs 输入 / 输出缓冲区

井:

外存。

缓冲:

内存。


6. 设备独立性 vs 虚拟设备

设备独立性:

用户不依赖具体物理设备。

虚拟设备:

一台物理独占设备看起来变成多台逻辑设备。


7. SCAN vs LOOK

SCAN:

物理端点。

LOOK:

最远请求。


8. CSCAN vs SCAN

SCAN:

来回服务。

CSCAN:

只在一个方向服务。


9. 物理格式化 vs 逻辑格式化

物理:

磁道、扇区。

逻辑:

文件系统。


10. HDD vs SSD

HDD:

寻道 + 旋转。

SSD:

无机械寻道,但有擦除、垃圾回收、磨损等问题。


五十八、从真题看,第 5 章应该怎么分优先级

结合本站目前整理的真题,建议这样复习。

第一梯队:必须熟练

磁盘调度

重点:

  • SSTF
  • SCAN
  • CSCAN
  • LOOK
  • 移动距离

真题出现非常多,包括 2009、2010、2015、2018、2019、2021、2024 等不同角度。(docs.any1.tech)


缓冲计算

重点:

  • 单缓冲
  • 双缓冲
  • 流水并行

2011、2013 均有典型真题。(Any Docs)


I/O 软件层次

一定知道:

系统调用 → 驱动 → 中断

和:

谁负责什么。


第二梯队:选择题高频

  • DMA
  • 中断
  • 设备独立性
  • SPOOLing
  • 驱动程序
  • 磁盘格式化

第三梯队:很适合新题

  • SSD
  • FTL
  • 磨损均衡
  • Cache / 延迟写
  • 设备分配数据结构
  • 网络设备驱动

五十九、总结的“看到题干 → 立刻反应”

以后做题可以建立这种条件反射。

看到:

“逻辑设备名”

想到:

设备独立性。


看到:

“柱面、磁头、扇区转换”

想到:

设备驱动程序。


看到:

“设备完成”

想到:

中断。


看到:

“设备与内存大块数据直接传输”

想到:

DMA。


看到:

“打印机共享”

想到:

SPOOLing。


看到:

“输入井 / 输出井”

想到:

外存。


看到:

“系统缓冲区和 CPU 同时工作”

想到:

画流水线。


看到:

“最近磁道”

想到:

SSTF。


看到:

“像电梯一样”

想到:

SCAN。


看到:

“始终一个方向”

想到:

CSCAN。


看到:

“只到最远请求”

想到:

LOOK / CLOOK。


看到:

“6000 r/min”

马上算:

所以:

平均旋转:


六十、很可能出现的综合新考法

结合现在 408 越来越喜欢跨知识点组合的特点,这一章非常适合这样出题。

预测 1:DMA + 缺页 + I/O

例如:

用户进程读取磁盘文件,目标缓冲区某页尚未装入内存,描述从系统调用、页框分配、DMA、磁盘完成中断到进程重新运行全过程。

这种题实际上把:

第 3 章虚拟内存 + 第 5 章 I/O

结合。


预测 2:文件系统 + 磁盘调度

例如:

给出 inode / 索引块后:

算出要访问的逻辑块。

再要求:

转换成柱面。

最后:

用 SSTF 或 SCAN 求访问顺序。

这就是:

第 4 章 + 第 5 章。

2019 真题已经体现了这种综合化趋势。(Any Docs)


预测 3:缓冲 + DMA + CPU 利用率

例如:

磁盘传输每块需要 100 μs,

DMA 完成中断处理需要 2 μs,

CPU 每块计算 80 μs,

采用双缓冲,

问:

  • 总执行时间
  • CPU 忙碌比例
  • DMA 中断次数。

本质:

流水线 + DMA。


预测 4:SSD 与 HDD 对比

比如给两个请求序列:

要求分别判断:

HDD 用哪个调度算法更好?

以及:

SSD 为什么不一定需要 SSTF / SCAN?

进一步加入:

  • 写放大
  • 垃圾回收
  • 磨损均衡

都完全有可能。


六十一、最后给出一张本章“解题路线图”

遇到第 5 章题,建议按下面判断。

如果是“谁来做”

判断它的位置:

用户接口 → 设备独立软件 → 驱动 → 中断 → 硬件。


如果是“怎么传数据”

判断:

查询 / 中断 / DMA。

问自己:

CPU 是否忙等?

CPU 是否逐个参与数据搬运?

完成后是否发中断?


如果是“缓冲时间”

绝对不要第一反应就加:

先画:

第 1 块 第 2 块 第 3 块

看哪些能重叠。


如果是“磁盘地址”

按:

柱面容量 → 整除得到柱面 → 余数继续除磁道容量 → 得扇区。


如果是“磁盘调度”

先写五件事:

  1. 当前磁头位置
  2. 当前方向
  3. 磁道编号范围
  4. 请求序列
  5. 算法

然后:

先确定访问顺序,再算距离。

绝对不要边想顺序边直接算。


如果是“磁盘时间”

拆成:


如果是“格式化”

记:

物理格式化 → 分区 → 逻辑格式化 → 安装系统。


如果是“SSD”

记:

无机械寻道 + FTL + 页写块擦 + 垃圾回收 + 磨损均衡。


本章真正要达到的水平

不是背“2011 年答案 1550 μs”,也不是背“2024 年答案 788”。

而是看到任何新题,都能马上识别:

它到底是在考 I/O 层次、控制方式、缓冲流水线、设备虚拟化,还是磁盘机械访问模型。

尤其建议把下面 5 道真题作为这一章的核心母题反复做:

2011 单 / 双缓冲:掌握流水并行。 2017 DMA 顺序:掌握 DMA 工作过程。 2019 磁盘综合题:掌握簇号、CHS、SSTF、驱动程序。 2010 磁盘综合题:掌握位图、CSCAN、寻道 / 旋转 / 传输时间、SSD。 2024 CSCAN:掌握循环扫描和端点距离。(docs.any1.tech)

这 5 道吃透以后,第 5 章绝大多数计算题和综合题就已经形成体系了。

On this page

一、先把整章框架搭起来二、题型一:I/O 软件层次与一次 I/O 到底怎么走1. 四层 I/O 软件【2012 年 408 真题】用户层 I/O 软件设备独立性软件设备驱动程序中断处理程序三、题型二:用户发出 I/O 请求以后,谁先谁后?【2011 年 408 真题】一个非常常见的坑四、题型三:到底是谁最先得到键盘输入?【2010 年 408 真题】五、题型四:系统调用、驱动程序、中断程序分别干什么【2013 年 408 真题】六、题型五:I/O 控制方式——轮询、中断、DMA1. 程序直接控制 / 程序查询方式2. 中断驱动方式3. DMA七、2017 年 DMA 顺序题——必须会【2017 年 408 真题】八、DMA 最常见的四个陷阱错误 1错误 2错误 3正确本质九、题型六:中断中哪些事情硬件做,哪些操作系统做【2020 年 408 真题】中断点十、题型七:设备独立性——“逻辑设备”与“物理设备”最核心一句话【2009 年 408 真题】【2020 年 408 真题】十一、设备独立性和驱动程序独立性千万别混十二、题型八:设备分配【2023 年 408 真题】设备类型权限状态映射十三、设备分配数据结构题十四、题型九:缓冲——本章最重要的计算题之一十五、先理解三个时间十六、单缓冲到底哪里能并行?十七、2011 年真题——单缓冲 / 双缓冲经典题【2011 年 408 真题】单缓冲十八、双缓冲为什么快?十九、需要直接记住的两个缓冲模型单缓冲双缓冲二十、2013 年真题——只有 2 块数据也能考【2013 年 408 真题】二十一、磁盘高速缓存和缓冲区不要混【2015 年 408 真题】二十二、磁盘 Cache 在哪里?二十三、提前读和延迟写提前读延迟写二十四、题型十:SPOOLing——概念题必考区二十五、为什么打印机可以被“共享”?二十六、SPOOLing 的组成二十七、2016 年 SPOOLing 真题【2016 年 408 真题】二十八、SPOOLing 三句话总结二十九、题型十一:磁盘结构和物理地址换算三十、逻辑块号转 CHS 的万能方法三十一、模拟题:5687 号记录放哪里?三十二、2019 年综合真题——这一题非常重要【2019 年 408 真题】第 1 问:容量第 2 问:先把簇号变成柱面号第 3 问:100530 簇三十三、题型十二:磁盘调度——本章最高频计算题三十四、FCFS三十五、SSTF三十六、2021 年 SSTF 真题【2021 年 408 真题】三十七、SSTF 最大缺点三十八、SCAN——电梯算法【2009 年 408 真题】三十九、SCAN 和 LOOK 的核心区别SCANLOOK四十、2015 年 SCAN 真题【2015 年 408 真题】四十一、这里有一个特别重要的坑四十二、CSCAN——循环扫描四十三、2024 年 CSCAN 真题【2024 年 408 真题】四十四、为什么 2024 这题特别值得掌握四十五、2010 年综合大题——磁盘题王之一【2010 年 408 真题】四十六、第 1 问:位图四十七、第 2 问:磁盘访问时间1. 寻道时间2. 平均旋转延迟3. 数据传输时间四十八、磁盘访问时间万能公式四十九、第 3 问:为什么 SSD 用 FCFS 可能更好?五十、题型十三:物理格式化、分区、逻辑格式化物理格式化分区逻辑格式化五十一、2017 年真题【2017 年 408 真题】五十二、2021 年启动大题【2021 年 408 真题】五十三、题型十四:SSD五十四、SSD 最重要结构五十五、FTL五十六、磨损均衡五十七、本章最容易混的 10 组概念1. 逻辑设备 vs 物理设备2. 设备独立软件 vs 驱动程序3. 中断驱动 vs DMA4. Cache vs Buffer5. 输入井 / 输出井 vs 输入 / 输出缓冲区6. 设备独立性 vs 虚拟设备7. SCAN vs LOOK8. CSCAN vs SCAN9. 物理格式化 vs 逻辑格式化10. HDD vs SSD五十八、从真题看,第 5 章应该怎么分优先级第一梯队:必须熟练磁盘调度缓冲计算I/O 软件层次第二梯队:选择题高频第三梯队:很适合新题五十九、总结的“看到题干 → 立刻反应”六十、很可能出现的综合新考法预测 1:DMA + 缺页 + I/O预测 2:文件系统 + 磁盘调度预测 3:缓冲 + DMA + CPU 利用率预测 4:SSD 与 HDD 对比六十一、最后给出一张本章“解题路线图”如果是“谁来做”如果是“怎么传数据”如果是“缓冲时间”如果是“磁盘地址”如果是“磁盘调度”如果是“磁盘时间”如果是“格式化”如果是“SSD”本章真正要达到的水平