1. 一本教材的课后题为什么值得反复做
这几年凡是走过计算机考研或者期末冲刺的人,对“汤小丹”这三个字应该都不陌生。说实话,《计算机操作系统》这本书在操作系统相关课程里的地位,一直保持着一种“你看不上的时候它不重要,等你需要它的时候它比谁都重要”的状态。很多人觉得这本书的例子太老、界面过时、代码段还是上世纪风格,但真正到期末复习或者考研刷题阶段才发现,90%以上的学校真题和复试问答,都能在这本教材的课后习题里找到影子。
所以标题里那套“书后习题答案1-9章”,本质上不是简单的参考答案,而是一张浓缩了整个操作系统课程考点的地图。我的观点很直接:如果你时间有限,教材正文可以挑着看,但课后题必须全部过一遍,尤其是每一章的基础概念题和计算题,这些题的题干本身就代表着老师最喜欢出题的角度。
先说这本教材的结构。全书大致可以分为三块:前几章讲操作系统基础概念、进程管理、调度与死锁;中间章节讲内存管理、虚拟存储和文件系统;后面章节讲I/O系统、操作系统接口以及Linux/Windows两个具体系统实例。课后习题的分布也跟这三块高度吻合——前面的题偏抽象、偏计算,中间的题偏公式、偏画图,后面的题偏描述、偏设计。
对着答案做这套题,最容易被忽略的价值是“答案本身的信息密度”。比如有一类题会问“什么是临界资源?什么是临界区?”教材正文各有定义,但课后答案通常会把“互斥访问”“每个进程中访问临界资源的那段代码”“进入区、临界区、退出区、剩余区”这几个关键短语串在一起。这种串法本身就是考试时简答题的标准写法。换句话说,答案不是在告诉你“知识的终点”,而是在示范“阅卷老师希望看到的要点组织方式”。
另外,别小看教材里那些看似多余的“课后复习题”。它们通常被分成“概念题”和“计算与应用题”两类,很多同学只做计算题,觉得概念题背一背就行。但以我批改作业和带复习的经验来看,概念题往往是考研选择题和期末判断题的直接来源,而且概念题的答案里藏着大量“多选陷阱”——你只看正文以为自己懂了,只有被教材答案里那种精确到限定词的说法打脸过,才会真正记住。
2. 第1-3章:从抽象概念到核心机制,选择题与大题的主战场
2.1 第一章操作系统引论:名词辨析是送分题还是丢分题
第一章的内容相对基础,主要围绕操作系统的定义、发展过程、基本特征和主要功能展开。这里的课后题大量涉及“并发和并行”“共享和互斥”“虚拟和物理”“异步和同步”这类成对概念。我第一次复习时觉得这些都是常识,但做题才发现,题目最喜欢在限定条件下挖坑:比如问你“在单处理机环境下,操作系统能实现的是并发还是并行?”很多人第一反应写“并发”,但答案往往会进一步解释“多道程序设计的核心是并发,而不是并行,因为单CPU某一时刻只能执行一条指令”。
课后答案里对这类问题的表述方式,其实比正文更精炼。它不会把教科书里那段又长又绕的定义原封不动抄一遍,而是先把主概念圈出来,再用一个或两个限定词强调边界条件。这种“圈概念+加限定”的结构,完全可以直接套用到面试或者笔试里。
第一章还有个高频考点是操作系统的功能:处理机管理、存储器管理、设备管理、文件管理、用户接口。看似简单,但如果题目问“操作系统提供的用户接口包含哪两种?”通常要求答出“命令接口和程序接口”,然后还要补一句“命令接口又分联机命令接口和脱机命令接口”。这种细节不靠课后题带一遍,真的很容易遗漏。
除了概念题,第一章通常还会安排几道关于“操作系统发展历程”的题,比如多道批处理系统、分时系统、实时系统的特点比较。这类题的答案经常会用表格化表述来区分“多道性”“独立性”“及时性”“可靠性”。建议复习时直接把答案里那些对比词标出来,因为考试时让你“简述分时系统与实时系统的区别”,其实就是考察你能否写出那几条对比结论。
2.2 第二章进程与线程:同步互斥类题目的答题范式
第二章是整个操作系统课程的核心,也是课后题最密集、最能让考研人熬夜的一章。这一章的习题围绕进程概念、进程状态转换、进程控制块PCB、线程与进程的比较、进程同步、信号量机制、经典同步问题展开。如果你只是把答案背下来,你会发现题量太大、记不住;但如果理解了“进程是资源分配的基本单位,线程是调度执行的基本单位”这条主线,大部分题目会自己串起来。
先说进程与线程的对比题。这类题几乎每本教科书都有,但汤小丹版的课后答案里强调了一个容易被忽略的点:线程切换“不一定”比进程切换开销小,这取决于它们是否属于同一进程。很多同学答题只写“线程切换开销小”,遇到较真题目就会被扣分。课后答案通常会在这一句后面补上“同一进程内的线程切换”这个前提,这就是考试时最容易丢的前提条件。
同步互斥大题是第二章的重头戏。像生产者-消费者、读者-写者、哲学家进餐、理发师睡眠这类经典问题,课后题一定会出现。做这些题时最忌讳直接看答案,因为如果你不自己画一遍信号量设置流程,永远分不清“先wait还是先signal”“mutex放在哪个位置”。我的经验是把答案里的信号量定义(比如empty、full、mutex)先挡住,自己写一段伪代码,再对着答案逐行看差异。这样做两道题之后,你会发现自己形成了一套固定的答题范式:先定义共享变量和信号量,再写进程代码,最后用注释说明每个操作的意图。
这里还要特别提一下“管程”相关题目。管程概念的抽象程度比信号量更高,课后题里有几道专门考察“为什么引入管程”“管程与信号量相比有什么优势”。很多学校期末考试不考管程,但考研大纲里往往会涉及。课后答案里通常会结合“资源封装”“条件变量”“wait和signal操作”来回答,这一段如果只是死记会比较痛苦,建议配合实际代码结构来理解,把它看成“把同步机制包进模块里”,比堆信号量函数调用更安全。
2.3 第三章调度与死锁:计算题的固定套路
第三章的课后题几乎都是计算题:各种调度算法(FCFS、SJF、优先级、时间片轮转、多级反馈队列)的周转时间和等待时间,以及银行家算法安全性检查的完整流程。这些题只要你愿意动笔,是不难拿满分的,但前提是你得动手算到底,而不是看一眼觉得“会了”就跳过。
以最短作业优先(SJF)为例,课后答案的标准做法是先画一个甘特图,把每个作业的开始时间、结束时间标出来,然后再列周转时间表。很多同学做这类题时草稿上一片混乱,最后抄答案时只是抄了个数字。正确的练习方式应该是:哪怕最终答案都一样,也要保证每一步都能用文字说出“当前时刻就绪队列里有哪些进程,谁最短,然后选谁”。课后答案的好处是它会把进程到达时间作为切入点,一步步追踪调度序列,这比你自己闷头算要高效得多。
死锁章节的核心习题分为两类:死锁判定(画出资源分配图,或者用银行家算法判断系统是否安全)和死锁定理分析。银行家算法题是典型的“详细步骤分”题目,系统里有多少资源、每个进程已分配多少、还缺多少、系统还剩多少,每一步都比较大小,能输出一个安全序列就算证明系统安全。做这类题时,我建议不要直接在原书上划线,而是另拿一张白纸,把资源分配表重新抄一遍,再在右侧写“Work(可用资源)”和“Need(还需资源)”两列,边算边更新。这个过程基本就是课后答案的演算过程,练几道后就会形成肌肉记忆。
另外,第三章里还有一些看起来像“简答题”的考点,比如“产生死锁的四个必要条件”“如何预防死锁、如何避免死锁、如何检测和解除死锁”。这些题答案里最容易被扣分的点是“互斥条件”和“不可剥夺条件”的描述,很多同学把预防和避免混淆。课后答案对这部分往往采用分点表格说明,自己对答案时千万别只看大标题,要仔细看每一条的限定词,比如“破坏请求和保持条件可以采用资源一次性分配”“破坏不可剥夺条件可以采用主动释放”。这些细节在卷面上就是一分一分的差距。
3. 第4-6章:存储管理到文件系统,最容易“看不完”的章节
3.1 第四章内存管理:页表计算类题目的关键公式
如果前面章节靠理解就能对付,第四、五章就得真正拿出草稿纸来算了。第四章内容覆盖程序装入与链接、连续分配存储管理、分页存储管理、分段存储管理和段页式存储管理。课后习题里最经典的是“逻辑地址到物理地址的转换”“页表项大小与页表占用内存的关系”“分段与分页比较”这几类。
逻辑地址转换的题目通常给出一组条件,比如页面大小为4KB、逻辑地址为十六进制0x3A21、页表内容为某几项,让你求物理地址。课后答案的标准解法是:先把十六进制转成二进制或者拆出页号和偏移量,再用页号去页表查块号,最后拼接出物理地址。这个流程中,最常见的错误是忘记检查“页号是否越界”或“页面不在内存中”,从而漏掉缺页异常的处理步骤。我做过一个统计,班里同学在这类题上丢分,80%都不是不会算,而是不写“判断越界”这一步。所以对答案时,别只看最后数字对不对,而是要看你有没有把判断过程写出来。
页表大小计算题也是高频题型。题目可能会告诉你逻辑地址空间大小、页面大小、页表项占字节数,让你求“页表需要占据多少内存空间”。解题的核心公式是:页表项数 = 逻辑地址空间大小 / 页面大小,页表占用内存 = 页表项数 × 每个页表项字节数。这类题的陷阱在于单位换算,比如逻辑地址空间是“2^20页”,页面大小是“1KB”,页表项是“4B”,最后结果是多少KB。每次做题都要把单位写完整,尤其是“KB”与“K”的区别,以及位数与字节数的倍数关系,课后答案在这些地方经常直接给出结果,你需要把它倒推回去看公式有没有理解错。
分段存储管理那边的题,更偏重“地址结构”和“段表”的考察。比如给你段号、段内偏移量,以及段表里每段的段长和基址,判断该访问是否越界。做完这几道题之后,你会发现分段和分页最大的差别在于:分页的地址结构由系统自动划分,用户不可见;分段的地址结构由程序的逻辑结构决定,用户可见。这个“可见性”考点时不时出现在简答题里,答案里如果没写出来,建议自己补上去。
3.2 第五章虚拟存储器:页面置换算法的图解记忆法
第五章虚拟存储器是我认为全书最容易出计算大题、也最容易让考生产生“好像会了但又算不对”感觉的一章。课后题主要覆盖局部性原理、请求分页机制、页面置换算法(OPT、FIFO、LRU、Clock)、页面分配策略、抖动与工作集。
对于OPT、FIFO、LRU这三大页面置换算法,题目通常会给一个页面走向序列,再给一个内存块数,请你列出每次页面访问后内存中的页面变化,并统计缺页次数和缺页率。做这类题的要点不是记算法定义,而是给每一时刻的内存状态画一个“窗口”:OPT要看未来哪个页面最晚被访问甚至永远不再访问,然后淘汰它;FIFO是看谁进内存最早;LRU是看谁最长时间未被访问。课后答案里的表格往往长这样:列是访问次数,行是内存块编号,每个交汇处填写当前内存块里的页面号。你在对答案时,应该重点核对每一列是否一致,因为只要一个空格的顺序不同,后面的缺页判断就会错。
Clock置换算法(又称最近未用算法)在这几年考试中出现频率越来越高。它的特点是每个页面有一个访问位,指针在内存框里循环扫描,遇到访问位为0就淘汰,遇到为1就置为0后继续移动。这道题的答案通常需要画出指针的位置变化,很多同学在手动模拟时总忘了“指针从上次淘汰位置继续移动”这一细节。课后答案对这类题目会逐行标出指针移动方向,复盘时就照着那个方向自己重新走一遍,比单纯看文字描述更直观。
第五章还有一些“概念类”题目,比如“请求分页系统中有哪些关键硬件支持”“什么是缺页中断,缺页中断与一般中断有什么不同”。值得注意的是,答案往往会强调缺页中断在指令执行期间内产生、立即处理,而一般中断在处理完当前指令后响应。这种对比细节是选择题的绝佳材料,建议整理成一小段记忆卡,每天快速过一遍。
3.3 第六章文件系统:目录结构与管理字符碎片计算的细节
第六章文件系统是很多人复习时最轻视的一章,觉得内容就是目录、路径、文件分配表,没什么算法。其实这一章的课后题陷阱不少,尤其是“文件存储空间管理”里的空闲表法、空闲链表法、位示图法,以及文件物理结构的“索引节点”计算。
位示图法的题目通常给出磁盘块总数和每字位数,让你计算位示图需要多少字。“文件目录项”相关的题也很多,比如问你“一个文件的FCB包含哪些内容”“相对路径与绝对路径的差异”。这些题本身不难,但答案里经常涉及对“FCB(文件控制块)”“索引结点(inode)”的区分:简单系统里文件名和属性都在目录项中,Linux等系统中文件名在目录项、属性在inode里。这个区分是第六章最经典的简答题考点,很多同学答完“文件目录项包含文件名、类型、地址、长度”就停笔了,实际上还差一句“索引结点的引入是为了减少目录查找时需要读入的信息量”。
文件分配方式相关的计算题是另一个容易翻车的地方。连续分配要算“从第几个逻辑块到物理块的映射”,链式分配要算“访问某一块需要读多少次盘块”,索引分配要算一级索引、二级索引能够表示的最大文件大小。课后答案里关于“混合索引”的题目,通常会给出10个直接块、1个一级间接块、1个二级间接块、1个三级间接块这样的结构,让你求最大文件长度。这类题解法其实就三步:确定每个盘块大小和地址项大小,算每个索引块能保存多少个地址项,然后逐个级别累加。对答案时一定要检查是否把“直接块的个数”也算进去了,不少人只算间接的几层,忘记了前面10个直接块的容量。
第六章节末关于Linux、Windows文件系统的比较题,也值得留意。课后答案里会出现“FAT表的簇大小”“NTFS的主文件表MFT”“Linux的ext系列逻辑块寻址”等概念。对于要参加期末考试的同学,这些可能是选做题;对于要复试的同学,这些几乎是必答项。建议至少把FAT32、NTFS、ext4三者的主要差异和适用场景记下来,不要只停留在“Windows用NTFS,Linux用ext4”这种常识层面。
4. 第7-9章:从外设到Linux再到Windows,简答题的来源库
4.1 第七章I/O管理:缓冲、SPOOLing等概念的高频考法
第七章的复习难度并不高,知识点多且碎,但课后题集中在北京:I/O控制方式、中断处理流程、缓冲技术、SPOOLing技术、设备分配与回收、磁盘调度算法。
I/O控制方式有四种:程序直接控制方式、中断驱动方式、DMA方式、通道控制方式。课后答案一般会要求你分别描述“CPU干预的频率”“数据传送单位”“主要优缺点”。考试时最容易混淆的是DMA和通道控制的区别,DMA每传送一个数据块要CPU干预一次,通道则能独立执行通道程序,控制的是一组数据块。这种差异在答案里往往就一两句话,但如果你没主动整理,考场上真的会愣住。
磁盘调度算法是第七章的“计算题担当”。FCFS先来先服务最好理解;SSTF最短寻道时间优先,可能产生饥饿;SCAN电梯算法按方向扫描;C-SCAN单向循环扫描。课后题里会给一组磁道请求序列,问你按各种算法的服务顺序和总寻道长度。我最想提醒的是:SCAN算法里“初始磁头移动方向”非常关键,有的题目答案按外向里,有的按里向外,方向选反整个流程就全错。对答案时第一眼先看答案的“服务顺序”首元素是否跟你的一致,如果不一致,先检查方向,而不要一上来怀疑公式。
SPOOLing技术同样值得关注。它利用磁盘上的输入井和输出井模拟脱机输入输出,把独占设备改造成共享设备。课后题经常会问“SPOOLing系统由哪些部分组成”“为什么说SPOOLing技术可以把独占设备改造为共享设备”。这类答案不复杂,但要注意把“输入井”“输出井”“输入缓冲区”“输出缓冲区”每个部分的职责写清楚,并且点出“缓和CPU与I/O设备速度不匹配的矛盾”这个目的,不要只回答“提高了利用率”,那样会被判为不完整。
4.2 第八章Linux内核:课后题里的“超纲”提示
第八章常被部分学校视为选讲,老师可能课上提一嘴、考试不考,但考研复试里却可能变成拉开差距的题目。这章围绕Linux的模块结构、进程管理、内存管理、文件系统等展开,课后题难度跨度很大,从“Linux进程状态有哪几种”到“Linux如何实现写时复制”都有。
对于只求期末及格的同学,我建议把第八章当作“名词解释库”对待:比如Linux内核由哪几部分组成、进程控制块task_struct是什么、内核线程与用户进程的区别、软中断与硬中断的关系、系统调用的一般实现步骤。课后答案基本都能覆盖这些概念,直接用它们的句式做记忆即可。
对于考研复试的同学,第八章课后题反而是很好的“问题清单”。比如“Linux的进程调度器是基于优先级还是基于时间片?”“为什么Linux引入内核线程?”这些问题没有唯一标准答案,但教材课后答案给出的解释已经很简练,可以作为回答的底板,再结合一点现代内核里的实现细节补充。我在面试别人时,如果对方能说出“Linux进程用task_struct链式串起来,调度器通过红黑树管理就绪队列”这种层次,往往会比只会背“进程管理包括进程创建、撤销、阻塞”的人多留几分好印象。
另外,第八章里有一部分关于“启动过程”的题目,比如从Bootloader到kernel到init进程的启动流程。这题放在平时感觉很“工程”,但现在容器、虚拟机普及之后,问的人反而更多。建议把这一题答案整理成三个阶段:引导程序加载内核、内核初始化硬件并挂载根文件系统、启动第一个用户进程。如果老师没讲,你课后自己看答案也能看懂,这对后续学习系统编程、驱动开发都有帮助。
4.3 第九章Windows 2000/XP:部分学校会略过但复试会问
第九章很多人直接跳过,因为教材编写年代比较早,Windows版本也停留在2000/XP时代。从考试角度来看,多数学校确实不怎么出这章题目,但“操作系统课程设计”或者复试的综合面试环节,老师偶尔会问“Windows和Linux在进程管理、文件系统上有什么不同”,这时候如果你一点都没看,会比较尴尬。
第九章课后题里比较有价值的几块包括:Windows 2000/XP的体系结构分层、进程与线程的调度方式、虚拟内存的管理方式、NTFS文件系统的特点、注册表的作用与结构。教材答案很老旧,但核心概念是通用的。比如NTFS与FAT32的核心区别(ACL权限、文件压缩、加密、恢复日志),即使现在用Windows 10/11,这些点依然成立。
我的处理方法是把这一章当成“对比阅读”而不是硬啃:看到Windows的进程管理时,脑子里自动对照Linux的task_struct;看到NTFS的MFT时,对照Linux的ext4 inode;看到Windows的系统服务与应用程序交互时,对照Linux的系统调用。这样你不用单独花很多时间去记Windows细节,只要把它放在操作系统大框架里就能顺手掌握。
需要注意的是,第九章课后答案里经常出现一些带历史色彩的表述,比如“Windows 2000采用基于优先级抢占式调度”和“线程状态的转换条件”。如果复试时聊到,尽量不要说“我用Windows 2000做过实验”,那样太有年代感。相反,把“现代Windows依然保留抢占式调度、优先级提升机制”这种延续性说出来,反而显得你对系统演进有认知。
5. 用课后答案的三种姿势:照抄、比对、反推
5.1 做完再对答案,还是先看答案再做?
这是很多同学面临的第一个纠结。我的建议是:首次预习时可以先看答案,目的不是背答案,而是通过答案锁定教材重点。比如答案里频繁出现“进程控制块PCB”“页表”“死锁必要条件”这些词,你就会有意识地注意教材里这些关键词的位置。但在考前冲刺阶段,一定要先做题再对答案,甚至要模拟“闭卷解答”,否则你对答案永远处于一种“我只要看了就会,合上书就忘”的虚假安全状态。
具体操作上,每做完一题,不要把答案直接写在题目旁边,而是先写在草稿纸上,然后对答案。对了的就标记一个小勾,错了或漏点的就画个小叉,并在题目序号旁边写下错误类型(是概念不清、计算错误、还是遗忘限定条件)。这个动作很微小,但对后面第N轮复习非常有帮助。
5.2 如何通过答案反推教材原文和“结论型知识点”
课后答案的重要价值在于,它会把教材里分散在不同小节的结论集中到一个问题里。举例来说,第二章有一道题让你“比较进程和程序的区别”,答案会给出“进程是动态的、程序是静态的”“进程是暂时的、程序是永久的”“进程与程序不是一一对应”这几条。如果你只看教材正文,可能需要从三个小节里分别总结;但看答案,你可以直接得到一个可复用的答题结构。
反推法是这样用的:看到答案中的某一句,比如“并发的进程之间可能存在互斥关系或同步关系”,你要回到教材原文找到这句话所在的小节,把周围的定义和例子一起再看一遍。这样做能让你把一个孤立的“答案点”还原成“知识面”。很多同学背答案背了一堆,但遇到换一种问法的题就不会了,正是因为只记了答案本身而没有反推原文的推导脉络。
我还会做一件事:把答案中那些“结论型”的短句摘出来,比如“通道是一个独立于CPU的专门管理I/O的处理机”“工作集模型用来防止颠簸”等,整理成Excel或备忘录,每章一页。到考试前一周,基本就不看答案了,只看这些短句,每一句能想到完整解释,就代表这章过关了。
5.3 把课后题改造成记忆卡片和自测清单
这个方法特别适合期末复习时间紧的人。把课后题里的核心名词解释和简答题变成“问题卡片”,正面写问题,背面写答案里最关键的3-4个得分点。不需要做成App,即使是纸质卡片也行。重点在于“自分检出的频率”:高频出现的问题(进程状态、调度算法、页面置换、死锁条件、文件分配)每天过一遍,低频问题(如操作系统发展史、Linux启动过程)每三天过一遍。
同时可以建立一张“自测清单”,给每章出5道“自测题”。这些自测题不用自己编,直接从课后题里挑或者把课后题稍微改一下数字和说法。每做完一张清单,记录耗时和正确率。如果你连续两次正确率达到90%以上,就可以放心把这一章放一放。如果某章正确率一直低于70%,别再盲目刷题,回到正文把对应小节重读一遍,并对照课后答案找原因。
6. 我见过的大量错题与误区,以及一套可复用的复习节奏
6.1 典型错误:把课后答案当背诵材料
备考操作系统时,最容易走入的误区就是“使劲背答案”。很多人觉得操作系统不像数学有大量计算,好像背熟概念就能过。其实不然,只要出题老师愿意,一道选择题可以同时考察你三个概念之间的边界,一道大题可以让你综合用信号量、调度和死锁知识分析一个场景。这时候,单纯背诵答案的考生会陷入“我好像每个词都见过,但不知道选哪个”的困境。
正确的做法是把答案当成“校验标准”,而不是“知识本体”。知识本体是教材正文里的定义、原理和例子。第一遍复习先看教材,画出你不理解的地方;然后用课后题检验哪些地方你没掌握;最后用答案来修复你的知识偏差。这个顺序一旦反了,学习效果会大打折扣。
还有一个典型误区是只看答案不做题。人的大脑对“阅读答案”的容忍度特别高,你看答案时觉得逻辑通顺、一看就懂,但合上书本,让你自己写过程,往往写不出几步。所以哪怕你觉得题目再简单,也一定要动手写。特别是银行家算法、PV操作、页面置换这类大题,必须亲手推一遍过程,才能真正发现问题。
6.2 期末冲刺与考研二轮的不同用法
如果你现在是期末冲刺,时间通常一到两周,建议采用“以题为纲”的复习方式:把课后题按章节过一遍,每道题先自己想思路,再与答案对照。不用追求每道题的字数完整,但务必保证核心得分点能列出来。同时把老师画过的重点题型优先做,比如进程同步、调度算法、页面置换、磁盘调度这四类,大概率会在大题里出现。
如果你是考研二轮复习,时间相对充裕,可以把手头的课后题分为“必做”“选做”和“只看不做”三档。必做的是经典PV操作题、银行家算法、页面置换、内存分配计算、文件系统混合索引计算;选做的是那些多次出现在不同章节的综合性问题;只看不做的主要是纯历史演变类题目,比如“多道批处理系统的主要特征是什么”,这些只需从答案里提炼关键词并记录即可。
还有一点,二轮复习时最好不要只盯着一本教材的答案。汤小丹版的课后题毕竟有一定年代感,如果你还报了辅导班或者有其他资料,可以把其他资料里的同类题合并到一起做。比如本章课后答案是“用信号量解决生产者-消费者问题”,你可以再找一两道变式题(多生产者、多个缓冲区、多类产品)来检验自己是不是真正掌握了同步互斥的建模能力。
6.3 一套手动整理“答案+教材页码+易错点”三列的笔记模板
最后分享一个我自己用了很久的笔记方法,非常适合操作系统这类概念多、关联密的课程。准备一张A4纸(或者电子文档里的一个表格),列标题分别是“题目关键词”“答案要点”“教材页码/易错点”。每做一题,在第二列只写答案的骨架词,不要整句抄;在第三列写“这道题我在第一次做时漏掉了什么”“如果改变条件会怎么样”。
比如“进程同步”相关的题目,我的笔记可能是:
- 第一列:单缓冲区生产者-消费者
- 第二列:empty=1, full=0, mutex=1;生产者wait(empty)、wait(mutex)、signal(mutex)、signal(full);消费者顺序相反
- 第三列:P82-84;注意“先wait(empty)再wait(mutex)”的顺序不能反;如果缓冲区改为多缓冲区,empty初始值改为N
这份笔记在考前一天的复习效率极高,你不需要再翻厚厚的教材,也不需要整本看答案,只看第二、第三列,就能迅速唤醒记忆和提醒自己不犯旧错。我当年靠着这张表,在期末和考研的“操作系统”部分都没有因为低级错误丢过分。
另外,做这份笔记时,尽量手写。手写的好处是你会被迫把答案里的长句压缩成关键词,这个压缩过程本身就是一次主动回忆。很多同学用电子笔记复制粘贴答案,结果是复制了等于背了,实际上大脑一点痕迹都没留。手写虽然慢一点,但它带来的记忆深度远高于打字。而且操作系统里的图,比如页面置换过程、进程状态转换图、资源分配图,手画一遍比看十遍都管用。
总的来说,汤小丹《计算机操作系统》的课后习题答案,真正的正确打开方式不是“抄”,也不是“背”,而是“查漏补缺”。每一道题都是教材知识点的一次测试,每一份答案都是答题结构的一次示范。如果你能分章突破、动手动笔画、带着对比意识去学,这套题会成为你复习路上最可靠的伙伴。