
很多人一听到“操作系统期末复习”这几个字就头皮发麻感觉这门课又抽象又庞杂进程、线程、调度、死锁、内存、文件系统……每一章都像一座小山合在一起就是连绵不绝的山脉。但说句掏心窝的话操作系统是计算机专业里少数几门“既考智商又考积累”的课也是面试时最能拉开差距的硬骨头。它不靠死记硬背靠的是把“操作系统到底在干嘛”这件事想明白。这篇总结我不会写成教材目录的复读机而是按期末复习的真实路径来梳理先帮你搭一个全局框架再逐个攻破高频考点穿插考试里最容易踩的坑最后聊一聊怎么针对性地刷题和背概念。全程用大白话讲透原理把那些“老师上课讲过但我没听懂”的地方补上。无论你用的是汤小丹的《计算机操作系统》、王道考研系列还是西电、山大、吉大等学校自己出的讲义这套复习思路都适用。1. 先搭骨架操作系统的宏观地图操作系统这门课说复杂也复杂说简单也简单。你把它想成一个公司的总经理办公室就全通了。计算机硬件是员工CPU、内存、磁盘、键盘鼠标应用程序是客户浏览器、Office、游戏而操作系统就是那个协调所有资源、安排工作流程、处理突发状况的中枢。用户不需要知道CPU怎么在纳秒级切换任务也不需要知道数据在磁盘哪个磁道操作系统把这一切封装成简单的接口系统调用这就是它的本质——资源管理和抽象。期末复习时你首先要建立一个“四层两态一核心”的宏观认知四层硬件层 → 内核层操作系统核心功能→ 系统调用层→ 应用层。考试最爱问的就是“系统调用和普通函数调用的区别”、“用户态和内核态如何切换”。两态用户态User Mode和内核态Kernel Mode。CPU指令分为特权指令和非特权指令操作系统跑在内核态应用程序跑在用户态。你写的代码想读文件、申请内存、创建进程都得通过系统调用“陷入”内核态由操作系统代劳。这个“陷入”过程也叫trap或中断。一核心所有功能的最终目的都是——让CPU永远有事干让内存不浪费让数据不丢失让用户觉得“流畅”。基于这个框架期末考点就清晰地分成了五大模块进程与线程CPU怎么分时复用调度与死锁任务怎么排队、怎么避免互相卡死内存管理内存怎么分、怎么换、怎么保护文件与存储数据怎么存、怎么组织、怎么索引I/O与设备外设怎么接入、中断和DMA怎么工作下面我按这个顺序把每个模块的核心脉络和高频考点给你拆透了讲。2. 进程与线程操作系统的心脏2.1 进程三态模型别只会背图进程是资源分配的基本单位线程是CPU调度的基本单位。这句话几乎每次考试都会出现但很多人只背了结论不理解为什么。进程的一生就像外卖骑手的订单状态。创建完订单创建态→ 骑手等单就绪态→ 取到餐正在配送运行态→ 餐品堵在路上阻塞态/等待态→ 订单完成终止态。考试核心不是画图而是搞清楚每种状态之间的转换条件就绪态 → 运行态被调度程序选中获得CPU。这是唯一一条进入运行态的路。运行态 → 就绪态时间片用完或者被更高优先级的进程抢占。运行态 → 阻塞态进程主动请求I/O、等待信号量、等待事件。注意这里一定是主动的而阻塞态 → 就绪态是被动的I/O完成、事件发生。常考陷阱题一个进程从运行态变为阻塞态后CPU是否空闲答案是不空闲。因为CPU会立刻调度另一个就绪进程运行。这也是多道程序设计的核心思想——让CPU和I/O设备都忙起来。你要是答“CPU等待该进程”那这题就凉了。2.2 PCB到底是什么进程控制块PCBProcess Control Block是描述进程当前状态和管理信息的数据结构。它就像是每个进程的“身份证户籍档案”。操作系统创建进程时分配PCB进程结束时回收PCBPCB是进程存在的唯一标志。考试常考PCB里包含哪些信息进程标识符PID处理机状态通用寄存器、程序计数器PC、PSW状态字进程调度信息状态、优先级、事件内存管理信息代码段/数据段/堆栈的基址资源清单占用哪些文件、设备上下文数据切换时需要保存和恢复的全部现场链表、索引表、哈希表都是PCB的组织方式一般选择题会考知道PCB是常驻内存的就够了。2.3 线程的引入核心是共享很多学校把线程放在进程这一章的后半部分考常考一道简答题“请比较进程与线程的区别”。按得分点来答进程是资源分配的基本单位线程是CPU调度的基本单位线程基本不拥有系统资源。进程之间地址空间相互独立一个进程崩溃不影响其他进程同一进程的线程共享进程的地址空间一个线程访问非法内存可能导致整个进程崩溃。进程上下文切换开销大线程上下文切换开销小因为不需要切换地址空间、页表等。进程内可以包含多个线程线程不能独立于进程存在。上学期有个学生问我“老师进程和线程之间的关系能不能用公司来理解”我当时说进程就像一家公司有自己的办公室、资金和财务线程就是公司的员工他们共享办公室和资金但每个人干不同的活。公司之间是独立的一家倒闭不影响另一家但员工把办公室烧了整个公司就没了。这个类比考试时写在试卷上改卷老师一眼就懂你真理解了。2.4 同步与互斥PV操作和管程这是操作系统期末的送命题也是拉分题。一个没学明白后面死锁、信号量、生产者消费者全崩。所以这里我们慢一点。互斥Mutual Exclusion同一时刻只能有一个进程使用临界资源如打印机、共享变量。同步Synchronization进程之间因合作产生的先后顺序关系如A生产完数据B才能消费。解决互斥和同步的底层工具就是信号量Semaphore配合两个原子操作Pwait等待和Vsignal释放。信号量S≥0表示还有几个可用资源S0则绝对值表示有几个进程在等待队列里。PV操作的易错点必须成对出现但不能随意配对。生产者消费者问题是必考的经典。它的代码模型是这样// 有三个信号量 semaphore mutex 1; // 互斥访问缓冲区 semaphore empty n; // 空缓冲区的数量 semaphore full 0; // 满缓冲区的数量 生产者 while (1) { produce an item; P(empty); // 申请一个空位没有空位就等待 P(mutex); // 加锁进入临界区 put item into buffer; V(mutex); // 解锁 V(full); // 释放一个满位相当于通知消费者 } 消费者 while (1) { P(full); // 申请一个满位没有数据就等待 P(mutex); // 加锁 take item from buffer; V(mutex); // 解锁 V(empty); // 释放一个空位 consume the item; }为什么P(empty)要放在P(mutex)前面这是期末最常考的坑。假设缓冲区空消费者先执行了P(mutex)拿到锁再P(full)发现没数据于是阻塞等待此时生产者想放数据必须先P(empty)拿到空位再去P(mutex)但mutex已经被消费者拿走了生产者也被阻塞。于是双方互相等待死锁了。所以记住一个口诀**先申请资源信号量再申请互斥锁释放时先释放互斥锁再释放资源信号量。**这里资源信号量就是empty和full互斥锁就是mutex。**管程Monitor**是信号量的高级封装很多课程只考概念它把共享变量和操作这些变量的过程封装在一起同一时刻只允许一个进程进入管程。Java中的synchronized就是管程思想的典型实现。2.5 经典同步问题速查除了生产者消费者期末还常考读者-写者问题和哲学家进餐问题。读者-写者问题的核心思想是“读者优先”或“写者优先”它考察的是对共享数据读操作可以并发写操作必须独占。代码略复杂但考试最常考的是问你怎么用信号量限制“同时最多允许N个读者”。实现方法是设置一个count信号量每个读者进入前P(count)退出时V(count)。这和我们买奶茶限流的思路一样店里最多容纳10个人满了就在外面等。哲学家进餐问题更经典——5个哲学家围圆桌5根筷子每个人需要同时拿左右两根筷子才能吃饭。问题在于如果每个人都先拿左手边的筷子那么所有人都会死锁。解决办法有几种最多允许4个哲学家同时拿筷子引入一个资源数为4的信号量奇数哲学家先拿左边筷子偶数哲学家先拿右边筷子破坏循环等待拿筷子前先判断两根是否都可用否则都放下考试中最常考的是第二种“破坏循环等待”因为它直接对应死锁的四大必要条件。3. 调度算法排队怎么排才公平又高效调度这一章本质上是研究“CPU如何分配时间”。操作系统里有三种调度层次高级调度作业调度决定哪些作业调入内存、中级调度内存对换把进程换入换出内存、低级调度进程调度决定哪个就绪进程上CPU。期末重点在后两者尤其是进程调度算法。3.1 先来先服务FCFS和短作业优先SJFFCFS就是排队买票谁先到谁先被服务实现简单但对短作业不友好。试想你打印一份文件只要1秒前面排着一个要打印1小时的你心态直接炸了。SJF是把队列里的短作业挑出来先执行它能获得最短的平均等待时间数学上可证明但问题是“长作业可能会饥饿”——不断有短作业插队长作业永远轮不到。考试常常给你一个表让算平均等待时间和平均周转时间。周转时间 完成时刻 - 到达时刻等待时间 周转时间 - 运行时间。这种题就是练手没有任何智力难度但很考验细心。计算顺序我都建议写成表格逐项填千万不要跳步一不留神就把到达时间看错了。3.2 时间片轮转和抢占式优先级时间片轮转RRRound Robin是为了解决FCFS的“长作业霸占CPU”问题把CPU时间切成固定大小的时间片每个进程轮流用。这个算法里有三个参数经常考时间片大小、调度时机、切换开销。时间片太大就退化成FCFS太小则上下文切换太频繁系统开销大。一般设计在10ms到100ms之间能让大部分进程在一个时间片内完成兼顾响应时间和开销。优先级调度就是给进程分优先级优先级高的先跑。但低优先级进程可能饿死解决办法是老化Aging——随着时间的推移逐渐提高等待进程的优先级。这里有个易混点抢占式和非抢占式的判断。非抢占式调度是指进程一旦上CPU就运行到完成为止除非主动让出即使中途有一个更高优先级的进程来了也要等着抢占式调度则是每当有新的更高优先级进程到达立即剥夺当前进程的CPU。期末真题经常这么出几个进程同时到达告诉你优先级然后问“抢占式优先级调度下的甘特图Gantt图是什么”。这种题最坑的地方在于很多同学用非抢占式思路画抢占式图或者反过来导致全部完蛋。做题前先圈出考题给的是哪种调度类型强烈建议做题前先圈出调度类型这几个字否则后面全错。3.3 多级反馈队列现代操作系统的最爱多级反馈队列MFQ是期末考试的大题热点因为它综合了FCFS、RR、优先级调度的思想。它的核心规则设置多个优先级不同的就绪队列优先级高的队列时间片短比如10ms优先级低的队列时间片长比如50ms、100ms。新进程先进入最高优先级队列末尾按FCFS排队。进程用完一个时间片还没执行完就降级进入下一级队列。只有高优先级队列为空时才调度低优先级队列的进程。若高优先级队列来了新进程低优先级进程立即被抢占抢占式。MFQ的优点在于I/O密集型进程和交互式进程在高优先级队列中能快速响应CPU密集型进程虽然降级到低优先级却拥有更长的时间片减少切换次数。这就是Windows和Linux调度器的基本思想。期末如果出这种题通常给你几个进程的到达时间、所需CPU时间让你画调度甘特图。解题技巧是一行一行画先把每个时刻新到达的进程放入最高优先级队列再按队列优先级执行别忘了执行中的进程时间片耗尽后要降级。4. 死锁四胞胎条件和一个经典银行家死锁这一章期末考得相当“死板”但正因为死板你必须拿满分。它考的永远是几个固定概念。4.1 死锁的四个必要条件互斥资源只能被一个进程占用。持有并等待进程占着已有资源同时等待更多资源。不可剥夺资源不能被系统强制抢走只能被进程主动释放。循环等待存在一个进程—资源的环形等待链P1等P2占的资源P2等P1占的资源。考试简答题“如何预防死锁”答案就是把上面四个条件各破坏一个破坏互斥不可能因为有些资源天生就是互斥的打印机。破坏持有并等待进程在运行前一次性申请所有资源资源静态分配缺点很明显——资源利用率低而且进程常常不知道未来需要哪些资源。破坏不可剥夺允许系统强占已分配的资源实现复杂可能导致之前的工作失效。破坏循环等待给资源编号必须按编号递增顺序申请资源。这个在哲学家问题里很常见。4.2 死锁避免银行家算法银行家算法是一个安全状态检测算法名字来源是“银行家不能把所有钱都贷出去必须保留一部分以应付储户取款”。操作系统就像银行家进程就是客户资源就是资金。算法有两个判断安全性检查和资源分配预判。期末大题一般给一个最大需求矩阵、已分配矩阵、可用资源向量问是否可以安全分配。做题步骤必须会反复练计算需求量矩阵 Need Max - Allocation。找出当前可用资源 Available 能满足 Need 的进程。假设分配给它然后进程执行完释放全部资源Available 累加其已分配资源加上它的Allocation。重复直到所有进程都能安全执行完或者找不出满足条件的进程。如果所有进程都能按某个顺序完成则系统处于安全状态这个顺序就是安全序列。注意坑如果当前可用资源能满足多个进程随便选一个都有可能得到不同的安全序列但你只要找到一条安全序列就说明系统是安全的。考试答题时把安全序列写清楚即可。死锁检测和解除通常考概念知道检测可以采用资源分配图化简法解除方式有剥夺资源、撤销进程、回滚。这里有一个常见的误区很多同学把“死锁预防”和“死锁避免”混为一谈——预防是破坏必要条件在设计阶段就要搞定是静态的避免是运行过程中动态判断不满足安全条件就不分配。考试问“哪种方法最实用”答“死锁避免中的银行家算法”或者“死锁预防”看老师的倾向但概念必须区分开。4.3 资源分配图化简的套路资源分配图是一个有向图圆圈代表进程方框代表资源类型方框里的圆点代表资源实例。一条从进程指向资源的边叫请求边从资源指向进程的边叫分配边。化简的规则是如果进程的所有请求都能被满足就让它运行完并释放已分配资源然后删掉该进程的所有边。反复化简如果所有进程都能被删掉说明无死锁否则剩下的进程就是死锁进程。考试经常给你一张图让你判断“是否存在死锁”。做题技巧是从没有阻塞的进程入手——即请求边指向的资源还有空闲实例的进程。它释放资源后可能又能解锁别的进程一环扣一环。一个典型的陷阱是多个进程各占一个资源又互相请求对方资源看起来像死锁但如果有一个进程请求的资源尚有空闲实例这张图是可以化简的并非死锁。5. 内存管理从连续分配到虚拟内存这一章是操作系统里最能拉开分数的一章因为既有计算又有概念。但好消息是计算题套路固定概念题和生活密切联系。5.1 覆盖、交换与连续分配方式的演进在早期内存小得可怜的时候操作系统用覆盖技术——把程序分成常驻部分和覆盖部分运行时只加载需要的模块。交换技术则是把整个进程从内存换到磁盘挂起态空出内存给别的进程。它们的本质都是“让有限的内存装下更大的程序”。连续分配方式就是把进程放进一片连续的内存区域。有单一连续分配内存只装一个进程和分区分配分成固定分区或动态分区。动态分区的分配算法常考三种首次适应First Fit从低地址开始找第一块够大的空闲分区。最佳适应Best Fit找到大小最接近需求的空闲分区产生很多难以利用的外部碎片。最坏适应Worst Fit选最大的空闲分区避免产生小碎片但大分区很快被拆完。考计算题时常给你一张分区分布图模拟某个进程调入后分区如何变化。需要随时记住“内部碎片是已经被分配给进程但用不到的内存空间比如固定分区中进程用不完外部碎片是内存中有很多零散的空闲块每个都不够装一个大进程但加起来够”。这个区分几乎年年考。5.2 分页存储管理页号和页内偏移分页是现代操作系统的基石Linux、Windows都在用分页。它把内存分成固定大小的页框/物理块同时把进程的逻辑地址空间分成同样大小的页。映射关系由页表记录。期末计算题必考逻辑地址结构逻辑地址 页号P 页内偏移量W。页号位数决定最多能有多少页偏移量位数决定页大小。物理地址计算物理地址 页框号帧号×页大小 页内偏移量。举一个最经典的例子已知页面大小1KB即1024字节逻辑地址为 3500页表内容是 {0→5, 1→8, 2→3, 3→1}逻辑页号映射到物理页框号。求它的物理地址。计算过程页号 3500 ÷ 1024 3整除页内偏移 3500 mod 1024 428查页表页3映射到物理页框1物理地址 1 × 1024 428 1452这类题最常错的点逻辑地址的页号从0开始还是从1开始。现实和考试里都是从0开始但如果题目说“页号从0开始编号页框从0开始编号”被你忽略了算出来的物理地址往往差一个页大小。审题永远第一。**两级页表、多级页表是为什么**因为32位系统中页表本身可能非常巨大一个页表项4字节页大小为4KB则页表项数为2^20页表占用4MB内存这对每个进程来说太奢侈了。所以采用二级页表甚至多级页表让页表本身也分页不用的页表页可以放在磁盘上需要时才调入。5.3 分段存储管理的核心考点为什么“分页”会“段越界”分段不会分段和分页的核心区别分页是系统行为页大小固定对用户透明。分页是为了提高内存利用率、管理方便。分段是用户行为按程序逻辑划分为代码段、数据段、栈段等段的大小不等。分段是为了方便共享、保护、动态链接。分段地址结构 段号S 段内偏移W。查段表得到段基址和段长。考试必问分段方式中**段表和页表有什么不同**答案是页表只需要记录页框号因为页大小固定段表要记录段基址和段长因为段大小不固定。同时分段会产生外部碎片分页只产生内部碎片页内最后一页可能用不满。5.4 虚拟存储请求分页和页面置换算法虚拟存储技术是内存管理的高潮。核心思想程序不需要全部装入内存就能运行只把当前需要的部分调入其余部分留在磁盘中。它依赖于程序运行的局部性原理——时间局部性刚访问的数据大概率马上还会访问和空间局部性访问了一个数据周围的数据也大概会被访问。请求分页 分页管理 缺页中断。当CPU访问的逻辑页不在内存时产生缺页中断操作系统从磁盘将页面调入。这时的关键算法是页面置换算法当内存满了踢谁出去。期末必考的置换算法OPT最优置换淘汰以后永远不会被访问或在最长时间内不再被访问的页面。这是理论上的理想算法无法实现但用来衡量其他算法的优劣。FIFO先进先出淘汰最早进入内存的页面。实现简单但可能导致Belady异常——分配的物理块增多时缺页次数反而增加。LRU最近最久未使用淘汰最长时间没有被访问的页面。这是最接近OPT的实用算法。用栈或计数器实现。考试经常给一个访问序列让你算缺页次数。这里有一个隐藏考点有的老师把“初始内存为空”算作缺页有的不算一定要看题意。做题时建议在草稿纸上画好每个物理块的状态变化逐步填缺页做标记。Clock时钟/第二次机会是一种近似LRU的算法每个页面有一个访问位指针沿循环队列扫描访问位为0就淘汰为1就置0并移向下一个。它性能不错实现又简单很多操作系统教材把它当作重点你可能需要会画循环指针的运动过程。一个计算LRU缺页次数的经典例子访问序列为 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5分配3个物理块初始为空。我用“最近最久”的思路快速推一遍前三次1、2、3直接装入缺页3次4到来时内存满最近最久未使用的是1淘汰1装入4缺页第4次接着1访问淘汰最久未用2因为1刚访问过3、4都更晚装入1缺页第5次2访问淘汰3缺页第6次5到来此时内存有1、2、4最久未用的是4淘汰4装入5缺页第7次再访问1、2命中3到来此时内存有1、2、5最久未用的是5淘汰5装入3缺页第8次4到来淘汰1缺页第9次5到来淘汰2缺页第10次。总共缺页10次。这种题没有技巧只能老老实实画状态表但画三列“物理块1、2、3”就足够。工作集Working Set和抖动Thrashing经常考简答题。工作集是进程在一段时间内实际访问的页面集合。如果系统内存不足导致进程频繁缺页CPU大部分时间用在换页上真正执行程序的时间极少这就是抖动。解决抖动的办法增加物理块数、降低多道程序度、使用局部置换策略。5.5 内存保护与页表项页表项不仅仅有页框号还有有效位/存在位页面是否在内存、访问位供页面置换算法参考、修改位页面是否被改写过决定换出时是否需要写回磁盘、保护位读写执行的权限。考试简答题最爱问“为什么修改位很重要”答案是换出页面时如果修改位为0说明内存中的页面和磁盘副本一致可以直接丢弃省一次磁盘写如果为1必须先把内存内容写回磁盘多一次I/O。这个小细节就是操作系统性能优化的大智慧。6. 文件系统和I/O最后一公里的必考点文件系统这一章很多学校期末只考15〜20分但概念题相对容易拿分性价比很高。I/O部分重点在中断和DMA的区别。6.1 文件逻辑结构和物理结构文件逻辑结构指用户看到的文件结构无结构文件流式文件如Linux的普通文件和有结构文件记录式文件如数据库文件。物理结构指文件在磁盘上怎么存放连续结构文件数据连续存放在磁盘块中。访问快顺序和随机都很快但磁盘碎片多文件扩展困难。链接结构每个磁盘块中存一个指向下一个块的指针。文件可以散落各处扩展容易但只能顺序访问一个指针丢失整个链就断了。索引结构为每个文件建立一张索引表记录所有磁盘块号。随机访问方便但索引表本身占用空间。大型文件常用多级索引比如Unix的inode采用直接块 一级间接块 二级间接块 三级间接块结构。计算题常考假设磁盘块大小4KB每个地址4字节一个文件最大能多大这种题考验的是“直接索引能指向多少块、一级索引能指向多少块”的算术不难但一定要弄清多级索引每一级能指向多少数据块。如果题目问“总共有几级索引文件最大大小”请一步步列出来不要图快。6.2 目录结构和管理目录负责把文件名映射成物理地址。常考的概念FCB文件控制块类似进程的PCB包含文件名、类型、物理地址、权限等。单级目录只有一个目录所有文件平级不能重名。两级目录每个用户一个文件目录UFD加上主文件目录MFD。树形目录Linux和Windows的目录结构支持绝对路径和相对路径。6.3 磁盘调度算法磁盘调度很简单考的就是几个算法的求移动磁道数。给一个当前磁头位置和一个磁道访问序列算总移动距离。FCFS按顺序访问简单但不优化。SSTF最短寻道时间优先每次选离当前磁头最近的磁道可能产生饥饿。SCAN电梯算法磁头沿一个方向移动直到该方向没有请求再反向。像电梯一样上来下去公平且不会饿死。C-SCAN循环扫描只从一个方向提供服务返回时直接快速移到最远端不服务响应时间更均匀。期末如果出这种题通常给你的磁道访问序列有十来个数字纯粹是体力活。我建议把磁头移动路径用箭头画出来一个磁道一个磁道地写千万别心算否则非常容易丢分。6.4 I/O控制方式与中断I/O控制方式的发展脉络几乎是送分题程序直接控制方式查询方式CPU不断查询外设是否就绪CPU忙等浪费大量CPU时间。中断驱动方式CPU发出I/O请求后去做别的事设备完成I/O时发送中断请求CPU再回来处理。提高了CPU利用率。DMA方式直接存储器访问。DMAC在外设和内存之间直接传输数据整块数据搬运完才发一次中断。适合块设备传输。通道方式通道是一个专门管理I/O的处理器CPU只需发出I/O指令通道独立完成整个I/O过程完成后中断通知CPUCPU几乎不参与数据搬运。这里的对比是必考题中断驱动是每次传输一个字/字节都触发一次中断DMA是整块数据传完才触发一次中断。这个差异讲清楚了你这一分就是稳拿。6.5 系统调用和外部中断处理流程操作系统的核心功能都通过系统调用暴露给应用程序。系统调用流程背下来用户程序触发trap → CPU从用户态切换到内核态 → 根据系统调用号查系统调用表 → 找到对应的内核处理函数 → 参数从用户空间复制到内核空间 → 执行内核函数 → 结果返回用户空间 → 切换回用户态。中断处理流程也很常考保存现场 → 根据中断类型号查中断向量表 → 找到中断处理程序 → 执行 → 恢复现场 → 返回断点。这两套流程期末能拿分但大多数同学在两个地方会出问题一是中断和系统调用的区别。中断由外设或异常触发系统调用是程序主动请求。二是中断处理过程中要关中断避免嵌套再开中断恢复现场。7. 高频概念速记考前半小时过一遍下面这些零散概念考试选择题和填空题出现频率极高我把最精华的结论给你浓缩出来多道程序设计让多个程序同时进入内存交替运行提高了CPU利用率和系统吞吐量。并发与并行并发是同一时间段内多个进程交替执行并行是同一时刻多个进程同时执行多核。特权指令只能在内核态执行的指令比如设置时钟、清内存、开关中断、进程切换。用户态执行特权指令会引发陷阱中断。管态/目态、内核态/用户态同义词。中断类型外中断I/O中断、时钟中断、内中断陷阱/异常如缺页、除零、非法指令。临界区访问临界资源的代码段。进入临界区前要通过进入区检查离开时通过退出区。原语Primitive由若干条指令组成的原子操作执行期间不可被中断。PV操作、进程切换是典型原语。PCB、页表、段表、文件描述符表、设备控制表这些“表”是操作系统各种管理的核心数据结构复习时看到“表”就往“数据结构 管理对象”方向上想。局部性原理时间局部性、空间局部性是虚拟存储的基础。Belady异常FIFO独有的现象物理块增加而缺页率上升。零拷贝考核较新的学校偶尔会提一下了解“mmap”或“sendfile”能减少数据在内核态和用户态间的拷贝即可。8. 期末做题策略怎么复习效率最高操作系统的复习我见过太多人把时间浪费在通读教材上。这里给你一个我觉得最有效的“三层复习法”。第一层画图理脉络。花一个下午用一张A4纸把所有考点画成思维导图进程管理 → 进程状态、同步互斥、调度、死锁内存管理 → 连续分配、分页、分段、虚拟存储、页面置换文件管理 → 文件结构、目录、磁盘调度。画完这张图你的知识框架就搭起来了。第二层刷题巩固计算。操作系统是计算和背诵结合最紧密的一门课。银行家算法、页面置换、磁盘调度、地址转换、周转时间计算每种题型至少做3题。做的时候不要直接看答案先自己推对答案时把错误步骤标出来。第三层背简答题套路。像是“进程和线程的区别”“死锁的四个条件”“页表项包含哪些字段”“系统调用的流程”这类题每年必考是可以精准备考的送分题。每道题背三个得分点就够定义、核心特点、缺点或改进方向。另外提醒一个考场上的大坑操作系统考试时间一般很紧虽然不像算法课那么夸张很多同学卡在银行家算法上把后面更简单的文件系统简答题挤得没时间了。**做题顺序建议先简答后计算先背的送分题再烧脑的推导题。**如果一道计算题超过10分钟还没做出来果断先跳过回头再做。因为操作系统期末大题往往带有连续性比如第1问错了第2、3问跟着错宁可先做独立的送分题再回来啃硬骨头。一句话总结这门课操作系统表面上看是“一堆算法的集合”骨子里其实是“资源管理的哲学”。你把这个理念抓住了不管是期末考试还是后续的面试八股都不会觉得它是一堆无意义的规则。它教会你的不只是页面置换算法怎么算更是一个系统设计者如何权衡公平、效率、开销和复杂度。如果你正在复习拿起笔今天先把进程这章的信号量、PV操作练熟。这一章通了后面很多章节的信心就来了。考完试你再回头看会发现这门课不只是一门课它是你理解计算机底层世界的一把钥匙。祝你这周末的考试顺利稳过还能拿高分。