1. 磁盘管理与IO设备的知识框架拆解
1.1 为什么这块内容总让人“学了就忘”
操作系统里的磁盘管理和IO设备这两块,很多人第一遍学的时候觉得概念不多,不就是磁盘调度算法加个中断处理吗?但真到做题或者面试的时候,发现完全串不起来。我当初复习这块内容的时候也踩过这个坑,后来才想明白问题出在哪:教材通常把“磁盘管理”和“IO设备”分成两个独立章节讲,但实际上这两块是高度耦合的。磁盘本身就是一种IO设备,而IO设备的管理又高度依赖中断机制和DMA,DMA又直接跟磁盘的数据传输绑在一起。你如果分开背,考试一综合就懵。
所以这篇复习笔记的核心思路就是:把磁盘管理和IO设备当成一个整体来梳理,沿着“数据从磁盘到内存再到CPU”这条主线,把沿途涉及的所有机制串起来。这样你记住的不是零散的知识点,而是一条完整的数据通路。
1.2 复习路径的设计逻辑
我把整个复习路径分成四层,从下往上依次是:
- 物理层:磁盘的物理结构、扇区、柱面、磁头这些基础概念,以及IO设备的分类和组成
- 调度层:磁盘调度算法(FCFS、SSTF、SCAN、C-SCAN等),解决的是“多个请求排队时先服务谁”的问题
- 传输层:中断处理、DMA方式、缓冲技术,解决的是“数据怎么高效地从设备搬到内存”的问题
- 管理层:设备分配、SPOOLing技术、磁盘空间管理,解决的是“多个进程怎么共享设备资源”的问题
这个分层的好处是,每一层解决的问题不一样,你不会把“调度算法”和“设备分配”搞混。下面我逐层展开,把每一层的核心细节和容易踩的坑都讲清楚。
1.3 复习时最容易混淆的几个概念
在正式展开之前,先把几个高频混淆点列出来,你在复习的时候可以对照检查:
| 混淆点 | 常见错误理解 | 正确理解 |
|---|---|---|
| 中断 vs 陷入 | 以为是一回事 | 中断是外部事件触发,陷入是程序内部主动触发(如系统调用) |
| DMA vs 通道 | 以为通道就是多个DMA | 通道是一个独立的处理器,能执行通道程序,DMA只是数据搬运工 |
| 缓冲 vs 缓存 | 混着用 | 缓冲解决速度不匹配,缓存解决访问频率不匹配 |
| 磁盘调度 vs 页面置换 | 以为都是调度 | 磁盘调度管的是IO请求顺序,页面置换管的是内存中页面的去留 |
这几个点我在做题的时候反复错过,后来专门整理了一张对比表贴在书桌前,效果比反复翻书好得多。
2. 磁盘物理结构与IO设备基础
2.1 磁盘的物理结构:从盘面到扇区
磁盘的物理结构是所有磁盘管理算法的前提,不理解物理结构,后面调度算法的计算就是死记公式。我用自己的话重新捋一遍:
一个磁盘驱动器里面有多个盘片(platter),每个盘片有两个盘面(surface),每个盘面有一个磁头(head)负责读写。盘面上划分成很多同心圆,每个圆叫一个磁道(track),磁道再划分成一段一段的扇区(sector)。所有盘面上相同半径的磁道组成一个柱面(cylinder)。
这里有个关键点:寻道时间 > 旋转延迟 > 传输时间。寻道时间是磁头移动到目标磁道的时间,旋转延迟是等待目标扇区转到磁头下方的时间,传输时间是实际读写数据的时间。这三个时间加起来就是一次磁盘访问的总时间。为什么磁盘调度算法主要优化寻道时间?因为寻道时间是机械运动,最慢,通常是毫秒级;旋转延迟也是机械运动,但比寻道快;传输时间是电子信号,纳秒到微秒级。所以调度算法的核心目标就是减少磁头来回移动的距离。
注意:有些教材把旋转延迟和传输时间合并叫“延迟时间”,考试的时候看清楚题目问的是哪个。
2.2 IO设备的分类与组成
IO设备可以从多个维度分类,但复习的时候重点掌握两种分法:
按传输速率分:低速设备(键盘、鼠标)、中速设备(打印机)、高速设备(磁盘、网卡)。这个分类的意义在于,不同速率的设备适合不同的IO控制方式。低速设备用中断就够了,高速设备必须上DMA。
按信息交换单位分:块设备(以数据块为单位,如磁盘)和字符设备(以字符为单位,如键盘)。块设备支持随机访问,字符设备通常是顺序访问。
IO设备的组成包括设备控制器和设备本身两部分。设备控制器是CPU和设备之间的接口,它接收CPU发来的命令,控制设备执行,并向CPU报告状态。设备控制器里有数据寄存器、控制寄存器和状态寄存器,CPU通过读写这些寄存器来操控设备。
2.3 IO端口与内存映射IO
CPU怎么跟设备控制器通信?两种方式:
- 端口映射IO(Port-Mapped IO):设备控制器里的寄存器占用独立的IO端口地址空间,CPU用专门的IO指令(如IN/OUT)访问。优点是IO端口空间独立,不占内存地址;缺点是需要专门的指令。
- 内存映射IO(Memory-Mapped IO):设备寄存器映射到内存地址空间,CPU用普通的访存指令就能访问。优点是编程方便,不需要专门指令;缺点是占用了内存地址空间。
现在大多数系统采用内存映射IO,因为编程模型统一,而且可以用指针直接操作。考试的时候如果问两种方式的区别,从“地址空间是否独立”和“是否需要专门指令”两个角度答就够了。
2.4 设备控制器的核心功能
设备控制器不是简单的“转接头”,它承担了几个关键功能:
- 接收和识别CPU命令:解析CPU发来的控制信号,比如读、写、寻道
- 数据缓冲:设备和控制器的速度不匹配,控制器里通常有数据缓冲区
- 差错控制:检测数据传输过程中的错误,比如校验码不匹配
- 状态报告:向CPU报告设备当前状态,比如就绪、忙、错误
理解设备控制器的功能,对后面理解中断处理和DMA非常关键。因为中断信号就是设备控制器发出的,DMA控制器也是设备控制器的一部分(或与设备控制器协作)。
3. 磁盘调度算法:从FCFS到C-LOOK的完整推演
3.1 先来先服务(FCFS):最简单但不一定最快
FCFS就是按请求到达的顺序依次服务。优点是公平,不会产生饥饿;缺点是磁头移动距离可能很大,平均寻道时间长。
举个例子:磁头当前在100号磁道,请求队列是:55, 58, 39, 18, 90, 160, 150, 38, 184。按FCFS,磁头移动顺序是100→55→58→39→18→90→160→150→38→184,总移动距离是:
|100-55| + |55-58| + |58-39| + |39-18| + |18-90| + |90-160| + |160-150| + |150-38| + |38-184| = 45 + 3 + 19 + 21 + 72 + 70 + 10 + 112 + 146 = 498
这个数字在考试里经常让你算,所以一定要练熟。FCFS的优点是简单公平,缺点是性能差,实际系统中很少单独使用。
3.2 最短寻道时间优先(SSTF):贪心策略的得与失
SSTF每次选择离当前磁头最近的请求。还是上面的例子,当前100,最近的请求是90(距离10),然后从90开始找最近的:58(距离32),然后39(距离19),然后38(距离1),然后18(距离20),然后55(距离37),然后150(距离95),然后160(距离10),然后184(距离24)。总距离:
10 + 32 + 19 + 1 + 20 + 37 + 95 + 10 + 24 = 248
比FCFS的498少了一半。但SSTF有个致命问题:饥饿。如果不断有离磁头近的请求到达,远处的请求可能永远得不到服务。考试里经常问“SSTF可能导致什么问题”,答“饥饿”就对了。
3.3 扫描算法(SCAN):电梯算法的精髓
SCAN算法也叫电梯算法,磁头朝一个方向移动,沿途服务所有请求,到达最边缘后掉头。这个算法的关键是方向和折返点。
还是上面的例子,假设磁头当前在100,向磁道号增大的方向移动,请求队列不变。SCAN的服务顺序是:100→150→160→184(到达最边缘,假设最大磁道是199),然后掉头:90→58→55→39→38→18。总距离:
(184-100) + (184-18) = 84 + 166 = 250
注意这里有个细节:SCAN到达边缘后掉头,但掉头后只服务到最远的请求就停了,不需要再走到0。所以总距离是“从起点到边缘”加上“从边缘到最远请求”。
SCAN的优点是避免了饥饿,因为每个请求最多等磁头走一个来回。缺点是边缘磁道的请求等待时间可能比中间的长。
3.4 循环扫描(C-SCAN):更均匀的等待时间
C-SCAN在SCAN的基础上做了改进:磁头只朝一个方向服务,到达边缘后直接快速返回起点,返回途中不服务任何请求。这样所有请求的等待时间更均匀。
还是上面的例子,C-SCAN的服务顺序是:100→150→160→184(到达边缘),然后快速返回到0(不服务),再从0开始:18→38→39→55→58→90。总距离:
(184-100) + (184-0) + (90-0) = 84 + 184 + 90 = 358
C-SCAN的总距离比SCAN大,但等待时间更均匀。考试里经常让你比较SCAN和C-SCAN,记住核心区别:SCAN双向服务,C-SCAN单向服务。
3.5 LOOK与C-LOOK:不走到边缘的优化
SCAN和C-SCAN都要求磁头走到最边缘(0或最大磁道),但实际请求可能不会到达边缘。LOOK算法就是SCAN的优化版:磁头移动到最远的请求就掉头,不需要走到边缘。C-LOOK同理,是C-SCAN的优化版。
还是上面的例子,LOOK的服务顺序是:100→150→160→184(最远请求,掉头),然后90→58→55→39→38→18。总距离:
(184-100) + (184-18) = 84 + 166 = 250
跟SCAN一样?因为最远请求刚好在184,而最大磁道是199,所以LOOK比SCAN少走了15个磁道。如果最远请求是150,那LOOK的优势更明显。
3.6 各算法对比与选择建议
| 算法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| FCFS | 公平、简单 | 性能差 | 请求少、对公平性要求高 |
| SSTF | 性能好 | 可能饥饿 | 请求分布均匀 |
| SCAN | 无饥饿、性能较好 | 边缘等待长 | 一般通用场景 |
| C-SCAN | 等待时间均匀 | 总距离大 | 对响应时间要求均匀 |
| LOOK | 比SCAN少走冤枉路 | 实现稍复杂 | 实际系统常用 |
| C-LOOK | 比C-SCAN少走冤枉路 | 实现稍复杂 | 实际系统常用 |
实操心得:考试里算总距离的时候,先画一条数轴,把当前磁头和所有请求标上去,然后按算法规则模拟磁头移动,每步都标出方向。这样不容易算错。我当初就是懒得画图,结果SCAN和C-SCAN的方向搞反了好几次。
4. IO控制方式:从轮询到通道的演进
4.1 程序直接控制方式:最简单的轮询
程序直接控制方式就是CPU不断读取设备控制器的状态寄存器,看设备是否就绪。如果就绪,就读取数据寄存器;如果没就绪,就继续轮询。
这种方式的问题很明显:CPU利用率极低。CPU大部分时间都在轮询,做不了别的事。而且CPU和设备只能串行工作,设备慢,CPU就得等。
但这种方式也有优点:实现简单,不需要中断机制。在一些对实时性要求极高、数据量极小的场景下,轮询反而比中断更可预测。
4.2 中断驱动方式:让CPU解放出来
中断驱动方式的核心思想是:CPU发完IO命令后就去干别的事,设备完成操作后通过中断信号通知CPU。CPU收到中断后,保存现场,执行中断处理程序,读取数据,然后恢复现场。
这种方式的关键是中断处理流程:
- 设备控制器完成操作,向CPU发送中断信号
- CPU在当前指令执行完毕后,检查中断引脚
- 如果有中断,保存当前程序的上下文(PC、寄存器等)
- 根据中断号查找中断向量表,跳转到对应的中断处理程序
- 中断处理程序读取数据、清除中断标志
- 恢复上下文,返回被中断的程序
中断驱动方式比轮询高效得多,但每次数据传输都要经过CPU,对于高速设备(如磁盘)来说,中断频率太高,CPU大部分时间都在处理中断,还是忙不过来。
4.3 DMA方式:让数据自己走
DMA(Direct Memory Access)方式的核心是引入一个DMA控制器,让数据在设备和内存之间直接传输,不需要CPU逐字节搬运。
DMA的工作流程:
- CPU向DMA控制器发送命令,设置源地址、目标地址、传输长度
- DMA控制器向设备发送读/写命令
- 设备将数据传给DMA控制器,DMA控制器直接写入内存(或从内存读出)
- 传输完成后,DMA控制器向CPU发送中断
DMA方式下,CPU只在开始和结束时介入,中间的数据传输完全由DMA控制器完成。这大大减少了CPU的中断开销。
但DMA也有局限:每次只能传输一个连续的数据块。如果数据分散在内存的多个不连续区域,DMA就搞不定了。而且DMA控制器只能执行简单的数据传输,不能执行复杂的控制逻辑。
4.4 通道控制方式:IO处理器的雏形
通道(Channel)是一个独立的处理器,专门负责IO控制。它能执行通道程序,通道程序由一系列通道指令组成,可以控制多台设备、完成复杂的IO操作。
通道的工作流程:
- CPU向通道发送一条IO指令,指明通道程序在内存中的位置
- 通道从内存中读取通道程序,逐条执行
- 通道控制设备完成数据传输
- 所有操作完成后,通道向CPU发送中断
通道方式下,CPU只需要发一条指令,剩下的全由通道完成。通道可以同时控制多台设备,真正实现了CPU和IO的并行。
通道有三种类型:字节多路通道(适合低速设备,轮流为多台设备服务)、数组选择通道(适合高速设备,一次只服务一台)、数组多路通道(结合两者优点)。
4.5 四种IO控制方式对比
| 方式 | CPU介入程度 | 数据流向 | 适用设备 | 优点 | 缺点 |
|---|---|---|---|---|---|
| 程序直接控制 | 全程介入 | 设备→CPU→内存 | 低速设备 | 简单 | CPU利用率低 |
| 中断驱动 | 每次传输介入 | 设备→CPU→内存 | 中低速设备 | CPU利用率提高 | 中断频繁 |
| DMA | 开始和结束介入 | 设备→内存 | 高速设备 | CPU开销小 | 只能传连续块 |
| 通道 | 仅发指令 | 设备→内存 | 多设备 | CPU几乎不介入 | 硬件复杂 |
注意:DMA和通道的区别是高频考点。记住一句话:DMA是数据搬运工,通道是IO处理器。DMA只能搬数据,通道能执行程序。
5. 缓冲技术与设备分配
5.1 缓冲技术:解决速度不匹配的经典方案
缓冲技术的核心目的是缓解CPU和设备之间的速度差异,减少中断频率,提高CPU和设备的并行度。
缓冲有几种类型:
- 单缓冲:设备→缓冲区→CPU,CPU处理数据时设备不能写入缓冲区,设备写入时CPU不能处理。串行度高,效率低。
- 双缓冲:两个缓冲区交替使用,设备写缓冲区A时CPU处理缓冲区B,反之亦然。并行度提高。
- 循环缓冲:多个缓冲区组成环形队列,设备和CPU分别维护读指针和写指针。适合生产者-消费者模型。
- 缓冲池:系统统一管理一组缓冲区,按需分配。分为空闲缓冲区、输入缓冲区、输出缓冲区三类。
考试里经常让你算单缓冲和双缓冲的处理时间。单缓冲的处理时间 = max(设备传输时间, CPU处理时间) + 缓冲区传递时间。双缓冲的处理时间 = max(设备传输时间, CPU处理时间)。这个公式要记牢。
5.2 设备分配:独占、共享与虚拟
设备分配要解决的是“多个进程怎么共享有限的设备资源”。三种分配方式:
- 独占设备:一次只能分配给一个进程,如打印机。分配后其他进程必须等待。
- 共享设备:可以同时分配给多个进程,如磁盘。但需要调度算法来管理访问顺序。
- 虚拟设备:通过SPOOLing技术把独占设备改造成共享设备。
设备分配的数据结构包括设备控制表(DCT)、控制器控制表(COCT)、通道控制表(CHCT)和系统设备表(SDT)。这些表之间通过指针链接,形成设备分配的层级结构。
5.3 SPOOLing技术:用软件“骗”过独占限制
SPOOLing(Simultaneous Peripheral Operations On-Line)技术是设备分配里的重点。它的核心思想是:用磁盘上的缓冲区模拟独占设备,让多个进程以为自己独占了一台设备。
以打印机为例,SPOOLing系统在磁盘上开辟一个输出井,进程要打印时,先把数据写入输出井,然后由SPOOLing进程负责从输出井读取数据,依次发送给打印机。这样多个进程可以同时“打印”,实际上是在排队。
SPOOLing系统的组成:
- 输入井/输出井:磁盘上的缓冲区
- 输入缓冲区/输出缓冲区:内存中的缓冲区
- 输入进程/输出进程:负责在缓冲区和井之间搬运数据
- 井管理程序:管理井的分配和回收
SPOOLing的优点是提高了设备利用率和进程并行度,缺点是占用了磁盘空间,而且实现复杂。
5.4 磁盘空间管理:空闲表、位示图与成组链接
磁盘空间管理要解决的是“哪些块是空闲的,怎么分配和回收”。三种常用方法:
空闲表法:用一张表记录每个空闲区的起始块号和长度。适合连续分配,但表可能很大。
空闲链表法:把空闲块链成链表,分配时从链头取,回收时插回链头。简单但查找效率低。
位示图法:用一个二进制位表示一个块的状态,0表示空闲,1表示占用。位示图占用空间小,查找方便,适合大型磁盘。
成组链接法:结合了空闲表和空闲链表的优点,把空闲块分组,每组的第一块记录下一组的块号和块数。UNIX系统采用这种方法。
考试里经常考位示图的计算:给定块号,求它在位示图中的字号和位号。公式是:字号 = 块号 / 字长,位号 = 块号 % 字长。这个计算要练熟。
6. 常见问题与排查技巧实录
6.1 磁盘调度算法计算总距离时方向搞反
这是我在做题时最常犯的错误。SCAN和C-SCAN的方向很容易搞混,尤其是题目没有明确说“向磁道号增大方向”还是“减小方向”的时候。
排查技巧:先看题目有没有明确方向。如果没有,默认向磁道号增大的方向。然后画数轴,标出当前磁头和所有请求,按算法规则模拟。SCAN是双向服务,C-SCAN是单向服务。记住这个核心区别,方向就不会搞反。
6.2 中断处理流程的细节记不全
中断处理流程看起来简单,但细节很多,比如“保存现场”到底保存什么,“恢复现场”恢复什么,中断向量表在哪里。
排查技巧:把中断处理想象成“你正在写作业,电话响了,你去接电话,接完回来继续写”。保存现场就是记住你写到哪了(PC)、笔放在哪(寄存器),恢复现场就是回到那个状态。中断向量表就是电话簿,根据来电号码(中断号)找到对应的接电话的人(中断处理程序)。
6.3 DMA和通道的区别总是说不清楚
DMA和通道都是让CPU少介入,但区别在哪?很多人说不清楚。
排查技巧:记住一句话——DMA搬数据,通道执行程序。DMA控制器只能做数据传输,不能执行指令;通道是一个处理器,能执行通道程序,控制多台设备。DMA传输完成后发中断,通道在所有操作完成后发中断。
6.4 缓冲计算题公式记混
单缓冲和双缓冲的处理时间公式容易记混。
排查技巧:单缓冲是“串行+并行”,所以是max(传输, 处理) + 传递。双缓冲是“完全并行”,所以是max(传输, 处理)。记住“单缓冲多一个传递时间”就够了。
6.5 常见问题速查表
| 问题 | 排查思路 | 关键结论 |
|---|---|---|
| 调度算法方向搞反 | 画数轴,标方向 | SCAN双向,C-SCAN单向 |
| 中断流程记不全 | 用接电话类比 | 保存现场→查向量表→处理→恢复 |
| DMA与通道混淆 | 记一句话 | DMA搬数据,通道执行程序 |
| 缓冲公式记混 | 记“单缓冲多传递” | 单缓冲=max+传递,双缓冲=max |
| 位示图计算错 | 字号=块号/字长,位号=块号%字长 | 注意从0还是从1开始编号 |
实操心得:复习这块内容的时候,我建议你拿一张A4纸,把“磁盘→IO控制→中断→DMA→缓冲→设备分配”这条主线画成一张流程图,每个节点旁边标注关键概念和易错点。考前只看这张纸,比翻书效率高十倍。我当初就是靠这张纸,把零散的知识点串成了体系,做题的时候思路清晰很多。
6.6 一个容易被忽略的细节:磁盘访问时间计算
考试里经常给一个磁盘参数,让你算平均访问时间。公式是:
平均访问时间 = 平均寻道时间 + 平均旋转延迟 + 传输时间
平均旋转延迟 = 旋转一周时间 / 2 = 60 / (2 × 转速)
比如转速是7200 RPM,平均旋转延迟 = 60 / (2 × 7200) = 4.17 ms。这个计算经常考,但很多人只记公式不理解为什么除以2。因为平均来说,目标扇区转到磁头下方需要半圈的时间。
传输时间 = 传输字节数 / 传输速率。如果是传输一个扇区,就是扇区大小 / 传输速率。
这三个时间加起来就是平均访问时间。注意单位统一,通常用毫秒。
6.7 另一个高频考点:磁盘地址结构
磁盘地址通常由柱面号、磁头号、扇区号组成。为什么柱面号在前?因为寻道时间最长,把柱面号放在高位,可以减少磁头移动。读取同一个柱面的数据不需要移动磁头,只需要切换磁头(电子切换,很快)。所以磁盘地址的设计原则是:先确定柱面,再确定磁头,最后确定扇区。
这个知识点在选择题里经常出现,问“磁盘地址的格式是什么”或者“为什么柱面号在高位”。理解了寻道时间最长的原理,这个题就不会错。
6.8 设备独立性与设备无关性
设备独立性是指应用程序在访问设备时,不需要指定具体的物理设备,只需要指定逻辑设备名。系统通过逻辑设备表(LUT)把逻辑设备名映射到物理设备。
这个机制的好处是:程序不依赖具体硬件,设备更换后程序不需要修改。实现方式是:在设备分配时,系统根据逻辑设备名查找LUT,找到对应的物理设备,然后分配。
考试里经常问“设备独立性的好处是什么”或者“逻辑设备表的作用是什么”。记住核心:解耦应用程序和物理设备。
7. 复习策略与实战建议
7.1 用“数据通路”串联所有知识点
我复习这块内容最大的体会是:不要孤立地背每个知识点,而是沿着“数据从磁盘到CPU”这条通路来串联。数据从磁盘读出,经过设备控制器,通过DMA写入内存,然后通过中断通知CPU,CPU从缓冲区读取数据处理。这条通路上每个环节涉及什么机制、有什么优化手段,串起来就形成了一个完整的知识网络。
具体操作:拿一张白纸,画一条从左到右的箭头,左边写“磁盘”,右边写“CPU”,中间标出所有经过的组件和机制。每标一个,就问自己“这里为什么需要这个机制”“如果没有它会怎样”。这样复习一遍,比看十遍书都管用。
7.2 计算题一定要动手算
磁盘调度算法的总距离计算、缓冲时间计算、位示图计算、平均访问时间计算,这些题光看是不行的,必须动手算。我当初就是觉得自己看懂了,结果一算就错。后来强迫自己每道题都在纸上画数轴、列公式、算结果,才算真正掌握。
建议你找10道以上的计算题,涵盖FCFS、SSTF、SCAN、C-SCAN、LOOK、C-LOOK,每道题都画图计算。算完之后对照答案,看自己的方向有没有搞反、公式有没有用错。练多了之后,看到题目就能条件反射地画出数轴。
7.3 用对比表整理易混概念
这块内容里易混概念特别多:中断vs陷入、DMA vs通道、缓冲vs缓存、SCAN vs C-SCAN、单缓冲vs双缓冲。我建议你专门整理一张对比表,每个概念从“定义”“特点”“适用场景”“优缺点”四个维度对比。整理的过程本身就是复习,而且考前只看这张表就够了。
7.4 面试高频问题准备
如果你是在准备面试,这块内容的高频问题包括:
- 磁盘调度算法有哪些?各自优缺点?
- 中断处理流程是怎样的?
- DMA的工作原理是什么?和通道有什么区别?
- 缓冲技术有哪几种?单缓冲和双缓冲的区别?
- SPOOLing技术是什么?怎么实现的?
- 磁盘访问时间由哪几部分组成?怎么计算?
每个问题都要能用自己的话讲清楚,而不是背课本。面试官最怕听到的就是“背课文”式的回答。你可以试着用生活化的类比来解释,比如把SPOOLing比作“取号排队”,把DMA比作“快递直接送到家,不用你亲自去取”。
7.5 最后再分享一个小技巧
复习这块内容的时候,我习惯把每个知识点都问三个问题:是什么?为什么?怎么用?比如“磁盘调度算法”是什么?为什么需要?怎么用?这三个问题回答清楚了,这个知识点就真正掌握了。如果只能回答“是什么”,那说明你只是记住了表面,考试稍微变个问法就懵了。
这个习惯我坚持了整个复习周期,效果非常明显。刚开始觉得每个知识点都要问三个问题很费时间,但后来发现,真正理解之后,复习速度反而更快了,因为不需要反复背,理解了就记住了。