资讯详情

资讯详情

南航操作系统期末复习:从进程调度到PV操作的真题地图

简介《南京航空航天大学操作系统复习笔记》是一份面向操作系统课程复习与计算机考研冲刺的PDF学习资料共1个文件大小仅1.15MB。笔记围绕南航课程重点展开先梳理批处理、分时、实时、网络、分布式五类操作系统的特点与适用场景再归纳操作系统的目标、五大基本功能和并发、共享、虚拟、异步四大特征。进程管理部分讲解细致涵盖程序顺序执行与并发执行的区别、Bernstein并发条件、进程实体与PCB的作用、三种基本状态以及用户态与核心态划分并补充了进程创建方式、主要步骤和PCB四种组织方式。目前已有1331人学习下载。整份笔记以概念归纳、关键词提炼为主适合考前集中背诵名词解释和简答题也可用于快速建立操作系统整体知识框架。对于准备南航考研或期末复习的读者来说这是一份便于随身查阅的高性价比参考资料。1. 南航操作系统怎么考一份从真题倒推的复习地图操作系统这门课很多人是考前一周才翻开教材把进程、内存、文件系统从头背到尾结果一进考场就懵——背的全是选择填空大题却考了一道你没当回事的信号量。南航的操作系统课程不压分也不放水题型稳定但细节多判断题里藏概念陷阱综合题里套着计算和代码逻辑想在期末拿高分靠“通读教材”效率太低得靠真题倒推复习重点。这份复习笔记的价值在于把南航操作系统课程里真正会考的东西拆成一张可执行的地图每一章考什么、怎么考、计算题怎么下手、最容易丢分的点在哪。适合正在准备期末考的本科生也适合复试前快速捡起操作系统核心知识点的考研党。下面所有内容都按“概念先立住、再上手做题”的顺序展开照着走一遍比漫无目的地翻教材有用得多。2. 南航操作系统复习范围与参考材料先划清边界再动手2.1 南航操作系统考什么知识点权重与题型分布南航的《操作系统》课程没有官方指定教材但课程内容基本覆盖汤小丹《计算机操作系统》和王道《操作系统考研复习指导》的核心章节。从往年期末题看考查范围集中在六块操作系统引论、进程与线程、处理机调度与死锁、内存管理、文件管理、输入输出管理。其中进程与线程、内存管理、处理机调度这三章合计占了卷面 55% 以上的分值是绝对的主战场。章节常见题型预估分值占比操作系统引论与接口选择题、判断题8%进程与线程、同步与通信选择、简答、PV 大题25%处理机调度与死锁选择、计算、简答18%内存管理与虚拟存储选择、计算、简答17%文件管理与磁盘选择、填空、简答12%输入输出管理选择、判断题8%综合应用题PV、地址变换、调度算法12%复习时建议按“先重后轻”的顺序推进先把进程和内存吃透再处理调度和死锁最后用零散时间背文件和 I/O。引论部分分值低但白给考前过一遍教材第一章的课后习题即可。2.2 三份材料搭配使用教材、PPT 与王道笔记怎么分工常见做法是南航课程组自编 PPT 配合指定教材。PPT 用于划重点教材用于查概念细节王道笔记用于刷题和总结套路。我一般这样搭配材料用途使用方式南航课程 PPT把握老师强调过的考点对照 PPT 目录画章节骨架教材汤小丹版补充概念与算法细节只看 PPT 没讲透的部分王道复习指导刷选择题 背大题套路每章课后题做完一遍错题标记二刷历年期末真题模拟考场节奏考前至少完整卡时间做两套南航期末题型每年会小改但大方向稳定判断题侧重概念辨析简答题侧重“是什么、为什么、怎么做”综合题侧重计算与同步问题。建议把王道里每章的“本节小结”和课后题当作知识清单逐条自测能说出来就算过。3. 进程与线程调度算法比较与 PV 操作实战3.1 进程状态与调度算法从概念到计算题南航期末考试对进程这一章的考查一半落在状态转换图上另一半落在调度算法的计算比较上。状态转换图需要分清“就绪—运行—阻塞”三态以及新态、终止态在什么条件下出现。判断题和选择题常考“处于阻塞态的进程能否立即执行”“时间片到后进程进入哪个队列”这类基础概念看似简单但容易掉进状态表述不严谨的坑。调度算法部分FCFS、SJF、时间片轮转、优先级调度、多级反馈队列是必须手算的。常考形式是给定一组进程的到达时间和服务时间要求计算平均周转时间和平均等待时间。其中 SJF 又分抢占式和非抢占式考试一般要求两种都算一遍。步骤上先列表按时刻推进每一步标出当前可运行进程集合和实际执行进程。调度算法的参数对比考场上一张表说清楚算法核心指标优点缺点FCFS到达时间公平实现简单对短进程不友好非抢占式 SJF服务时间平均等待时间短长进程可能饥饿抢占式 SJF剩余服务时间响应更快上下文切换开销大时间片轮转时间片大小响应时间均衡时间片太小时系统开销大多级反馈队列动态调整兼顾响应与吞吐参数配置复杂做题时注意三点第一SJF 如果出现进程同时到达服务时间短的先执行第二时间片轮转里新到达进程一般排在队尾第三多级反馈队列高优先级队列耗尽或时间片用完进程会降级。这些细节南航期末题特别喜欢在“算对一半”的位置设置陷阱。3.2 信号量与 PV 操作从原理到可复现的代码模板PV 操作是南航期末综合题里最能拉开差距的题型题干通常给一个现实场景要求设计信号量并写出伪代码。很多同学能看懂别人的答案自己动笔就卡在“信号量初值设多少”“P 操作到底包住哪几行”。这里给出一套能直接套用的模板。以经典的生产者-消费者问题为例当缓冲区容量为 N 时伪代码如下// 生产者-消费者问题缓冲区容量 N semaphore mutex 1; // 互斥访问缓冲区 semaphore empty N; // 空闲缓冲区数量 semaphore full 0; // 已占用缓冲区数量 Producer() { while (1) { produce_item(); // 生成数据 P(empty); // 申请一个空缓冲区没有则阻塞 P(mutex); // 进入临界区前加锁 put_item(); // 将数据放入缓冲区 V(mutex); // 退出临界区解锁 V(full); // 已占用缓冲区数加一 } } Consumer() { while (1) { P(full); // 申请一个有数据的缓冲区 P(mutex); // 进入临界区前加锁 take_item(); // 从缓冲区取数据 V(mutex); // 退出临界区解锁 V(empty); // 空闲缓冲区数加一 consume_item(); // 处理数据 } }代码逻辑是生产者先 P(empty) 后 P(mutex)消费者先 P(full) 后 P(mutex)顺序不能颠倒。两个 P 操作如果写成先加锁再判断资源会造成缓冲区空或满时持锁等待阻塞其他进程这就是经典的死锁风险。信号量初值的设计规则是互斥信号量一律从 1 开始资源信号量从资源实际数量开始。写 PV 大题时先在草稿纸上列清三个要素——有几类进程、共享什么资源、互斥条件是什么再动笔。3.3 进程同步的三个隐蔽考点合并、拆分与信号量初值PV 大题还会变形为读者-写者问题、哲学家进餐问题。读者-写者问题的核心是“写者优先”还是“读者优先”南航期末简答题曾直接问过两者的区别。读者优先的实现要点是第一个读者进入时加写锁最后一个读者离开时释放写锁中间的读者不重复加锁。写者优先则在读者计数基础上增加写者计数实现稍复杂但原理一致。哲学家进餐问题常见陷阱是“同时拿起左叉导致循环等待”。解决方案有两种一是规定奇数哲学家先取左叉、偶数哲学家先取右叉破坏环路二是用互斥信号量限制同时进餐人数最多 4 人进入。两种方案都能拿分关键是把破坏死锁的四个必要条件写清楚。4. 处理机调度与死锁银行家算法的完整推导4.1 处理机调度的三个层次从作业调度到进程调度南航期末对处理机调度的考查常从三个层次切入高级调度作业调度决定哪些后备作业进入内存中级调度涉及进程换入换出低级调度进程调度决定哪个就绪进程获得 CPU。选择题爱考“某调度发生在哪个层次”判断题爱考“进程调度是操作系统中必不可少的调度”这些概念题不能丢分。周转时间、等待时间、响应时间的计算属于送分题但公式要记准确。周转时间 完成时间 - 到达时间带权周转时间 周转时间 / 服务时间。批处理系统偏好短作业优先分时系统偏好时间片轮转实时系统偏好抢占式优先级调度。小标题这里要留个心南航判断题常给“时间片轮转的响应时间与时间片大小无关”这种假命题直接判断为错。4.2 死锁的必要条件与银行家算法手算步骤死锁四个必要条件——互斥、请求并保持、不可剥夺、循环等待——在简答题里的出现频率很高。解答“如何预防死锁”时逐条对应破坏即可破坏互斥条件不太现实破坏请求并保持用资源一次性分配、破坏不可剥夺用主动释放、破坏循环等待用资源有序编号。银行家算法是死锁避免的必考计算题。南航的考查形式通常是给一张表含各进程的 Allocation、Max、Need 和系统 Available要求判断系统是否安全并给出安全序列。手算步骤按下面的流程走不会乱// 银行家算法安全检查核心逻辑 // 输入Available[], Need[][], Allocation[][] // 输出安全序列或提示系统不安全 Work Available; // 工作向量初始为可用资源 Finish [false, false, ...]; // 标记进程是否完成 // 每轮从头扫描 // 找到 Finish[i]false 且 Need[i] Work 的进程 // 令 Work Work Allocation[i] // 将 Finish[i] 置为 true加入安全序列 // 重复扫描直到一轮中没有进程可分配 // 若所有 Finish 均为 true则系统安全运算时注意资源分类别比较某个进程的 Need 三个维度都要小于等于 Work 对应维度才算满足。很多同学在这里翻车原因是把不同资源类型的数值混在一起相加。安全序列不唯一时按题号顺序优先分配即可。不死背例题数字重点掌握“找满足条件的进程 → 分配后回收资源”这步循环。王道操作系统笔记里这套流程归纳得很清楚考前至少独立手算两道完整例题。5. 内存管理虚拟存储与地址变换的计算套路5.1 分页存储管理中的地址变换每一步都要写出来内存管理是南航期末计算题浓度最高的章节之一。分页系统的地址变换是基础中的基础逻辑地址先拆成页号和页内偏移量查页表找到对应物理块号再拼接出物理地址。考试中常给页面大小 4KB逻辑地址十六进制表示要求求页号和偏移。这类题关键在进制转换的准确性。页面大小 4KB 4096B 2 的 12 次方所以低 12 位是页内偏移。一个 32 位逻辑地址高 20 位是页号低 12 位是偏移。做题时先把十六进制转成二进制从右往左数 12 位切开再分别转换。页表寄存器和快表的作用是选择题高频点快表命中时一次访问物理内存未命中时需要两次访问内存一次查页表、一次取数据有效访问时间 命中率 × 一次访问时间 未命中率 × 两次访问时间。请求分页里的页面置换算法是另一道常考计算题。OPT、FIFO、LRU 三种算法都要会手算缺页次数。给一个页面访问序列和 3 个物理块按算法逐行填表。OPT 看未来最远使用FIFO 看进入时间LRU 看最近最久未使用。手算时最容易错的是 LRU 把“最近最久未使用”理解成“最近刚使用过”方向完全相反。下表是三种算法的缺页对比示例算法访问序列第6次物理块状态是否缺页FIFO页面 A[A, B, C]命中FIFO页面 D[D, B, C]缺页A 被换出LRU页面 A[A, B, C]命中LRU页面 D[A, D, C]缺页B 被换出值得注意的坑是 Belady 异常FIFO 算法在物理块数增加时缺页率反而可能升高。这个点南航判断题考过属于“教材上有明确结论、但很多人没留意”的知识点。OPT 和 LRU 不会出现 Belady 异常答题时区分清楚。5.2 段式与段页式为什么南航更爱考页式分段和分页的区别简答题的常规问法是“分页和分段的主要区别是什么”。得分点在于分页是系统管理的需要页大小固定对用户不可见分段是用户编程的需要段长度可变对用户可见是信息的逻辑单位。分页地址空间是一维的分段地址空间是二维的。这些差异列成对比表更好记。段页式则是先分段再分页地址变换需要查段表再查页表访问一次数据需要 3 次访存所以一般引入快表优化。南航期末对段页式的考查以选择题为主重点在于理解“段表项里存的是页表始址和段长”而不是物理块号。能在卷面上准确画出段页式地址变换流程图的同学这道简答题基本就稳了。置换算法的类型判断也常出在概念题里最佳置换OPT是理论上最优但无法实现先进先出FIFO实现简单但可能产生 Belady 异常LRU 性能好但需要硬件支持。回答“为什么实际系统常用 LRU 近似算法”时要提到 LRU 需要记录访问时间或维护访问栈开销较大所以用引用位、修改位等近似方案。6. 期末避坑操作系统中 5 个高频失分场景6.1 调度与死锁计算题的 3 个典型错误现象一算 SJF 平均等待时间时把“服务时间”当成“剩余时间”分段累加导致结果偏大。原因是非抢占式 SJF 在选择下一个进程时只看当前时刻已到达进程的服务时间而抢占式 SJF 要看剩余服务时间。解决方法是做题前先看清题干里“可抢占”三个字是否出现没有明确说明时默认非抢占式。把每一步决策点的时刻、候选进程和剩余时间列成三列能有效避免算乱。现象二银行家算法检查安全性时进程的 Need 向量逐维比较但对 Available 的更新直接覆盖而不是累加。原因是 Work 向量每分配一个进程后等于 Work Allocation而不是等于该进程的 Allocation。解决方法是每轮找完所有可分配进程后再更新 Work按表格行推进每行单独计算不跳步。现象三资源编号法预防死锁的简答题答题只写“给资源编号”四个字没有解释循环等待如何被破坏。原因是理解停留在表面。解决方法是补一句“所有进程必须按编号递增顺序申请资源同类资源一次申请完从而不可能形成循环等待链”。简答题按采分点作答一句话一个点宁多勿少。6.2 PV 操作与内存计算的 2 个丢分点现象一写 PV 伪代码时对资源信号量的 P 操作放到了互斥锁之后。原因是对“先申请资源、再申请临界区使用权”的顺序没有形成条件反射。解决方法是记住口诀资源先行锁后行。两个 P 操作之间不要插入任何可能阻塞的操作否则容易造成持锁等待。南航期末题常考的就是这个顺序陷阱提前记住能避开一大半扣分。现象二分页地址变换算出来一个超过物理内存大小的物理地址却没有发现。原因是页表项里的物理块号没有判断合法性或者逻辑地址的页号超过页表长度。解决方法是做完地址变换后做一步校验物理地址 物理块号 × 页大小 页内偏移数值必须在物理内存范围内。这一校验步骤花不了十秒钟但能避免整道大题被扣分。7. 考前 48 小时从“背过知识点”到“能写出采分点”7.1 一张自测表快速定位薄弱环节最后一轮复习不需要再逐章看书直接用下面的自测表过一遍。每一条能在一分钟内说出关键术语和步骤就算通过说不出来的立刻回到对应章节补漏。自测问题涉及章节答不出的应对策略进程和线程的区别是什么至少说出三点进程与线程回看教材 2.1 节画对比表银行家算法安全序列怎么求请求资源时如何预分配避免死锁独立手算两道例题不看答案逻辑地址到物理地址怎么变换快表和页表如何配合内存管理抄写一次完整变换步骤LRU 和 FIFO 的缺页次数怎么手算虚拟存储找两个访问序列分别填表外存分配中连续、链接、索引各有什么优缺点文件管理用对比表归纳记关键词DMA 方式和中断方式的主要区别输入输出整理驱动方式对比背结论这张表相当于把整门课压缩成了六个检查点。补漏时用“三遍法”第一遍看教材对应段落第二遍合上书写出要点框架第三遍对照 PPT 检查遗漏。三遍都过的知识点上考场基本能稳定输出。7.2 自己给自己出题把知识点改造成考卷一个可复现的验证技巧是“出题人思维”你看完一章后假装自己是南航出题老师围绕这一章出 5 道选择题、2 道简答题、1 道计算题。比如看完进程调度给自己出一道“给定到达时间与服务时间比较 FCFS 和 SJF 的平均周转时间”看完内存管理就出“给定页面访问序列与 3 个物理块手算 FIFO 缺页率”。自己出得出的题说明你理解了考法出不出题的章节就是你还没吃透的章节。把自出的题目写在草稿纸上第二天再重做一遍。第一遍做对不代表掌握第二天还能独立做对才是真掌握。这个方法不需要额外资料只消耗时间但对巩固操作系统的核心计算题非常有效。我个人的习惯是考前最后一晚只看两类内容一类是算过的题里标过错的步骤另一类是简答题的采分点。不为新题焦虑不为背不完的知识点焦虑把已知的分数拿满就够了。这轮复习踩过的坑我记得最深的一课是PV 大题光看不写上了考场笔都是生的所以宁可少背几个概念也要亲手写完 10 道信号量题。希望帮到你。本文还有配套的精品资源点击获取
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →