
简介南京航空航天大学操作系统复习笔记是一份面向计算机考研与期末复习的浓缩资料系统梳理了操作系统核心概念、五大类型、设计目标、基本功能与主要特征并按章节摘录进程管理、PCB、状态转换等关键考点适合备考南航及同类院校操作系统课程的读者快速巩固。资源共1个PDF文件压缩包大小1.15MB内容精炼便携适合打印或手机随时翻阅。笔记从批处理、分时、实时到网络与分布式系统均有覆盖同时详解进程实体、并发执行条件、内核与用户态划分等易考点内容预览显示其中包含完整知识点框架与记忆要点。目前已有1331人学习浏览这份笔记可帮助读者建立操作系统整体脉络免去大量抄录整理时间是一份性价比很高的考前冲刺资料。1. 操作系统复习为什么总在“背了又忘”和“算了看不懂”之间反复横跳南京航空航天大学的操作系统课程期末复习的痛点和别校不太一样。一是课时紧张很多院系把操作系统压缩在 32 到 40 学时里讲完进程管理、内存管理、文件系统、设备管理四大块全塞进去老师上课只能挑重点讲剩下全靠自学二是南航的考题风格偏“应用题驱动”PV 操作、银行家算法、页面置换、磁盘调度这些计算型大题占了 50 分以上纯背概念根本拿不到分三是教材用的是汤小丹那本《计算机操作系统》课后题量大但考试真正考的变形题和课后题不完全重合照着课后题刷容易翻车。这门课不像数学有明确公式链也不像网络有清晰分层它的知识点像一张网——进程和内存纠缠、文件和设备纠缠复习时如果只看单点做综合题必死。这篇笔记按南航考试的出题权重来组织把每个高频考点的原理、做题步骤、踩坑记录拆开讲目标是让你合上书能自己推一遍完整流程而不是对着笔记背一遍然后上考场现挂。2. 进程与线程南航卷面上占比最大的一块先分清“状态”再谈“调度”2.1 五状态模型与七状态模型画图能救你半道题的分进程状态转换是南航选择题和简答题的常客而且喜欢在“就绪→运行”“运行→阻塞”之间挖坑。最基础的五状态模型——创建、就绪、运行、阻塞、终止——必须闭着眼睛能画出来。但考试真正拉分的是七状态模型多了“挂起就绪”和“挂起阻塞”两个状态引入挂起状态的目的是缓解内存不足当内存紧张时把阻塞队列里的进程整批换到外存变成挂起阻塞如果内存还是不够再把就绪队列的进程也换出去变成挂起就绪。做题时容易混淆的点挂起就绪和就绪的区别在于是否在内存中前者在外存后者在内存挂起阻塞和阻塞同理。调度器只能从内存中的就绪队列挑选进程不能直接调度外存里的挂起就绪进程——必须先激活换入内存。南航 2021 年考过一道 8 分简答画七状态模型图并说明各状态转换的触发条件很多人把“挂起就绪→挂起阻塞”画反了实际转换关系是挂起就绪只能被激活变为就绪挂起阻塞可以被激活变为阻塞也可以因为等待的事件发生直接变为挂起就绪——注意事件发生在挂起状态下时进程不会直接进入就绪队列它还在外存里必须先激活才能被调度。2.2 进程控制块与上下文切换别把“切换开销”当成纯理论进程控制块PCB是操作系统中最重要的数据结构没有之一。PCB 里存什么进程标识符、处理机状态通用寄存器、程序计数器、程序状态字、进程调度信息优先级、状态、进程控制信息通信信息、资源清单。南航喜欢考“PCB 由谁创建和撤销”——答案是操作系统内核不是进程自己。进程自己只能创建子进程不能创建自己的 PCB子进程的 PCB 由父进程通过系统调用触发内核创建。上下文切换的开销是这几年反复出现的考点题型从“下列哪项不是上下文切换开销”到“计算切换时间占比”都有。上下文切换的本质是保存当前进程的 CPU 现场寄存器、PC、PSW到它的内核栈或 PCB再恢复下一个进程的现场。题目常见陷阱把用户态和内核态的切换等同于进程上下文切换——不对系统调用发生时是模式切换不一定会切换进程模式切换开销远小于进程切换因为它不涉及保存整个进程现场。有一道经典计算题CPU 时间片为 10ms上下文切换需要 0.1ms问切换开销占比——答案是 0.1 / (10 0.1) ≈ 0.99%不是 0.1/10 1%很多人漏了切换过程本身也占用 CPU 时间。2.3 调度算法比较先会算平均等待时间再谈“哪个算法好”调度算法这块南航近五年考过三次大题间歇性地考一次小题。需要熟练掌握的算法有六个先来先服务、短作业优先、高响应比优先、时间片轮转、优先级调度、多级反馈队列。前三个面向批处理时间片轮转和优先级面向交互式多级反馈队列是综合题的高频素材。计算平均等待时间是基本功但南航不满足于让你算一个普通 FCFS它喜欢把“短作业优先的抢占式版本”——最短剩余时间优先——混进来。有个容易错的细节SJF 非抢占式的平均等待时间一定不差于 FCFS但如果是抢占式可能产生“长作业饥饿”问题。高响应比优先的公式必须记牢响应比 (等待时间 要求服务时间) / 要求服务时间每次调度时重新计算所有就绪进程的响应比选最高的。它的好处是兼顾长短作业但每次调度都要重新计算开销比 FCFS 大。多级反馈队列的规则要能默写多个就绪队列优先级从高到低时间片从短到长新进程先进最高优先级队列队列内用时间片轮转低优先级队列的进程只有高优先级队列全空才能被调度进程用完时间片没执行完降级到下一队列。南航 2023 年考过一道综合大题给出了三队列多级反馈队列、每队列时间片分别为 2、4、8给了五个进程的到达时间和服务时间要求画出调度甘特图并计算平均周转时间。这种题没有捷径只能按时间轴一步一步推最容易出错的地方是“进程在哪个队列被抢占”——比如进程正在第一队列执行时间片还没用完此时第二队列来了一个进程不抢占第一队列的进程继续执行但如果进程在低优先级队列执行时高优先级队列来了新进程必须立刻被抢占。2.4 进程同步与 PV 操作南航大题的“钉子户”答题格式比答案更重要PV 操作是南航操作系统试卷里最稳定的大题几乎每年必考分值在 10 到 15 分之间。题型集中在三类生产者-消费者变体、读者-写者变体、哲学家进餐变体。但南航的题目通常不是原题而是在场景上做了包装——比如“某医院有挂号窗口和取药窗口病人必须先挂号再取药”本质还是生产者-消费者比如“某停车场只有一个入口和一个出口管理员每放行一辆车入口闸机抬起一次”本质是资源信号量控制。写 PV 操作题必须养成固定答题格式先定义信号量并说明初值再写每个进程的代码代码里 P、V 操作必须成对出现注释写明每个 P 操作等的是什么资源。这里有个血泪经验不要在代码里只用 P 操作而不用 V也不要在一个进程里连续 P 两个信号量时不考虑死锁风险——经典错误是先 P 互斥信号量再 P 资源信号量如果资源为 0会把自己阻塞在临界区里其他进程也无法进入形成死锁。正确顺序是先 P 资源信号量再 P 互斥信号量。有一个南航高频变体值得单独说缓冲区大小为 n 的环形缓冲生产者-消费者。定义三个信号量mutex 1互斥访问缓冲池、empty n空缓冲区数、full 0满缓冲区数。生产者P(empty) → P(mutex) → 放入数据 → V(mutex) → V(full)。消费者P(full) → P(mutex) → 取出数据 → V(mutex) → V(empty)。注意这里的 empty 和 full 的 P 操作顺序不能互换——如果先 P(mutex) 再 P(empty)当缓冲区满时生产者占据互斥锁等待 empty消费者没法进入临界区取数据死锁。南航有一年把缓冲池大小从 n 换成了 1问还需不需要 mutex——答案是缓冲区大小为 1 时mutex 可以省略因为 empty 和 full 已经天然互斥但写上也不扣分考试时建议写上以保格式完整。2.5 死锁银行家算法要按表格推死锁定理要会找循环等待死锁这块南航考过银行家算法大题、死锁必要条件简答、死锁检测的选择题。银行家算法的题目特征是给一张表格——各进程的 Allocation已分配、Max最大需求、Available可用资源让你判断系统是否安全并给出安全序列。做题的正确打开方式是画一个安全判断表每轮找出 NeedMax - Allocation≤ Available 的进程假设分配给它运行完释放 Allocation更新 Available继续下一轮。这里有个易错点Need 矩阵要在第一步就算好不要在推导过程中临时算否则容易算错。另一个易错点是Available 初始值不等于资源总数而是资源总数减去所有进程 Allocation 之和。如果题目给的表格里 Available 有明确值就直接用没有的话才自己算。死锁的四个必要条件是互斥、请求并保持、不可剥夺、循环等待简答题经常要求“说明如何破坏每个条件”——互斥条件很难破坏有些资源必须互斥比如打印机可以通过 SPOOLing 技术把独占设备虚拟化为共享设备来缓解请求并保持可以通过“一次性申请所有资源”来破坏不可剥夺可以通过“申请不到就释放已有资源”来破坏循环等待可以通过“资源有序分配法”来破坏。南航对第四点的考察频率最高要能说清楚有序分配法为什么能破坏循环等待给所有资源类型编号规定每个进程只能按编号递增的顺序申请资源就不会形成环形链。死锁检测和死锁避免的区别也常考死锁避免银行家算法是在分配前判断这次分配是否会导致不安全状态不会则不分配死锁检测是允许分配周期性检查是否已有死锁发现后用撤销进程或资源剥夺的方式解除。死锁检测的资源分配图化简是小题常客——逐步消去不阻塞的进程如果能消去所有边则无死锁否则死锁。3. 内存管理从连续分配到页面置换南航计算题的第二大分仓3.1 连续分配与伙伴系统外部碎片的成因要说清连续分配方式包括单一连续、固定分区、动态分区。固定分区的缺点是内部碎片——进程装入分区后没用完的空间无法被其他进程使用动态分区的缺点是外部碎片——内存中存在大量不连续的小空闲块每个都小于进程所需大小。动态分区的分配算法有首次适应、最佳适应、最坏适应、邻近适应。南航考的多的还是前两个要记住它们的性能对比首次适应算法按地址递增顺序找第一个满足要求的空闲分区优点是偏向利用低地址部分、查找开销小但会形成许多碎片最佳适应算法选能满足要求的最小空闲分区碎片最小但可能产生大量无法使用的小碎片而且每次都要遍历全部空闲分区。选择题的经典问法是“哪种算法最容易产生大块空闲区”——最坏适应因为它每次都选最大的空闲分区分配剩余空间仍然可能较大。伙伴系统的计算题偶尔出现请求分配 2^k 大小的内存块若没有恰好匹配的空闲块则不断分裂直到产生足够大的块。释放时若伙伴块空闲则合并。伙伴系统的合并条件是两个块大小相同、地址连续、且由同一块分裂而来——判断“是否由同一块分裂”的标准是两个块地址互斥即除了大小位以外地址位完全相同。做题时画二叉树最快每次分裂产生左右孩子释放时检查同父节点的兄弟是否空闲。3.2 分页存储管理页表项的计算必须零失误分页是南航计算题的重灾区每年至少有一道关于页表大小、逻辑地址转换、有效访问时间的计算题。公式不多但必须精确掌握换算逻辑地址结构 页号 页内偏移页内偏移位数 log2(页面大小)页号位数 log2(页数)。物理地址 块号 × 页面大小 页内偏移注意这里的页内偏移和逻辑地址的页内偏移完全一样不需转换。经典计算题某系统页面大小为 4KB逻辑地址为 32 位则页内偏移占 12 位页号占 20 位最多支持 2^20 1M 个页面若页表项占 4B单级页表最大占用 1M × 4B 4MB。如果内存物理地址为 36 位页面大小 4KB则物理地址空间有 2^24 个页框页框号占 24 位。页表项里除了页框号还要放有效位、访问位、修改位等标志所以页表项通常不止 4B——这是南航喜欢埋的陷阱题目问“页表项最小是几字节”你要根据页框号位数向上取整加标志位。有效访问时间 EAT 的计算公式要背熟EAT (1 - p) × 访存时间 p × 缺页处理时间如果有快表TLB则分两种情况——快表命中和快表缺失。典型公式EAT 命中率 × (TLB 查询 访存) 缺页率 × (缺页处理) (1 - 命中率 - 缺页率) × (TLB 查询 两次访存)这里“两次访存”是因为页表在内存中逻辑地址到物理地址的转换要读一次页表。做题时注意快表命中时只需一次访存。3.3 页面置换算法手推 FIFO、LRU、OPT 的口诀和易错点页面置换算法是南航计算题的最爱和 PV 操作并称“两道送分题”——说送分是因为规律性强说容易翻车是因为手推过程容易数错页面。先进先出FIFO用队列模拟换出最早进入内存的页面。注意 Belady 异常——内存块数增多时缺页率反而可能上升这是 FIFO 特有的现象问答题常考。最近最久未使用LRU每次换出最长时间未被访问的页面。手推时用“栈”法——每访问一个页面把它提到栈顶换出栈底。南航的题目喜欢把 LRU 和“访问局部性”联系起来简答题要能说出 LRU 利用了局部性原理但实现开销大需要硬件支持访问时间的记录。最佳置换OPT换出未来最长时间不会被访问的页面。只能用于理论分析不能实际实现。做题时先看当前页面在后面的访问串中哪个最晚出现换它就行。Clock 置换算法第二次机会算法南航近年开始考。用环形链表管理页面每个页表项有访问位缺页时检查指针指向的页面访问位为 0 则换出为 1 则清 0 并移动指针。做题时关键是要按环形顺序逐个检查不能跳。手推步骤口诀先画内存块逐行填访问序列每缺页一次计数加一OPT 要往后看LRU 要往前看。最容易错的点是当访问的页已在内存中时FIFO 不改变队列顺序LRU 要更新该页的访问时间提到栈顶OPT 什么都不用做——很多人在这里数错缺页次数。3.4 分段与段页式段表不像页表段长是变量分段管理的逻辑地址是二维的——段号 段内偏移段表项包含段长和段基址。和分页最核心的区别是页的大小固定由硬件决定段的大小由用户程序决定所以每个段表项必须记录段长地址转换时需要检查偏移量是否越界——段内偏移 ≥ 段长则产生越界中断。选择题常考“分页和分段的主要区别”分页是物理单位对用户透明分段是逻辑单位对用户可见。分页易产生内部碎片分段易产生外部碎片。分页是一维地址空间分段是二维地址空间。段页式结合两者先分段每段内再分页。地址结构是段号 页号 页内偏移访问一个数据需要三次访存——查段表、查页表、访问数据。如果加 TLB则命中时一次访存。南航如果考段页式的计算大概率只考“几次访存能取出数据”答案为无快表 3 次有快表且命中 1 次有快表但缺失 3 次。3.5 虚拟内存与缺页处理局部性原理是理解一切的钥匙虚拟存储器的理论基础是局部性原理——时间局部性刚访问的数据很快会被再次访问和空间局部性访问了某个地址附近的地址也可能被访问。基于局部性原理只把进程的部分页面装入内存就能运行其余页面在需要时按需调入。缺页中断的处理流程要会按顺序默写CPU 访问的逻辑地址在快表中未命中 → 查页表 → 页表项有效位为 0 → 触发缺页中断 → 操作系统检查内存是否有空闲页框 → 有空闲则装入页面无空闲则按置换算法选页面换出 → 若被换出的页面被修改过修改位为 1要先写回磁盘 → 更新页表和快表 → 重新执行被中断的指令。这里有个坑缺页中断是内部中断陷阱不是外部中断缺页中断处理过程中可能再次发生缺页——因为处理缺页的代码本身可能不在内存中。驻留集大小与抖动是简答题考点。抖动颠簸指进程频繁缺页系统大部分时间花在换入换出上CPU 利用率反而下降。解决办法是采用局部置换策略——每个进程只能从自己的页面中选置换对象或者引入工作集模型——保证每个进程的驻留集不小于其工作集。工作集的定义要记牢进程在时间窗口 Δ 内访问的页面集合。南航题型常是“给定访问序列和窗口大小求工作集”——按窗口滑动取页面集合去重即可。4. 文件系统与磁盘调度把 FAT、索引节点和电梯算法一起串起来记4.1 文件的物理结构三种分配方式的对比表是送分题文件的物理结构决定了文件数据在磁盘上的组织方式南航选择题必考简答题偶尔结合计算一起出。三种方式连续分配、链接分配、索引分配。连续分配是每个文件占用一块连续的磁盘空间优点是读取速度快、支持随机访问缺点是产生外部碎片、文件不能动态增长。链接分配用指针串联每个块文件可以分散存储但只能顺序访问且指针占用存储空间——南航问答题的一个变体是“一个链接分配的块大小为 512B其中 4B 存指针实际数据只有 508B求文件最大长度”答案是块数 × 508B。索引分配为每个文件建一个索引块存所有块的指针支持随机访问。单级索引的问题是大文件要多个索引块解决方式是链接索引或多级索引二级索引索引块的块号本身存在另一个索引块中。UNIX 的混合索引分配是南航计算题经典考点inode 中有 13 个地址项前 10 个直接地址第 11 个一级间接第 12 个二级间接第 13 个三级间接每个磁盘块大小为 1KB每个地址项占 4B。计算时先算每个块能存多少地址项1KB / 4B 256 个。一级间接可指向 256 块二级间接可指向 256×256 65536 块三级间接可指向 256^3 块。然后问文件最大长度、某个偏移量落在哪一级——这种题必须分情况讨论先减掉前 10 块再进入一级间接、二级间接区间。4.2 目录实现与磁盘空闲空间管理位示图题要会算字号和块号目录的实现方式有线性表和哈希表。线性表简单但查找慢哈希表查找快但需要处理冲突。文件控制块 FCB 包含文件基本信息、存取控制信息和使用信息。南航简答题喜欢对比 FCB 和索引节点的区别FCB 包含文件名和索引节点号查找目录时要把所有 FCB 读入内存匹配而 Unix 把文件名与文件元数据分离目录项只存文件名和 inode 号元数据在 inode 中这样查找时只需读入文件名列表减少了磁盘 IO。空闲空间管理有四种方式空闲表、空闲链表、位示图、成组链接。南航最爱考位示图计算。典型题目字长为 32 位位示图第 i 行第 j 列对应盘块号为 (i-1) × 32 j若从 1 开始编号或 i × 32 j若从 0 开始编号。考试时必须先看清楚题目编号是从 1 还是从 0 开始——这个陷阱每届都有人踩题目写“字长为 32 位行号和列号均从 1 开始编号”位示图的第 3 行第 5 列对应块号是 (3-1) × 32 5 69如果从 0 开始编号则不同。反过来给块号求行列位置也同理做逆运算。成组链接是 UNIX 使用的方式把空闲块分组每组用一个空闲块记录下一组的信息用于大容量磁盘。4.3 磁盘调度算法电梯算法的手推过程最忌“到边才回头”磁盘调度算法是南航计算题之一通常是给一个当前磁道号和访问序列让你分别算 SSTF、SCAN、CSCAN 的寻道顺序和总寻道长度。最短寻道时间优先SSTF每次选离当前磁道最近的请求。注意可能出现“磁臂粘着”——离当前磁道近的请求不断到达远处的请求一直等造成饥饿。扫描算法SCAN电梯算法磁头朝一个方向移动遇到该方向上的请求就服务直到该方向没有请求才反向。手推时的关键一开始要先判断磁头移动方向题目通常会说明“目前磁头正在向磁道号增大的方向移动”没说明的按默认向增大的方向移动。每到一个请求磁道就停下服务然后继续沿原方向走直到当前方向上没有更远的请求才回头。最容易翻车的点是“磁头是否需要移动到最内/最外侧才回头”——SCAN 只需要移动到该方向最后一个请求所在磁道即可回头不需要到物理边界除非题目明确说“移动到边界再回头”而 C-SCAN 循环扫描则通常是移动到边界后直接回到另一端的边界全程单向服务。假设当前磁道为 100方向向大号端请求序列为 23、67、120、12、150、38。SCAN 的服务顺序是120 → 150 →150 之后无更大请求反向→ 67 → 38 → 23 → 12。总寻道长度 |100-120| |120-150| |150-67| |67-38| |38-23| |23-12| 20 30 83 29 15 11 188。C-SCAN 的顺序120 → 150 →回到最小端这段不算服务→ 12 → 23 → 38 → 67总寻道长度 20 30 (150-0) 12 11 15 29 267——这里端到端的跳跃距离也计入总寻道长度南航的评分标准是看最终数字和顺序跳跃距离算不算总分要按题目要求但顺序绝对必须对。4.4 文件系统可靠性文件备份与一致性检查常见考点这里不是考试重点但南航偶尔在选择题里带一两个名词。文件系统的一致性检查涉及块一致性检查——对比空闲块表和目录中的块找出既在空闲表中又在文件中的块数据冗余或在空闲表中但未被任何文件使用的块丢失块。日志文件系统的基本思想是在写磁盘之前先把操作写入日志崩溃后可以根据日志重放或撤销操作保证元数据一致性。考试最多考名词解释或判断题不需要深究实现细节。5. 输入输出与设备管理伪代码不常考但这几处概念年年丢分5.1 I/O 控制方式与中断处理四种方式的演进史就是一条线索I/O 控制方式从程序直接控制到中断驱动、DMA、通道演进的核心是减少 CPU 参与 I/O 的程度。程序直接控制方式轮询CPU 不断检查设备状态是否就绪忙等浪费 CPU。中断驱动方式CPU 发出 I/O 命令后继续执行其他任务设备就绪后发中断通知 CPUCPU 在中断处理程序中完成数据传输——但每次传输一个字节或一个字都要中断一次频繁中断仍是开销。DMA 方式DMA 控制器直接在外设和内存之间搬运数据块搬运完成才发一个中断通知 CPU。通道方式通道是一个专门处理 I/O 的处理器能执行通道程序独立完成较复杂的 I/O 操作CPU 只需发起 I/O 请求和接收完成信号。南航选择题高频陷阱“DMA 方式下CPU 在数据传输开始时做什么结束时做什么”——开始时 CPU 初始化 DMA 控制器设置内存起始地址、传输字节数、设备地址、操作方向之后 CPU 完全不管传输过程传输结束时 DMA 控制器发中断给 CPU。陷阱在于有人认为 DMA 传输过程中 CPU 被阻塞实际 DMA 方式下 CPU 可以继续执行不与内存总线冲突的指令但 DMA 和 CPU 争用内存总线时 CPU 会暂停——不是完全独立。中断处理流程的题也很常考顺序必须背下来保存现场程序计数器、程序状态字等→ 分析中断原因找到中断处理程序入口 → 执行中断处理 → 恢复现场返回断点继续执行。南航常考的变体是“中断和系统调用的区别”——系统调用是用户进程主动请求操作系统服务是内中断陷阱或异常外部中断是设备等外部事件触发两者处理流程相同但来源不同异常是内部错误缺页、除零处理完后可能终止进程也可能重新执行指令。5.2 SPOOLing 技术与虚拟设备为什么打印机可以“共享”SPOOLing假脱机是设备管理里最常考的概念南航简答题问过“如何将独占设备改造为共享设备”。SPOOLing 的核心是在磁盘上建立输入井和输出井在内存中建立输入缓冲区和输出缓冲区由 SPOOLing 进程统一管理。以打印机为例多个进程要打印时只需把打印数据送到输出井SPOOLing 进程按顺序把数据送给打印机打印。从进程角度看它独占了一台“虚拟打印机”而打印机本身被多个进程共享了现实是打印数据在磁盘排队真正打印是串行的。做题时容易混淆的点是SPOOLing 是在磁盘上缓冲不是在内存在缓冲输出井是磁盘空间不是缓冲区。系统调用 write 返回时数据还没真正写到打印机只到了输出井。南航问答题如果给一个“多个用户同时打印”的场景要答出三点磁盘输出井缓冲数据、SPOOLing 进程统一调度、进程获得的是虚拟设备逻辑设备通过设备独立性把逻辑设备映射到物理设备。5.3 缓冲技术单缓冲和双缓冲的计算题有固定套路缓冲技术里单缓冲、双缓冲、循环缓冲的计算题是南航比较喜欢的小题。这类题有个标准模型设备把数据放入缓冲区CPU 从缓冲区取数据设设备写入一个数据块的时间为 TCPU 处理一个数据块的时间为 C缓冲区传输时间为 M通常忽略或单独说明。单缓冲设备先填缓冲区耗时 T填满后 CPU 开始处理耗时 C同时设备继续填下一个块到同一缓冲区——但设备需要等 CPU 用完缓冲区才能写入下一块所以处理 n 块数据的总时间是 n × max(T, C) M第一块还需 M 时间传入 CPU。如果 T C则每块都是 T总时间约 nT如果 C T则每块都是 C总时间约 nC。双缓冲设备先填 AT填满后 CPU 处理 A 中的数据C同时设备填 BT。处理 n 块总时间为 n × max(T, C) M。双缓冲能骗过 CPU 和设备之间的大部分等待——当 T C 时总时间约 (n1)T当 C T 时约 nC T。实际上双缓冲的核心价值是允许设备和 CPU 并行工作南航只要出这种题画时间轴就能解别硬背公式画图最可靠。6. 南航操作系统的避坑指南复习阶段最容易翻车的四个细节提示以下每一条都是往届考生用分数换来的教训如果你只想看一遍就过考场建议对照自查。6.1 现象PV 操作题最后忘了 V 操作或者 V 了错误的信号量。原因写代码时只关注 P 操作申请资源没有形成“P 和 V 必须成对出现”的肌肉记忆。尤其在生产者和消费者两个进程各写一个函数时最后返回前漏掉 V 操作是重灾区。解决写完每个进程代码后立刻检查三个点——每个 P 都有对应的 V可以不在同一进程中但必须存在V 操作释放的信号量跟 P 操作的逻辑对应缓冲区临界区要同时 P 和 V 互斥信号量。另外把信号量定义、初值说明放在代码块开头这样阅卷时第一眼就能看到你的资源建模是否正确。6.2 现象页面置换算法手推时把“访问已在内存中的页面”也当成缺页计算。原因手推页面置换时注意力全在换出换入上忽略了一个前提——页面已在内存中时不产生缺页中断也不需要置换。解决每访问一个页号先在当前驻留集里查一遍。查到就标记命中不计数只更新该页的访问状态LRU 要更新为最新FIFO 不做变化OPT 也不做变化。查不到才计缺页数并按算法换页。用表格逐行手推时每行先写“是否命中”再写置换动作能有效避免连续缺页计数错误。6.3 现象银行家算法找安全序列时选了一个 Need ≤ Available 的进程后忘了在下一轮更新 Available或者把 Allocation 和 Max 搞混。原因银行家算法的推导表有多个矩阵——Allocation、Max、Need、Available手推时容易盯着一个矩阵而忽略另一个。尤其 Need Max - Allocation 这个关系要在推导前先算好列在纸上不能每轮临时心算。解决按四列表格画进程名 | Allocation | Max | Need预填。每轮找一个满足 Need ≤ Available 的进程在 Available 列加上它的 Allocation。多选出的安全序列一般不是唯一的——考试时只要写出一组合法序列就得分不必纠结最优。如果找不到满足条件的进程说明系统进入不安全状态要回答“找不到安全序列系统可能死锁”。6.4 现象磁盘调度 SCAN 题磁头方向判断错了整道题全军覆没。原因SCAN 算法的手推依赖初始移动方向题目如果给“当前磁道 53方向向小号端”而你按默认大号端推路由顺序完全不同。解决拿到题第一步先在草稿纸上标出磁头当前位置和移动方向箭头。如果题目没提方向默认是向磁道号增大的方向移动。移动时要注意SCAN 的反向点是“该方向上的最后一个请求”不是磁盘物理最外侧磁道——只有题目明确说“到最外/最内磁道后反向”才那样算。7. 考前三天最有用的冲刺法按题型做“输出式复习”而不是再翻一遍笔记最后这段时间不要再从头到尾读笔记了。南航试卷的题型结构相对固定按题型去刷效率最高7.1 把每个算法当成“不看笔记能白手推”的标准找个白纸不要看任何参考资料按顺序默写以下内容进程五状态图标全转换条件生产者-消费者 PV 操作完整代码含信号量定义银行家算法推安全序列的四列表格流程FIFO、LRU、OPT 各推一个长度为 10 的访问序列SCAN、C-SCAN 各推一个寻道序列。每一个都能在白纸上独立完成才叫真复习过。7.2 背答案不如背“答题框架”南航的简答题阅卷是按点给分。以“死锁的四个必要条件”为例不只要写四个名词要写清每个条件的含义——互斥资源一次只能被一个进程使用请求并保持进程持有资源又申请新资源不可剥夺资源只能被持有者主动释放循环等待存在进程-资源的环形等待链。以“分页和分段的区别”为例答三点单位性质不同物理/逻辑、地址空间维度不同一维/二维、碎片特点不同内部/外部。框架记住了考题换任何描述都能套。7.3 做错题要用“现象→原因→修正”三步记录这个习惯是我在南航复习时养成的每做错一道计算题在错题本上写三行——错的答案、为什么会错是公式记错还是初始条件看漏、正确的做法。比如“银行家算法的 Available 初值算成了资源总数”修正为“Available 资源总数 - 所有进程 Allocation 之和”。回头看大部分错误不是不会做而是初始条件没看清。最后一句个人教训操作系统这门课最怕的就是“看懂了例题”和“能自己做出来”之间的差距。看例题以为自己会了一动手就卡壳——这是我在复习中反复翻车的根源后来改用上面这套“白纸默写法”每天抽一个知识点不看笔记完整推一遍效果远比通篇翻书好。希望帮到你考场见。本文还有配套的精品资源点击获取