首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
操作系统期末复习重点:进程调度、死锁与内存管理全攻略
📅 2026/10/15 8:59:01
✍️ 爱科研究院
👁 阅读 3,247
简介这份PDF笔记是面向山东大学操作系统课程期末备考的复习资料以导论、操作系统结构、进程管理三大模块为主线覆盖了操作系统概念与功能、启动过程、简单结构/分层/微内核三种结构设计、进程组成与状态转换、PCB、调度队列、进程间通信等高频考点。笔记中特别就进程与程序的区别、运行/等待/就绪三态转换时机、共享内存与消息传递的优缺点等易混淆问题给出了对比整理适合考前快速回顾核心概念与代码题要点。压缩包内为1个PDF文档共2.91MB内容结构清晰直接按章节顺序编排即可系统学习。该资源已有973人浏览学习对需要针对山东大学操作系统期末考点进行集中梳理的同学有较好的参考价值。1. 操作系统期末复习这份按重点标注的笔记能帮你少走一半弯路期末复习操作系统最怕的就是打开课本发现十章内容全是考点最后哪章都没吃透。这份笔记的价值在于它不是教材的简单摘抄而是把整门课压缩成了带明确作战标记的复习地图。进程管理、CPU调度、进程同步、死锁、内存管理、文件系统这些章节都被标注了重点和计算题/代码题属性哪些要写代码、哪些要会算周转时间和等待时间、哪些只要背概念一眼就能分清。适合两类人一类是整个学期没怎么听课、考前只剩一到两周需要抱佛脚的另一类是听课了但不知道考试侧重点、想把知识体系快速结构化梳理一遍的。笔记里对概念辨析和易混淆点的整理比较到位比如进程和程序的区别、并发与并行的差异、死锁和饥饿的异同这些恰恰是考试里最容易出简答题的地方。2. 先用 30 分钟把笔记结构读透它是笔记但也是一份考点权重表拿到这份笔记第一件事不是从导论开始背而是花半小时把整体结构看一遍搞清楚它覆盖了哪些章节、每个章节在考试中的可能权重、以及哪些内容是必须动手算或动手写的。2.1 章节地图十章内容背后其实是四条主线这份笔记大致覆盖了操作系统课程的核心章节导论与结构U1/U2、进程与线程U3/U4、CPU调度U5、进程同步U6、死锁U7、内存管理U8/U9、文件系统U10/U11。粗看是独立章节但本质上可以归并成四条主线。主线一是「操作系统是什么、怎么搭起来」对应 U1 和 U2。这部分主要解决概念题和简答题比如操作系统的作用、启动过程、用户态和内核态的区别。容易被忽略的是「操作系统是由中断驱动的」这个说法它串起了后面进程调度的很多逻辑。主线二是「进程怎么管理」对应 U3 到 U7。这条线是整门课的绝对核心也是最容易出大题的地方。进程的状态转换、调度算法计算、同步互斥的 PV 操作、死锁的判定和处理每一块都值得反复刷。笔记里大量标注了「重点」字样基本都是这条线上的内容。主线三是「内存怎么管」对应 U8 和 U9。固定分区、可变分区、分页、分段、虚拟内存、页面置换算法这些章节既有概念题也有计算题。特别是页面置换的几种算法FIFO、LRU、时钟算法几乎每年都会考一道计算比较。主线四是「文件怎么存」对应 U10 和 U11。这部分内容在考试中通常占比不如前面几条主线但文件分配方式和目录结构是简答题的常客FCB 和文件打开流程也是需要能完整描述出来的知识点。2.2 从标注看复习优先级笔记自带的「考点权重表」看一下笔记里的标注规律。「重点代码题」出现在进程章节和同步章节「重点计算」出现在调度、死锁、内存、虚拟内存、文件系统实现。「概念题」虽然没有明说但像分时操作系统、实时操作系统这些特征描述显然是为简答题准备的。按标注密度来排进程管理的优先级最高因为这里既可考概念题进程和程序区别又可考代码题父子进程的 fork 逻辑还可考调度计算。其次需要重点投入的是内存管理和虚拟内存因为这部分概念多且计算密集很多人在 TLB 命中、缺页次数计算上翻车。进程同步的重点集中在互斥、信号量和经典同步问题的代码写法上这部分是区分度最大的题型之一。死锁的理论框架要背熟银行家算法的安全性检查必须会手动推演。如果复习时间严重不足可以优先把标注了「重点」的章节过一遍U1、U2 和 U10 可以放到最后冲刺阶段用碎片时间背诵。2.3 笔记的使用节奏三轮过法而不是从头到尾读一遍我一般会建议把复习分成三轮。第一轮是「梳理框架」按上面说的四条主线把章节重新分组目标是知道每章考什么题型这一轮控制在一天内完成。第二轮是「逐章打透」按优先级从进程管理开始概念、计算、代码三线并进每章结束后做一次自我默写或口头复述。第三轮是「查漏补缺」拿到一套往年真题或模拟题按照考试时间完整做一遍把暴露出来的薄弱点再回到笔记里补。这个节奏的核心思想是笔记是一张地图不是一本小说。逐字逐句读十遍不如带着考点定位读两遍。3. 进程与调度从状态转换图到调度算法计算全流程拆解进程章节是整份笔记里体量最大、标注最多的部分也是概念题和计算题的密集区。这一章学扎实了后面死锁和内存管理很多概念都能串起来。3.1 进程状态转换图四个转换一个都不能少笔记里列出了四个状态转换关系运行到等待等待某事件发生典型是发出 I/O 请求、等待到就绪等待的事件发生了、运行到就绪时间片到或出现更高优先级进程、就绪到运行被调度程序选中。这四个转换必须能默画出来。画图时有几个容易出错的边界要格外注意。新建态和终止态在笔记里没有重点展开但状态转换图通常是要包含这两个状态的完整的状态图应该从新建到就绪、从运行到终止都画出来。第二个坑是「运行到等待」和「运行到就绪」的区别前者是进程自愿让出 CPU等待外部事件后者是被迫让出 CPU比如时间片耗尽了或者被更高优先级的进程抢占了。第三个坑是把「等待到就绪」和「就绪到运行」混在一起这两个转换之间还可能隔着调度器的选择过程并不是等待的事件一发生就立刻上 CPU 运行。提示考场上画状态转换图建议把四个转换原因都标在箭头上只画图不标原因是常见的丢分点。PCB进程控制块这部分需要记住进程 程序 数据 PCB这是构成进程的三要素。PCB 里记录了进程的标识信息、处理机状态、调度信息、控制信息是系统感知进程存在与否的唯一实体。概念题如果问「进程和程序的联系与区别」除了笔记里列的四点之外可以补充一句「进程是程序的一次执行过程同一个程序被多次执行会对应多个不同的进程」。3.2 调度算法计算FCFS、SJF、RR 的公式化记忆调度章节标注了「重点计算」这意味着要会动手算。笔记里出现的算法包括 FCFS、SJF含抢占式 SRTF、HRRN、优先级调度、RR 时间片轮转。衡量指标有 CPU 使用率、吞吐量、周转时间、等待时间、响应时间。计算周转时间和等待时间是考试最常见的考法。周转时间 完成时间 − 到达时间等待时间 周转时间 − 执行时间也就是真正占用 CPU 的时间。如果题目给出了进程的到达时间和需要的 CPU 时间先用甘特图画出调度序列然后逐个进程算出完成时间再套公式。FCFS 的劣势是护航效果一个长进程排在前面后面所有短进程都要等。SJF 在非抢占形式下能得到最小平均等待时间但缺点是容易让长作业饥饿。RR 的时间片选择是关键参数时间片太大退化成 FCFS太小则上下文切换开销太大。笔记里有一句很精辟的话——「希望时间片比上下文切换时间长」这是做选择题时判断时间片设置是否合理的重要依据。HRRN最高响应比优先的响应比公式是 (等待时间 服务时间) / 服务时间这个算法综合了 FCFS 和 SJF 的思路既照顾短作业又避免长作业饥饿。考试中如果出现 HRRN 的计算题一般会给出进程的到达时间和执行时间要求按动态计算响应比的方式确定调度顺序。3.3 多级队列与多级反馈队列弄懂设计思想差异才能答好简答题笔记里专门提到了一个可能考 10 分的大题多级队列调度和多级反馈队列调度的设计思想有何不同。这两个算法都在就绪队列上做了文章但思路正好相反。多级队列的核心思想是「分类隔离」把就绪队列按进程属性分成多个独立队列比如前台交互进程放一队、后台批处理进程放一队每个队列有自己的调度算法队列之间用固定优先级抢占调度。它的特点是进程一旦进入某个队列就不会再换队列优先级低的队列永远不会被高优先级队列抢占时误伤。多级反馈队列的核心思想是「动态调整」允许进程在不同队列之间移动。如果一个进程占用 CPU 时间过长它会被挪到更低优先级的队列去避免长期霸占 CPU如果一个进程在低优先级队列等待时间过长了会被提升到更高优先级队列。设计目标是兼顾响应时间和吞吐量。答题时可以从三个维度对比进程是否可在队列间移动前者否、后者是、优先级是否固定前者固定、后者动态、设计目标前者是区分交互进程和批处理进程、后者是同时兼顾 I/O 约束和 CPU 约束进程。从算法优劣评价的角度多级反馈队列更灵活但又更复杂、更难调参。4. 同步与死锁信号量代码、银行家算法和安全序列是一对搭档进程同步和死锁这两章是复习时最容易产生「听懂了但不会做题」感觉的地方。听懂了是因为概念不算复杂不会做题是因为代码题和安全性检查需要动手练熟。4.1 信号量与 PV 操作别只背 P 和 V要会写完整同步代码信号量的概念本身不复杂S 是一个整数变量除了初始化之外只能通过 P 操作和 V 操作访问。P 操作也称为 wait、down是申请资源若 S≤0 则阻塞V 操作也称为 signal、up是释放资源唤醒等待队列中的进程。计数信号量的值域不受限制二进制信号量互斥锁的值只能是 0 或 1。笔记里提到的自旋锁值得单独拎出来理解。自旋锁是忙等待的信号量变体进程在等待锁的时候不阻塞自己而是持续循环检查锁是否可用。它在单处理器上是有问题的只有一个 CPU拿着锁的进程和被卡在自旋里的进程需要争抢同一个处理器。但在多处理器系统中是有意义的一个线程在一个处理器上自旋等待另一个线程可以在另一个处理器上执行临界区代码等临界区执行完自旋的线程就能立刻拿到锁避免了阻塞和唤醒的上下文切换开销。这是面试和笔试都爱考的知识点。考试中的信号量代码题主要有三种生产者-消费者问题、读者-写者问题、哲学家就餐问题笔记里没有展开哲学家问题但生产者-消费者和读者-写者是明确写了的。写这类代码有几个固定套路互斥锁保护缓冲区的操作、empty 信号量控制缓冲区空位数、full 信号量控制缓冲区满位数。生产者每次 P(empty) 再 P(mutex)消费者每次 P(full) 再 P(mutex)释放时先 V(mutex) 再 V(full) 或 V(empty)。这个顺序不能反过来否则可能发生死锁。读者-写者问题的核心是「写者优先还是读者优先」的选择笔记里写的是要求写者对数据库有排他的访问那就是读者优先的经典版本——第一个读者进入时加锁阻止写者最后一个读者离开时解锁放行写者。4.2 死锁四条件背下来只是及格能解释才拿分死锁的四个必要条件是互斥、占有并等待、非抢占、循环等待。考试最常见的题型是给一个资源分配场景让你判断是否可能发生死锁。判断逻辑是只要四条件有一个不成立就不会死锁但四条件同时成立也不一定死锁只是可能死锁。笔记里对死锁处理和死锁预防的策略分得很清楚。死锁预防是静态策略在设计资源分配算法时就确保至少有一个条件不成立。比如「进程在执行前申请并获得所有需要的资源」对应打破占有并等待「把所有资源类型进行完全排序并要求按递增顺序申请」对应打破循环等待「把非抢占变为抢占」对应打破非抢占条件。死锁避免是动态策略在资源分配过程中通过算法判断是否安全最常见的就是银行家算法。银行家算法的关键点在于「安全状态」的判断。安全状态是指存在一个进程序列让每个进程所需的资源数都小于当前可用资源数加上它前面所有进程释放的资源数。考试时把 Allocation已分配、Max最大需求、Available当前可用三张表列出来先算 Need Max − Allocation然后用安全性算法逐个模拟进程能否顺利完成。做题的快捷方式是每次都从 Need 能小于当前 Available 的进程里挑一个执行完把它占用的 Allocation 释放回 Available重复直到所有进程都执行完或出现某个进程的 Need 大于当前 Available 就停止。资源分配图的判断也是常考内容。如果图中没有环一定不会死锁有环的情况下如果每种资源都只有一个实例那么环的存在意味着死锁。若一个资源有多个实例有环只是可能死锁需要通过计算验证。4.3 死锁和饥饿五个维度的辨析要写全笔记里专门有一段关于死锁和饥饿异同的对比这是简答题里比较有区分度的考点。相同点是两者都由竞争资源引起。不同点可以从五个角度写第一状态不同。死锁进程都处于等待状态饥饿进程可能处于忙等待比如自旋状态。第二等待的对象不同。死锁等待的是永远不会被释放的资源饥饿等待的是会被释放但不会分配给自己的资源。第三是否构成循环。死锁一定有循环等待饥饿不需要循环。第四涉及进程数量不同。死锁一定涉及多个进程彼此纠缠饥饿可能只涉及一个被冷落的进程。第五系统整体表现不同。饥饿发生时至少有一个进程能正常运行只是某个进程得不到执行机会死锁可能导致整个系统崩溃。答题时把这五点写全比只写两三句拿到的分数要高得多。5. 内存与虚拟存储页面置换、TLB 和缺页计算的避坑指南内存管理是概念和计算并重的章节。U8 讲的是基本的内存分配方式U9 讲的是虚拟内存这两章在考试中的计算题主要集中在分页系统、置换算法和缺页次数的统计上。5.1 分页与分段两张表、两次访问、TLB 的作用分页和分段的对比是概念题的经典考法。分页是按固定大小把用户进程空间切成页物理内存切成同样大小的帧页表做映射。分段是按程序自身逻辑划分成段每段独立编址段表记录段号和段基址的映射。分页没有外碎片只有内碎片页内浪费分段没有内碎片但有外碎片段间空隙段页式则综合了两者。分页系统的地址访问流程要能说清楚CPU 生成逻辑地址后先用页号在 TLB 中查找。TLB 是并行的同时和每一项比较命中直接拿到帧号未命中则访问内存中的页表拿到帧号后再访问主存。笔记里提到二级页表要访问三次内存——两次查页表、一次访问数据。这个「访问次数」是选择题常考的点。有一点需要特别提醒逻辑地址和物理地址的概念辨析。逻辑地址是 CPU 生成的物理地址是内存单元实际看到的。编译时和加载时绑定产生的逻辑地址与物理地址相同运行时绑定方案下两者不同。答题时先用一句话给出定义再用编译/加载/运行时三个阶段说明差异即可。5.2 页面置换算法FIFO、LRU、时钟算法的计算差异页面置换是虚拟内存章节里计算题的集中区域。给出一串页面访问序列和帧数统计缺页次数是标准题型。FIFO 缺页次数好数先进先出即可LRU 需要看最近一次访问时间每次淘汰最近最久没被访问的页最优置换算法在考场上没法实际用因为需要预知未来的访问序列它只能作为理论下界和其他算法做对比。时钟算法二次机会算法是从 FIFO 演进出来的也是考试里区分度较高的算法。每个页维护一个引用位 U初始为 1。发生缺页时指针指向最早调入的页如果 U0 就置换它如果 U1 则把 U 改成 0指针移到下一页继续检查。这相当于给了每个页面一次「免死金牌」——在最近一轮中被访问过的页面不会立刻被淘汰。增强型二次机会算法再增加一个修改位 M优先淘汰 (U0, M0) 的页面然后是 (U0, M1)因为修改过的页在换出时需要写回磁盘代价更高。做这类题的常见错误是忘了按位更新访问位。LRU 用栈实现时每次访问某个页都要把它从栈中移到栈顶题做的多了你会发现这个操作比想象中繁琐但考场上最好还是用「最近访问时间登记表」的方式手工模拟不容易出错。注意FIFO 可能产生 Belady 异常即增加帧数反而导致缺页次数增加。LRU 和最优置换不会。这是一个常问的知识点值得单独记。5.3 系统颠簸现象、成因和解决路径颠簸thrashing是虚拟内存里的高频概念题。定义为一个进程的换页时间已经大于运行时间系统频繁地在内存和磁盘之间搬运页面CPU 使用率反而下降。派生的现象是「CPU 使用率低磁盘 I/O 频繁」原因是分配给进程的帧数不足以容纳其工作集。解决路径可以用笔记里的页错误率策略来描述页错误率过高则增加分配帧数页错误率过低则减少分配帧数。此外还可以采用局部置换每个进程只从自己分到的帧里选置换页或通过工作集模型预估进程需要的最小帧数。理解颠簸不需要死记定义把它想成「进程还没热起来就被换出换回来又要重新积累工作集」就通了。5.4 文件系统连续、链接、索引三种分配方式的适用场景U11 文件系统实现里为文件分配空间的三种方式——连续分配、链接分配、索引分配——是简答题的常规考点。连续分配简单且访问性能好但存在外碎片、文件扩展困难链接分配没有外碎片文件扩展容易但不支持直接访问要顺着链表走而且指针本身的损坏会导致整条链无法使用索引分配把指向每个块的指针集中在索引块里兼顾了随机访问和扩展性但需要额外的索引块空间开销。FAT文件分配表可以简单理解为把链接分配方法中的指针统一收到内存中的一个表里表中的下标是块号、值指向下一个块号这样既保留了链式分配的灵活性又能加快随机访问的速度。页面共享的概念题也不难。共享页面要求代码是「可重入」的不会在执行期间修改自身每个进程有自己的数据页和寄存器副本这样多个进程的页表里可以把同一份代码页映射到同一个物理帧。答题时画一个多个进程页表指向同一帧的示意图即可。6. 考前如何用这份笔记做最终验证三遍默写法与重点抽样测验笔记使用到最后阶段重心要从「学」变成「验」。如果不做输出验证很多内容就像沙漏里的沙子看着满满的倒过来就漏光了。我常用的方法是「三遍默写」。第一遍对着笔记章节标题把所有能想起来的关键词写在白纸上。进程章节PCB、状态转换五态、fork、僵尸进程、共享内存、信号量……写完对照笔记查漏。第二遍是针对计算题做抽样测验从笔记的调度算法、银行家算法、页面置换三个部分各抽两三道场景题自己设计一个访问序列或内存分配表并手算。第三遍是挑简答题进行全文默写比如「描述进程与程序的四点区别」「死锁与饥饿的异同」这一遍最关键因为考场上前两种题型丢分空间有限简答题的表述完整度决定分数波动。验证的另一个维度是「做真题」。如果有往年的模拟卷或真题掐时间做一套做完把错题对应的笔记片段找出来看。这一步会暴露出很多平时复习注意不到的细节比如时间片的定义用反了、逻辑地址和物理地址的转换公式记差了。最后说一个小技巧把笔记里所有「重点计算」「重点代码题」标记的章节单独列一张清单当作复习的「必过名单」每过一章就在清单上打个勾。我当年期末复习时吃过一次亏临考前三天才发现文件分配方式需要比较三种形式的异同之前一直没完整梳理过。从那以后我每次拿到别人的复习笔记都会强制自己先按标注做优先级排序再动手复习。希望这份拆解能帮你在同样的时间里少走一点弯路。本文还有配套的精品资源点击获取
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/10/15 8:59:01
多组学特征选择实战:TriVote三重投票算法解析与标志物挖掘
2026/10/15 8:59:01
Django+Vue构建高校就业数据分析平台实践
2026/10/15 8:59:01
Qt TCP通信开发核心要点:从socket到协议设计、粘包与心跳实战
2026/10/15 9:54:22
关键牌找牌技术:数学魔术与记忆训练的核心原理
2026/10/15 9:54:22
PostgreSQL联表查询加锁:三大隐藏陷阱与排查实操
2026/10/15 9:54:22
用Fabric实现自动化部署:从手动SSH到一键发布脚本
2026/10/15 9:54:22
OpenClaw傻瓜版:自然语言操控计算机的终极方案
2026/10/15 9:54:22
DenseASPP:密集连接空洞卷积,让多尺度特征融合更连续
2026/10/15 9:49:21
Ansible自动化Ubuntu系统备份方案与实践
2026/10/15 0:02:59
AI Coding时代的柔性之美:从静态软件到自演化软件,软件研发正在重新进化
2026/10/15 0:02:59
亨得利客户服务中心官方网点分布一览:2026年全国多城门店地址与最新联系电话公布
2026/10/15 0:02:59
防关联浏览器哪个好?三款产品实测差异解析
2026/10/13 12:25:09
流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南
2026/10/14 18:35:19
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别
2026/10/14 14:52:59
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容
2026/10/15 1:07:55
我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
2026/10/15 5:07:59
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026/10/15 8:10:01
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)