资讯动态

操作系统期末复习:进程管理、内存管理、页面置换与银行家算法核心考点精讲

发布时间:2026/10/23 19:39:13 来源:尧图企业网站定制
期末复习那几天我见过很多同学是这么干翻开操作系统教材从目录一看前三章“操作系统引论”“进程管理”“内存管理”又厚又抽象于是本能地先跳过去背后面的文件系统、I/O 那些“背了就能写”的内容。等到考前一晚才想起前三章一翻试题却发现名词解释、简答题、计算题几乎全来自这三个部分——进程状态转换、信号量 P/V 操作、页面置换算缺页次数、银行家算法安全性检查全是硬骨头临时抱佛脚根本啃不动。这篇文章就是专门来给备考的人“救火”的。我会把操作系统前三章的试题知识点按照考试的实际出题角度重新梳理一遍把那些最容易混淆的概念、最常考的计算题套路、最坑人的选择题选项逐一拆开讲清楚。适合期末冲刺、考研第一轮复习、自考考前突击的人参考。不是教材的复述而是站在“这道题出出来到底想考你什么”的角度讲能直接转化成得分的干货。1. 为什么这三章值得花掉你一半的复习时间1.1 前三章在整张试卷中的真实分量不同学校、不同教材的章节划分略有差异但“操作系统引论 进程与处理机管理 内存管理”作为前三章几乎覆盖了整门课一半以上的考点。我统计过手头的几份期末卷和考研真题这三个部分的选择题经常占 20 到 30 分简答题里至少有两道出自进程同步或死锁计算题基本就是页面置换、地址转换、银行家算法这种固定题型轮着出。后面章节当然也重要但它们的很多概念是建立在前三章基础上的。比如文件系统的目录结构要用到内存管理的页表思想设备管理的缓冲技术本质上是生产者消费者问题的变体甚至磁盘调度算法就是处理机调度算法换了层皮。你前三章不搞透后面章节的很多题目其实是做不动的只是你当时没发现而已。1.2 知识之间的内在咬合关系前两章看似是并列关系其实是递进关系。第一章告诉你操作系统到底在管什么——处理机、内存、设备、文件第二章把“处理机管理”拆细讲怎么管理进程、怎么调度进程、怎么让进程之间同步互斥、怎么处理死锁第三章讲“内存管理”从连续分配到分页分段再到虚拟内存。这三章合在一起回答的是操作系统最核心的问题怎么把一个程序从硬盘变成一堆正在运行的并发活动并且让它们不互相打架。复习的时候如果能顺着这条线走一遍比孤立地背知识点效率高得多。比如学到页面置换算法你应该能联想到进程调度里的时间片轮转它们背后都是同一个思想——资源有限、各实体轮流使用、如何决定下一个轮到谁。这种关联感建立起来之后简答题里让你“比较某种算法和其他算法优劣”的题基本不用背凭理解就能写。1.3 最常见的三种错误复习姿势第一种是把前三章当文科背。概念确实要背但光背定义不画图、不算题遇到状态转换题和缺页计算题照样懵。第二种是只刷选择题不做简答题和计算题。选择题有选项提示很多知识点你看着能选出来让你凭空写往往写不完整。第三种是觉得第一章不重要直接跳过——这最可惜第一章看似抽象其实是选择题和名词解释的稳定来源后面章节很多术语的定义都从第一章延伸出来的丢了就是白送分。2. 第一章“操作系统引论”这些送分考点别丢2.1 操作系统的定义、目标与四大基本特征第一章最基础的题就是“操作系统的定义是什么”。别小看这种题简答题和填空题里反复出现。答题要点要完整操作系统是管理计算机硬件与软件资源的系统软件是用户与计算机硬件之间的接口。这句话要拆成三层来记——它管理资源、它是软件而不是硬件、它提供接口。四大基本特征是并发、共享、虚拟、异步这些年几乎每份卷子都会直接或间接地考。难点在于“并发”和“并行”的区别并发是同一时间间隔内多个事件交替发生宏观上看是同时的微观上单核 CPU 其实是在轮流处理并行是同一时刻真正同时发生要求有多核硬件支持。选择题很喜欢把这两个概念混在一起出你只要记住并发是逻辑上的同时并行是物理上的同时就不会掉坑。共享特征要和互斥共享、同时访问区分开虚拟特征靠分时技术、虚拟内存这些具体手段体现异步特征说的是进程以不可预知的速度推进——这四个特征最好能各举一个例子写在旁边简答题一旦要你“结合实例说明”你不会卡壳。2.2 五大管理功能与体系结构处理机管理、内存管理、设备管理、文件管理、用户接口管理这五大功能几乎和前面说过的教材前三章框架一一对应也是一个很好的复习导航。考试时如果出一道“操作系统有哪些主要功能”的简答题你最好能写到每一功能下一两层处理机管理包括进程调度和进程同步互斥内存管理包括内存分配回收和地址转换设备管理包括设备分配和缓冲区管理文件管理包括文件存储空间和目录管理用户接口包括命令接口和程序接口。体系结构这块单体式、模块化、分层式、微内核这几种要能分清。层与层之间的调用关系是选择题爱考的——分层式结构中上层只能调用相邻下层不允许跨层调用。微内核的特点是什么都往外移只留下中断处理、进程通信等最基本的功能在内核里优点是可靠性高、易于扩展缺点是需要频繁进行用户态和内核态切换导致性能下降。这里“用户态和内核态”的切换问题是常客你得明白访管指令、系统调用和中断之间的关系。2.3 中断、系统调用与访管指令系统调用是操作系统提供给用户程序调用内核功能的一组接口用户程序通过访管指令从用户态陷入内核态执行完再返回用户态。选择题常见的错误选项是“系统调用和普通函数调用没区别”——实际上系统调用涉及状态切换、有内核入口、开销远大于普通函数调用而且你不能把系统调用当作库函数来调用两者层级不同。中断是第一章里概念密度最大的部分。要分清外部中断也称外中断、硬件中断来自 CPU 外部如 I/O 完成信号和内部中断也称异常、内中断来自 CPU 内部如缺页、非法指令、除零。很多同学会把“缺页”记成外部中断其实缺页是 CPU 在执行指令时发现页不在内存而触发的一种异常属于内中断。拍下这个细节选择题就多拿一分。2.4 第一章的简答题答题结构如果你复习时间紧第一章的简答题最常考的就那几个方向操作系统定义与目标、四大基本特征、五大管理功能、微内核的优缺点、系统调用与一般过程调用的区别。答题时记住一个模式先给定义、再列要点、最后配上例子。比如问“什么是多道程序设计”不要只写“内存中同时放入多道程序”要补上它实现的前提条件——CPU 与 I/O 并行工作、程序之间需要隔离和调度这样给分点才够。3. 第二章“进程与处理机管理”分值最高的章节怎么拿全分3.1 进程与线程先把这个核心差异吃透进程是资源分配的基本单位线程是处理机调度的基本单位。这句话是整章的灵魂几乎每个简答题和选择题都会绕回这里。进程拥有完整的地址空间和系统资源同一进程内的线程共享这些资源每个线程只保留自己独立的栈和寄存器上下文。选择题最经典的考法是给一段话让你判断描述的是进程还是线程。比如“同一个进程中的多个实体它们共享地址空间但各自拥有程序计数器”说的是线程“有独立的地址空间进程间通信需要借助系统提供的机制”说的是进程。判断标准就两条看资源边界看是否共享地址空间。很多人把线程理解成“轻量级进程”字面上没问题但考试答题时还要补一句“线程的创建和切换开销远小于进程因为不需要切换地址空间”。3.2 进程状态转换图必考的细节全在图里进程的五种基本状态是创建、就绪、运行、阻塞、终止。最常考的是就绪、运行、阻塞三者之间的转换条件。就绪到运行是被调度程序选中分配处理机运行到就绪是时间片用完或者被更高优先级进程抢占运行到阻塞是进程自身请求 I/O 或等待事件阻塞到就绪是等待的事件完成。这里有个高频易错点阻塞到运行是不存在直接转换的任何进程从阻塞恢复后必须先进就绪队列排队不可能直接上处理机。另一种易错方向是“运行态能不能被挂起”“挂起态和阻塞态什么关系”。引入挂起后会把一个进程从内存换到外存此时即使它具备运行条件也无法被调度。很多教材会画七态图考试时重点看的是原语操作和状态迁移条件比如“挂起就绪”被激活后变成“就绪”而“挂起阻塞”被激活后还是“阻塞”。3.3 信号量、P/V 操作与同步互斥信号量这个东西看起来只是个整数变量加两个操作但考起来花样很多。S 代表可用资源数目P 操作申请资源、S 减一V 操作释放资源、S 加一。当 S 小于零时S 的绝对值等于等待队列里阻塞进程的个数——这一步推导选择题经常考。用信号量实现互斥的套路很固定设置一个 mutex 初值为 1每个临界区前后分别做 P(mutex) 和 V(mutex)。这里最容易犯的错误是忘记 P 操作一定要放在进入临界区之前V 操作放在离开临界区之后如果某个分支里少写了 V或者两个 P 操作的顺序颠倒就可能造成死锁。实现同步的套路也是一个信号量对应一个资源或一个事件生产者和消费者之间需要两组信号量分别表示缓冲区空位和已填满的缓冲区数量。期末考试和考研都特别喜欢出这种题给你一个程序伪代码或场景让你补上信号量的初值和 P/V 操作位置。我的经验是拿到题先画一个简单的流程图标出哪个是临界资源、哪两个进程之间有先后制约关系再动手写代码正确率会高很多。经典的生产者消费者模型值得完整默写一遍很多变体题都是从它演化的。3.4 处理机调度算法选择题与计算题的双重阵地调度算法这节要掌握的比较点是几个指标周转时间、平均周转时间、带权周转时间、等待时间、响应时间。计算公式要写熟周转时间 完成时间 - 到达时间带权周转时间 周转时间 / 服务时间。选择题和计算题都爱考“谁的平均周转时间最短”这种结论你一定要记住短作业优先算法不抢占版本在平均周转时间上是最优的但代价是长作业可能被饿死。先来先服务的优点是公平、实现简单缺点是对短作业不友好短作业优先的平均等待时间最短但必须知道每个作业的服务时间而且容易让长作业长时间得不到服务优先级调度算法的关键是抢占式还是非抢占式以及优先级怎么定义——注意低数字到底代表优先级高还是低每个教材习惯不同做题前先看清楚题目说明时间片轮转算法里时间片大小的选择很讲究时间片太短进程切换开销大时间片太长会退化成先来先服务。这部分的计算题我要提醒一句很多同学看到“作业调度”“进程调度”就开始套公式却忽略题目给的是到达时间还是提交时间、进程是按顺序编号还是可以乱序选取。计算平均周转时间前先列一张表把每个进程的到达时间、服务时间、开始时间、完成时间、周转时间、带权周转时间全部一行行填完再计算步骤写清楚即使结果算错也能拿到过程分。3.5 死锁从条件到策略的系统梳理死锁这一节基本每次考试都会出现我最推荐的复习方法是把四个必要条件背成一条链互斥、请求与保持、不可剥夺、循环等待。四个条件必须同时成立才会死锁破坏任意一个就可以预防死锁。互斥条件一般不能破坏因为很多资源本质就是互斥的破坏请求与保持可以要求进程一次性申请全部资源破坏不可剥夺可以在占用者阻塞时强行剥夺其资源破坏循环等待可以对资源编号按序申请。死锁避免对应的是银行家算法这个算法期末考概率极高。核心是安全性检查系统当前可用资源为 Available每个进程有最大需求 Max、已分配 Allocation、还需要的 NeedNeed Max - Allocation。模拟分配某个进程后检查系统是否还处于安全状态也就是能找到一种进程执行顺序让每个进程按序完成。我做这种题的习惯是维护一张表进程 / Allocation / Need / Available每次找 Need 的每一项都不大于 Available 的进程让它执行完并回收资源更新 Available再继续找下一个。找不到就是不安全拒绝本次分配。死锁的检测和解除也要能说出思路。检测可以用资源分配图判断有没有循环等待解除常见的方法有资源剥夺、撤销进程、进程回退。选择题里爱问“哪种策略是事先防止、哪种是事后补救”记住预防和避免都是事前检测与解除是事后就够了。4. 第三章“内存管理”计算题和概念题的大本营4.1 连续分配把四个动态分区算法区分开内存管理的起点是连续分配方式其中动态分区分配算法是选择题考点的大户。首次适应算法的特点是按地址从低到高找第一个能放下的分区它优先利用低地址部分实现简单循环首次适应算法从上次查找结束的位置继续找分配更均匀但会缺乏大块低地址空间最佳适应算法按容量从小到大找最接近需求的分区产生的碎片最小但碎片数量最多查找成本高最坏适应算法总是选最大的空闲分区剩余空间可能仍比较大但大分区容易被拆光。选择题很爱让你判断某个场景该用哪个算法或者给四个碎片分布问哪个算法会产生这样的效果。还有个常考点是内部碎片和外部碎片的区别。连续分配和动态分区产生的主要是外部碎片因为空闲区被切割后分散在各处分页存储管理解决的是外部碎片问题而内部碎片出现在固定大小的分配中比如一个 3KB 的进程放进 4KB 的页框就浪费了 1KB。这个区分几乎每年都考。4.2 分页存储管理逻辑地址转物理地址是必会题分页这节的核心计算题就是用页表和地址结构做地址转换。一块一页、一页刚好放满一个物理块逻辑地址由页号和页内地址两部分组成。如果页面大小是 4KB那么页内地址占 12 位逻辑地址的其余高位就是页号。转换的时候查页表找到对应物理块号然后物理地址等于物理块号乘以页面大小再加上页内地址。我建议看到这种题不要直接心算先统一进制。比如逻辑地址是十六进制 0x8A5F页面大小 4KB 即 2 的 12 次方先把十六进制数拆开低 12 位 0xA5F 是页内地址高 4 位 0x8 是页号。如果页表中页号 8 对应的物理块号是 5物理地址就等于 5 × 4096 0xA5F也就是 0x5A5F。很多人犯错是将页号看错或者忘记页内地址位数由页面大小决定所以第一步永远先写出页内偏移的位数。还需要掌握页表项的相关计算。比如页表项大小是 4B页面大小 4KB那么一页能放 1024 个页表项。再比如系统逻辑地址空间有多大、有多少页让你算页表占多少内存这类题本质就是乘除法转换但要注意单位是位还是字节。多级页表、快表 TLB 的概念也要有印象TLB 是放在 CPU 内部的高速缓存命中后不用再访问内存查页表是解决页表访问开销大的手段。4.3 分段、段页式与分页的区别分段和分页的区别是必考对比题。分页对程序员透明页面大小固定是物理上的划分目的是离散分配以消除外部碎片分段是按程序的逻辑结构划分段长不固定对程序员可见方便共享和保护但会产生外部碎片。考试让你“说出分页和分段的区别”最好从地址结构、是否透明、碎片类型、共享保护、目的这几个维度各写一句不要只写一句“一个是定长一个是变长”。段页式结合了两者先按逻辑分段每个段再按大小分页地址结构是段号加段内页号加页内地址。这个结构的地址转换步骤是考试的高频计算题先查段表得到段起始地址和段长检查段号合法且段内偏移不超过段长再查页表得到物理块号最后加上页内地址。段页式需要三次访问内存才能得到物理地址这也是一个常考的点为什么需要快表的原因也在这里。4.4 虚拟存储与局部性原理虚拟存储器的理论基础是局部性原理程序在一段时间内集中访问一部分地址空间。时间局部性是指某条指令或某个数据被执行访问后不久很可能再次被访问空间局部性是指一旦访问了某个位置附近的位置很快也会被访问。选择题喜欢考“虚拟存储器的基础是什么”答局部性原理也会让你判断某一句话是时间局部性还是空间局部性比如循环体反复执行是时间局部性顺序访问数组是空间局部性。请求分页系统在页表项里增加状态位、访问字段、修改位、外存地址等信息缺页时产生缺页中断然后从外存调入页面。这里有一个非常容易混的点缺页中断属于内部中断不是外部中断。缺页中断的特点是在指令执行期间产生一条指令可能产生多次缺页中断因此处理起来比普通中断更复杂。4.5 页面置换算法缺页次数计算题详解页面置换算法这部分期末考试几乎必有计算题。最基础的是 FIFO、LRU、OPT 这三种进阶的是 Clock 算法也称最近未用 NRU 算法。刷题前先明确一个前提页框就是物理块数量物理块数小于进程页面数才会发生缺页刚开始的页框都是空的前面几次访问必然缺页。给你一个访问序列和一个页框数要你算缺页次数我的建议是把过程一行一行列出来。拿访问序列 1 2 3 4 1 2 5 1 2 3 4 5三个页框举例FIFO 换出的永远是最先进入内存的页这个例子里缺页 9 次LRU 换出的是最近最久未被访问的页这个例子里缺页 10 次OPT 换出的是未来最长时间不会被访问的页缺页次数最低是 7 次。看到这里你会发现LRU 未必一定比 FIFO 缺页次数少具体结果取决于访问序列。这个反直觉的例子里正好暴露了单一序列对比的局限性考试如果出“哪种算法一定最好”的选项一定要警惕只能说 OPT 理想最优但无法实现LRU 是性能较好的近似。Clock 算法的实现要点是为每个页框维护一个使用位把所有页框组织成环形队列访问页面时置使用位为 1缺页时从指针当前位置扫描遇到使用位为 0 的页框就替换遇到 1 则清 0 并继续移动。选择题常问“Clock 算法扫描过程中对使用位做了什么操作”答案是把 1 改为 0 并继续循环直到找到 0。这算法本质是 LRU 的一种简化近似牺牲一点命中率换实现简单。4.6 抖动、工作集与内存分配策略抖动的定义是系统频繁进行页面换入换出使得大部分时间都花在页面置换上CPU 利用率急剧下降。工作集是某段时间内进程实际访问页面的集合用于决定分配给进程的物理块数不能小于工作集大小。选择题经常给出一个现象描述让你判断这是不是抖动或者问减小抖动的方法——增加物理块、采用更好的置换算法、调整工作集策略都是方向但“增加进程数量”通常不是解决方法反而可能加剧抖动。内存分配策略有固定分配和可变分配、全局置换和局部置换这些组合。固定分配局部置换、可变分配全局置换、可变分配局部置换这三组组合的含义和适用场景最好整理成一张表。只要考试出了“系统采用哪种分配策略是否合理”的判断先看它能不能调整个数、能不能换别人的页面再回答。5. 试题里最折磨人的易混对照与选择题陷阱5.1 一张表理清高频易混概念下面这张表是我复习时自己整理对照的考前可以反复过几遍对比维度进程线程资源分配是基本单位基本不拥有资源共享进程资源调度早期以进程为单位是独立调度单位地址空间独立地址空间同一进程线程共享地址空间切换开销大涉及地址空间切换小只切换寄存器等上下文通信需要进程间通信机制可直接读写共享内存更重要的几组对照是并发与并行、分页与分段、内部碎片与外部碎片、死锁与饥饿、剥夺调度与非剥夺调度。死锁和饥饿的区别是选择题常挖的坑死锁是多个进程互相等待且都无法推进饥饿是一个进程长时间得不到所需资源其他进程可能正常运行死锁一定涉及循环等待饥饿不必然有循环等待。注意死锁的循环等待条件是必要条件而非充分条件存在循环等待不等于一定发生死锁。5.2 选择题里反复出现的标准陷阱排除了法对选择题很有用。下面三种陷阱出现频率很高。第一把概念定义掉包比如把“操作系统是应用程序”说成“系统软件和硬件的集合”或者把“处理机调度的基本单位”错误描述为进程正确答案应该是线程。第二把条件关系倒置比如“进程从阻塞态可以直接转为运行态”这不对必须先到就绪。第三把外部中断和内部中断混在一起比如把“缺页中断”说成是外部中断。填空题里也爱考这些细节系统调用通过访管指令触发操作系统对临界区的访问遵循空闲让进、忙则等待、有限等待、让权等待短作业优先算法理论上有最短平均周转时间但可能产生饥饿。如果你发现某道选择题的两个选项都在教材上出现过原话那通常考查的是限定条件比如是否抢占、是否考虑到达时间、是否要求一次集中申请所有资源。5.3 简答题的给分点与答题模板简答题光背不够还要知道给分点怎么分布。问你“什么是死锁产生死锁的原因和必要条件”要分别写出“多个进程因竞争资源而造成互相等待”“资源竞争和进程推进顺序非法”“四个必要条件”每个条件再稍微解释一句写四条以上才稳妥。问你“虚拟内存为什么可行”要从局部性原理、主存速度与容量限制、程序不需要一次性全部装入这三个角度写。我的经验是简答题永远不要只写结论后面跟上“例如”“也就是说”“具体体现为”的展开句。比如“引入线程的目的是减少程序并发执行时的开销”后面可以补“因为同一进程内线程切换不涉及地址空间切换所以比进程切换更高效”。这种半句解释在很多阅卷规则里就是多出来的给分点哪怕意思差不多写出来总比空着强。6. 我的三轮复习节奏、做题顺序与考场建议6.1 三轮复习法是怎么安排的第一轮是全面梳理我会把教材每一章的标题先抄成思维导图然后对着每个标题问自己“这节可能的考点是什么”。遇到概念就画图遇到算法就写一个最小例子跑一遍。这轮不要急目标是建立起“进程—调度—同步—死锁”和“内存—分页—虚拟—置换”这两条主线。第二轮专攻计算题和简答题把页面置换、银行家算法、地址转换、调度算法计算各做五道以上做到闭着眼能写出步骤。第三轮只刷错题和易混对照表考前两三天不再学新内容把概念表反复看几遍就够了。我特别推荐把往年试题按题型分类而不是按年份做。选择题单独整理错题简答题单独整理答案结构计算题单独整理计算步骤。这样到考前你手里就有三份浓缩材料比一本教材好复习得多。6.2 计算题的固定训练清单如果你时间有限计算题练下面几类就够了逻辑地址到物理地址的转换要求会用十六进制拆页号和页内地址FIFO、LRU、OPT 三种页面置换至少各算一遍缺页次数银行家算法的安全性检查要能从给定矩阵里找安全序列调度算法计算平均周转时间重点区分抢占和非抢占段页式地址转换的多步查表过程。做题时把每一步都写在答卷上即使最后数字错了也有步骤分。我当年为了卷面清晰专门养成了一个习惯先画表格列出关键数据再写公式最后写结果。这样既不容易算错也方便检查。比如页面置换题把访问序列和页框内容变化写成一行行的内存快照缺页次数一眼就能数出来。6.3 考场上的容错策略考试碰到没见过的题型先找关键词对应到具体知识点。看到“安全序列”“Available”“Need 矩阵”立刻想到银行家算法看到“缺页率”“页框数”“访问序列”立刻想到页面置换看到“用户态”“内核态”“访管指令”立刻想到系统调用和中断。这个条件反射可以靠考前默写关键词对应表来建立。还有一个容易忽略的技巧判断题和选择题遇到“一定”“总是”“永远”这类绝对化词优先怀疑说法不严谨。比如“短作业优先算法一定能保证最短平均等待时间”在没有抢占、没有同时到达等条件下才成立所以这类表述往往有问题。简答题如果时间不够宁可少写一道题的展开也要保证所有题都写了关键定义和核心列举项因为那种“完全空白”的题一分都拿不到写了多少总能捞回一点。我个人复习完前三章最大的感受是这些内容的逻辑链其实很短进程要运行先得有内存要高效还得换页要安全还得防死锁。你只要顺着这条链走所有知识点都能串起来。考前如果只能做一件事我建议你把进程状态转换图、页面置换算法、银行家算法三个内容再各写一遍抓住这三根柱子前三章的分数基本就到手了。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑