
每到期末总有一批同学在操作系统这门课上栽跟头。书翻了三四遍进程管理、内存管理、文件系统每章都看过可一合上书什么也记不住拿到卷子更不知道从哪下笔。我自己当年复习操作系统的时候也踩过这个坑后来带过几届学生发现大家的问题惊人地一致不是不努力而是把一门资源管理思维的课程当成了背诵课来学。操作系统期末复习真正要做的不是孤立背知识点而是把四件大事——CPU管理、内存管理、文件管理、设备管理——串成一条逻辑线。考试时不管从哪个角度出题你都能把题目挂到这条线上答案自然就有了方向。这篇文章就是一份可以直接用的复习提纲覆盖大多数高校OS课程的核心考点进程与线程、PV操作、调度算法、死锁、内存管理、页面置换、文件系统、磁盘调度最后还附上冲刺阶段的复习顺序和答题规范。不管你是用汤小丹的《计算机操作系统》、慕课版教材还是搭配王道考研笔记复习这些核心考点都是相通的。1. 先建立主线思维操作系统这门课其实只讲了四件事1.1 四件事串起整本书别再一章一章孤立地背很多同学复习操作系统最大的误区就是从第一章往后逐章翻翻到哪算哪结果前面学的全忘。实际上整本教材的主线非常清晰操作系统就是一个大管家负责管硬件资源而它要管的资源只有四类。第一件是CPU管理。CPU只有一个或者少数几个但程序有很多个谁先用、用多久、多个程序怎么轮流用这就是进程与线程、处理器调度、同步互斥、死锁这些章节要解决的事。第二件是内存管理。程序要运行就得放进内存内存不够怎么办、程序太大放不下怎么办、怎么让多个程序安全地共享内存对应的是连续分配、分页、分段、虚拟内存这些内容。第三件是文件管理。数据总不能全放内存得放到磁盘上文件怎么组织、目录怎么建、磁盘空间怎么分配对应文件系统章节。第四件是设备管理。键盘、鼠标、打印机、显示器这些外部设备怎么和CPU通信对应I/O控制方式、SPOOLing技术等内容。你发现没有这四件事其实是层层递进的逻辑程序要运行先得被调度上CPU得装进内存数据得从文件系统读来还得通过设备和人交互。复习的时候按这条线走每章之间就不是割裂的而是程序运行的一生。我在给学生划重点时经常说你脑子里要有一幅程序从磁盘被加载到内存、被调度执行、访问文件、调用设备、最终退出的完整流程图期末卷上的绝大多数题都能在这条线上找到位置。1.2 各章分值分布与复习优先级根据我看到的十几套不同学校的期末卷子分值分布虽然有差异但大规律是稳定的。进程管理含进程同步与PV操作占比最高通常有30%到40%内存管理紧随其后25%到30%文件系统和设备管理合起来20%左右剩下的是操作系统引论、系统调用、操作系统结构这类基础概念题。这不是巧合。进程管理之所以分值最高是因为它既是概念题的高产地进程线程区别、状态转换、同步互斥又是计算题和代码题的主战场调度算法、PV操作。内存管理则是计算题重灾区逻辑地址到物理地址的换算、页面置换算法缺页次数计算都是拉开分数的地方。所以复习优先级应该这样排先把进程管理的概念和PV操作吃透这是性价比最高的板块既好拿分又不容易丢分再攻内存管理的地址换算和页面置换把公式和套路练熟然后背文件系统和设备管理的知识点这块偏记忆短期冲刺效果好最后回头扫一遍引论里的零散概念防止出冷门填空题。2. 进程管理状态转换图必须默写PV操作有固定解法模板2.1 进程与线程的边界考试最爱考的概念辨析进程和线程的区别几乎是每份卷子的必考题而且经常以选择题、填空题、简答题三种形式反复出现。核心要点就一句话进程是资源分配的基本单位线程是CPU调度的基本单位。展开说进程拥有独立的地址空间、打开的文件、信号处理器等资源而线程是进程内部的一条执行路径同一进程的多个线程共享进程的地址空间和资源但每个线程有自己的程序计数器、寄存器和栈。考试常挖的坑有两个。第一个坑是线程切换一定比进程切换开销小这句话在某些试卷里是对的但严谨来说同一进程内的线程切换确实开销小因为不需要切换地址空间但如果两个线程分属不同进程切换开销和进程切换没有本质区别。第二个坑是进程是CPU调度的基本单位这是老版本教材的说法现代操作系统引入线程后这句话已经不准确了答题时一定要写线程是调度单位。还有一个辨析容易漏程序、进程、线程三者的关系。程序是静态的指令集合进程是程序的一次动态执行过程线程是进程内部的一条执行流。选择题里常出现进程是动态的程序是静态的这种判断记住这个就对了一半。另外进程的组成也要能默写进程由PCB进程控制块、程序段、数据段三部分组成其中PCB是进程存在的唯一标志这个概念在填空题里出镜率极高。2.2 进程状态转换画图题和简答题的送分点进程状态转换是典型的背了就会、不背就崩的考点。五状态模型包含创建态、就绪态、运行态、阻塞态等待态、终止态。其中就绪态、运行态、阻塞态是核心三态必须记住它们之间的转换条件和方向。我从判卷角度给你提个醒画状态转换图时箭头方向一定不能错而且每条边上最好标注转换条件否则会扣分。比如就绪态→运行态是进程被调度也就是获得了CPU运行态→就绪态是时间片用完或者被更高优先级进程抢占运行态→阻塞态是进程请求某资源未得到满足比如等待I/O完成阻塞态→就绪态是等待的事件已经发生比如I/O完成。考试常考的陷阱是阻塞态能不能直接到运行态答案是不能阻塞的进程必须先变成就绪态再等待调度因为唤醒和调度是两件事。还有一个容易混淆的点创建态和终止态。创建态是进程正在被创建、PCB还没初始化完成终止态是进程正在被回收资源。这两个状态在选择题里容易被忽略但填空题偶尔会考。另外挂起suspend状态在一些教材里会加入形成七状态模型复习时看一眼就行重点还是五状态。2.3 PV操作四步模板直接套经典问题背熟写法PV操作是很多同学最头疼的板块但其实它的解法非常固定。所谓PV操作就是利用信号量和两个原语操作waitP操作和signalV操作来实现进程的同步与互斥。核心思想是用信号量表示可用资源数量P操作申请资源信号量减一若小于0则阻塞V操作释放资源信号量加一若小于等于0则唤醒一个阻塞进程。我做题时习惯用四步模板屡试不爽。第一步分析题目中有几个进程、每个进程做什么事找出它们之间的同步关系和互斥关系。第二步确定信号量互斥信号量一般初始化为1表示某个临界资源同时只允许一个进程使用同步信号量初始化为0或某个初始值表示某种同步条件。第三步在临界区前加P操作在临界区后加V操作注意同步信号量的P/V要放在正确的位置比如生产者必须先P(empty)再P(mutex)顺序反了会产生死锁。第四步检查是否会发生死锁也就是看有没有进程拿着一个资源等另一个资源。三个经典同步问题考试命中率极高我把核心写法给你过一遍。生产者消费者问题两个同步信号量empty初始为缓冲区大小和full初始为0一个互斥信号量mutex初始为1。生产者先P(empty)再P(mutex)放入产品后V(mutex)再V(full)消费者先P(full)再P(mutex)取出产品后V(mutex)再V(empty)。注意P操作的顺序必须先P同步信号量、后P互斥信号量否则两个生产者同时阻塞时会互相等待形成死锁。读者写者问题关键是写者优先还是读者优先。读者优先的经典写法是设置一个count变量记录读者数量count的修改用mutex保护再用一个writemutex信号量保证写者互斥。第一个读者进入时P(writemutex)最后一个读者离开时V(writemutex)中间的读者直接进入。哲学家进餐问题核心是如何避免死锁常见解法是让哲学家同时拿两只筷子或者规定奇数号哲学家先拿左边筷子、偶数号先拿右边筷子或者设置一个信号量限制同时就餐的人数最多为4人。3. 处理器调度与死锁期末计算题最集中的两大板块3.1 调度算法比较甘特图一画分数就到手调度算法的计算题核心就是画甘特图。甘特图是横轴为时间的条形图一个进程占一段画完之后平均等待时间、平均周转时间、平均带权周转时间都能直接算出来。我把几种常考算法的特点整理成了一张对照表复习时对着记效率最高。算法核心规则优点缺点是否抢占先来先服务FCFS按到达顺序执行公平、实现简单平均等待时间波动大非抢占短作业优先SJF运行时间短的先执行平均等待时间最短长作业可能饥饿非抢占/抢占高响应比优先HRRN响应比(等待运行)/运行兼顾长短作业需要计算响应比非抢占时间片轮转RR按时间片轮流执行响应快、公平时间片大小影响大抢占多级反馈队列多级队列动态优先级兼顾各种作业实现复杂抢占做这类题有三件事必须提醒你。第一SJF要看题目说的是短作业优先还是最短剩余时间优先SRTF前者是非抢占的后者是抢占的计算过程完全不同。第二时间片轮转画甘特图时每个进程每次最多运行一个时间片如果一个进程在一个时间片内就运行完了那就提前下CPU剩下的时间给下一个进程很多同学在这里画错。第三算平均周转时间时周转时间 完成时间 - 到达时间等待时间 周转时间 - 运行时间带权周转时间 周转时间 / 运行时间。这三个公式必须滚瓜烂熟考试时直接套。3.2 死锁四个必要条件 判断、预防、避免、检测四级死锁这一节死锁的四个必要条件几乎是必考简答题互斥条件、请求与保持条件、不可剥夺条件、循环等待条件。注意循环等待条件和互斥条件不能混很多人把循环等待写成资源只能被一个进程占用那就说成互斥了。四个条件必须同时满足才会发生死锁破坏任意一个死锁就不成立。死锁的处理策略分四级预防、避免、检测与解除。预防是破坏四个必要条件之一避免是在资源分配之前先判断安全性典型的算法是银行家算法检测是允许死锁发生然后定期检测并解除。这几个概念选择题常考核心是区分预防和避免预防是提前破坏条件、静态的避免是动态判断、每次分配前检查安全性。银行家算法是这部分最容易考的大题它本质上是模拟试探性分配-安全性检查的过程。做题步骤我给你列清楚。第一步根据题目给出的已分配矩阵和最大需求矩阵算出还需要的资源矩阵Need Max - Allocation。第二步检查当前可用资源Available能否满足某个进程的Need如果能满足就假设把资源分给它它运行完释放资源Available增加然后继续找下一个能满足的进程。第三步如果能找出一条顺序让所有进程都执行完说明系统处于安全状态这条顺序就是安全序列如果中间出现所有进程的Need都大于Available的情况就是不安全状态不能分配。这里有个容易错的细节检查安全性时判断条件是Available当前剩余能否满足进程的Need还缺多少不是判断Available能否满足Max。很多同学用Max去比那就永远满足不了。另外银行家算法做题时先画出三张表Allocation、Max、Need再把Available写在一旁每一步分配完都更新Available思路就清晰了。4. 内存管理地址换算与页面置换套路比想象中固定4.1 分页存储逻辑地址到物理地址的换算一步都不能少内存管理的计算题最经典的就是分页存储的地址换算。分页的基本思想是把物理内存划分成大小相等的块物理块把进程的逻辑地址空间划分成同样大小的页通过页表建立页到块的映射。地址换算的公式就两个掌握了就够用页号 逻辑地址 / 页大小页内偏移 逻辑地址 % 页大小物理地址 物理块号 × 页大小 页内偏移。考试时题目一般会给出逻辑地址、页大小、页表内容让你算物理地址。做这种题要先算出页号然后去页表里查页号对应的物理块号再套公式。要注意页大小经常给的是2的幂次比如4KB 2的12次方字节这种情况下页内偏移可以直接从逻辑地址的二进制低12位读出页号就是高几位用移位比除法更快能省时间。还有一个高频考点逻辑地址结构。一个逻辑地址由页号P和页内偏移W两部分组成题目给一个32位的逻辑地址结构和页大小4KB问你页号占几位——4KB是12位偏移所以页号占32-1220位最多支持2的20次方 1M个页。这种题其实就是考偏移位数 log2(页大小)属于送分题。4.2 页面置换算法缺页次数计算先把访问序列排好页面置换算法是期末必考的计算题常见的有四种最佳置换算法OPT、先进先出FIFO、最近最久未使用LRU、时钟算法Clock。做题时关键是维护好内存里的页面集合每访问一个页面先看它是否在内存中如果在就是命中不在就缺页缺页时如果内存已满就按算法的规则淘汰一个页面。OPT淘汰的是将来最长时间不会被访问的页面它是最优解但现实中无法实现考试只用来对比FIFO淘汰最早进入内存的页面实现简单但可能出现Belady异常——增加物理块数反而缺页次数增多这个概念是简答题常客LRU淘汰最长时间没有被访问的页面性能接近OPTClock算法是LRU的近似实现每个页面有一个访问位扫描时遇到访问位为0的页面就淘汰遇到访问位为1的就置0继续扫也叫第二次机会算法。做这类题我强烈建议你列一张表格每一行列出一个访问标记是命中还是缺页缺页时写出淘汰了哪个页面、内存里最后是哪几个页面。这样不仅结果清晰判卷老师也方便给分。一个小技巧LRU看的是之前最久未用的页面OPT看的是之后最久不被用到的页面——一个往前看一个往后看别搞反了。另外刚开始访问的几个页面内存还没满时即使发生缺页也不算淘汰但缺页次数是要算的很多同学在这里少算或多算。4.3 虚拟内存、段页式与局部性原理虚拟内存这一节概念题居多但也有简答题。核心原理是程序局部性原理在一段时间内程序执行往往集中在某个区域包括时间局部性刚访问的数据很快会被再次访问和空间局部性刚访问的数据附近的地址也会被访问。基于局部性操作系统可以把程序的一部分装入内存就能运行其余部分留在磁盘需要时再调入这就是虚拟内存。请求分页系统在分页基础上增加了调页功能和页面置换功能页表项里多了一些状态位比如状态位P页面是否在内存、访问位A、修改位M、外存地址等。选择题常考缺页中断时如果内存已满需要执行页面置换如果被换出的页被修改过修改位为1需要写回磁盘否则可以直接覆盖。这个修改位决定要不要写回磁盘是判断题的经典考点。段页式存储先按逻辑结构分段每段再分页地址结构是段号段内页号页内偏移。访问一个数据需要三次查表段表、页表、最终地址。段页式结合了分段逻辑清晰、便于共享保护和分页内存利用率高、无外部碎片的优点但访问开销大、需要多次访存。这部分考得相对少一般就是简答题或者选择题把段式管理的优点、页式管理的优点、段页式地址结构这三个点记住就够。5. 文件系统和磁盘调度背诵为主但几个计算题不能丢分5.1 文件物理结构连续、链接、索引怎么选文件系统这章概念密度很高但计算量不大。第一个重点区分逻辑结构和物理结构逻辑结构是用户看到的文件组织形式有顺序文件和索引文件物理结构是文件在磁盘上的存放方式考试经常考三种。连续分配一个文件占用磁盘上连续的块优点是顺序访问快、实现简单缺点是会产生外部碎片、文件扩容困难。链接分配每个块末尾或单独用FAT表存下一块的指针解决了外部碎片问题但顺序访问需要多次读指针速度慢。索引分配为每个文件建一个索引块存放所有数据块的块号既能随机访问又便于扩展缺点是索引块本身占空间。还有一种混合索引是Unix风格的包括直接地址、一级间接、二级间接、三级间接计算一个文件最大能多大是这种题的常见考法。我提醒一个计算陷阱计算混合索引最大文件大小时要分清楚磁盘块大小和地址项大小。比如磁盘块大小4KB地址项盘块号占4B那一个索引块可以放4KB / 4B 1024个地址。如果直接地址有10个一级间接能索引1024个块二级间接能索引1024×1024个块三级就是1024的三次方。算总大小时把各级能索引的块数加起来乘以块大小别忘了加上直接地址的10个块。5.2 目录与空闲空间管理位示图题必须会算文件目录的作用是把文件名映射到文件的物理位置。核心数据结构是FCB文件控制块包含文件名、类型、大小、权限、存放位置等信息。目录项就是FCB索引结点inode是FCB中除文件名外的信息。考试常考文件目录和FCB的区别、目录的层次结构单级、两级、树形、无环图、索引结点的作用等。空闲空间管理方法有四种空闲表法、空闲链表法、位示图法、成组链接法。其中位示图出计算题的概率较高。位示图就是用一串二进制位表示磁盘块是否空闲1表示已分配0表示空闲。题目有时给一个磁盘块总数和字号、位号让你算对应的物理块号。公式一般是盘块号 字号 × 字长 位号具体根据题目给的字长来。做题时注意盘块号从0开始还是从1开始不同教材约定不同题目一般会说明不说明的话看你用哪本教材——王道和汤小丹版的约定就略有差别考试时看题目给的例子用哪种跟着它走。5.3 磁盘调度算法画出磁头移动轨迹就不丢分磁盘调度是文件和设备管理里最像大题的计算题算法有四种先来先服务FCFS、最短寻道时间优先SSTF、扫描算法SCAN电梯算法、循环扫描算法C-SCAN。做题就两步第一步确定磁头的初始位置和移动方向第二步按算法规则排出服务顺序算出总寻道长度。FCFS就是把请求按到达顺序依次服务没什么技巧SSTF每次选离当前磁头最近的请求总移动距离短但可能产生饿死现象SCAN是磁头沿一个方向移动一路处理经过的请求到最远端再掉头像电梯一样C-SCAN是磁头只沿一个方向移动到最远端后直接快速回到起始端途中不服务。做SCAN和C-SCAN时务必看清题目给的移动方向是向里还是向外方向标错整道题全错。这里给一个实战建议做磁盘调度题先在草稿纸上画一条数轴标出磁头的初始位置和所有请求的柱面号然后按算法画磁头的移动轨迹最后把所有移动的距离加起来。画了图这题的分数基本就稳了直接心算特别容易漏段。5.4 设备管理I/O控制方式的四种级别设备管理章节里最常考的是I/O控制方式的对比。四种方式从低级到高级分别是程序直接控制方式轮询、中断驱动方式、DMA方式、通道控制方式。程序直接控制方式CPU忙等浪费严重中断驱动方式在I/O完成后通过中断通知CPU提高了CPU利用率DMA方式在内存和外设之间直接传输数据传输完才中断CPU一次通道方式是独立的I/O处理部件可以执行通道程序来管理多台设备。这几个方式的概念辨析是简答题和选择题的常客解题关键是抓住CPU介入程度从轮询到中断到DMA到通道CPU的介入越来越少并行程度越来越高。还有SPOOLing技术也叫假脱机技术用磁盘上的输入井和输出井模拟脱机输入输出把独占设备改造成共享设备。典型例子是打印机多个进程要打印时SPOOLing把它们的数据先放到磁盘输出井再由一个打印进程统一输出这样每个进程都感觉自己在独占打印机。这个概念在选择题和简答题里出现频率很高答题要点是用磁盘空间模拟了脱机操作实现了虚拟设备。6. 考前一周怎么冲复习顺序、答题规范与常考八股清单6.1 冲刺阶段的四轮复习法如果你现在离考试只剩一周别慌按这个节奏来还来得及。第一轮一天半时间把进程管理、内存管理、文件系统、设备管理四章的教材目录过一遍每章用思维导图列出考点做到提到一章就能说出它讲了哪几节。第二轮两天时间专攻计算题调度算法的甘特图、页面置换的缺页次数、银行家算法、磁盘调度、地址换算每类题找三道真题练手练到不看答案能完整做出来为止。第三轮一天半时间集中背概念进程线程区别、死锁条件、请求分页原理、SPOOLing、四种I/O方式、文件物理结构优缺点这种背了就有分的内容放到临考前记记忆新鲜度最高。第四轮最后一天把做错的题和容易混的概念重新过一遍再默写一次进程状态转换图和PV操作模板上考场。为什么这样安排因为计算题需要练习和消化不适合考前突击而概念题是短时记忆就能搞定的放到最后背考场上记忆最深刻。这个顺序我用在好几届学生身上效果都不错。6.2 常考八股清单照着自查考前一晚过一遍下面这份清单是我根据热搜词操作系统常考八股、王道笔记和历年期末卷总结出来的高频概念题答案要能一字不差地写出来或者至少答出全部要点操作系统的四大特征并发、共享、虚拟、异步注意并发和共享是操作系统最基本的两个特征。操作系统的主要功能处理机管理、存储器管理、设备管理、文件管理、用户接口。进程与线程的区别见本文2.1节。进程的三种基本状态及其转换条件就绪、运行、阻塞。产生死锁的四个必要条件以及预防方法分别破坏了哪个条件。分页和分段的区别分页是物理单位、大小固定、无逻辑意义分段是逻辑单位、大小不固定、便于共享和保护。虚拟内存的特征多次性、对换性、虚拟性。缺页中断与一般中断的区别缺页中断在指令执行期间产生一条指令可以产生多次缺页中断。文件系统的主要功能文件存储空间管理、目录管理、文件的读写管理、文件的共享与保护。I/O控制方式的演变过程及各自优缺点。这份清单的覆盖面已经超过大部分期末卷的简答题考察范围逐条背熟简答题至少能拿八成以上的分。6.3 答题规范判卷老师喜欢看到什么样的答案最后说几个实操性的答题技巧都是我实际批改学生试卷时总结出来的。第一PV操作题一定要先写清楚信号量的含义和初始值再写代码。很多同学直接写P、V操作信号量代表什么资源都不写即使代码写对了也要扣分因为判卷老师无法判断你是真懂还是蒙的。第二计算题要写公式、写过程不要只写答案。页面置换、调度算法这类题过程分通常占大头答案错了但过程对照样能拿大半分只写个最终答案错了就全错。第三画图题状态转换图、甘特图、页表用尺子比着画标注齐全哪怕内容有点小问题一份工整的图也会让判卷老师手下留情。第四简答题如果有多个要点一定分点作答别写成一整段分点既方便判卷老师找要点也能提醒自己别漏点。还有一个容易被忽视的细节考试时先做会做的题不要在一道计算题上卡太久。PV操作题如果五分钟没思路先跳过做后面的文件系统题回头再来看往往思路就通了。6.4 一点个人体会说实话操作系统这门课是计算机专业课里下限高、上限也高的一门。下限高是因为只要按主线把概念串起来把几类计算题练熟及格甚至七八十分并不难上限高是因为真要深入理解并发、虚拟化这些思想需要很多实践积累。期末复习阶段我建议你把目标定在把常规题做对上先把上面的内容消化掉再考虑拓展。我自己当年复习操作系统时最深的体会是与其反复看教材看会不如合上书写会。状态转换图自己默写一遍PV操作不看答案写一遍甘特图亲手画一遍比翻三遍书都管用。你哪怕现在觉得什么都不会只要按这份提纲把该写的都写一遍考场上你会发现那些考点其实早就藏在你的笔头下了。