
简介操作系统是计算机系统的内核与基石。这份2023年四川大学网安学院操作系统期末考纲/题库面向该校网安专业备考学生系统梳理了操作系统核心考点涵盖操作系统的定义、功能与目标、发展阶段、中断与异常、进程管理与进程控制块等重难点并配有选择、判断、简答等多种题型方便自测与查漏补缺。资源为PDF格式共1个文件压缩包约1.57MB内容精炼、章节结构清晰按第二、第三、第四章等模块列出考点与习题适合考前集中复习。目前已有149人学习下载适合需要快速定位操作系统重点、进行针对性备考的本科阶段学习者。1. 期末到底考什么先别急着刷题把考纲的底层逻辑拆开操作系统这门课在网安学院的位置很特殊。它不像数学课那样纯推公式也不像密码学那样上来就怼算法而是把计算机组成原理、数据结构、编译原理里零零散散的知识全部拧成一股绳。2023年四川大学网安学院的操作系统期末考纲与其说是一份知识点列表不如说是一张能力检查单它要确认你拿到一个具体的系统场景时能不能用OS的思维去解释现象、定位问题、给出可落地的方案。很多人复习时抱着题库从头刷到尾合上书却连进程和线程在调度器眼里到底差在哪都说不清楚问题就出在把考纲当成了目录没当成思维框架。从近几年考题趋势和公开的课程大纲信息来看这份考纲的重心非常明确进程与线程的管理是绝对核心内存管理次之文件系统和设备管理更偏向概念与计算结合而同步互斥、死锁、调度算法则是大题和论述题的常驻出题区。网安学院的操作系统课程会额外强调安全视角比如缓冲区溢出与内存保护机制的联系、进程隔离的硬件支撑这些看似超纲的内容其实是考纲里隐藏的加分项。这篇笔记我打算按「考纲拆解 → 进程线程 → 内存与文件 → 死锁与同步 → 调度与磁盘 → 考前冲刺」这条线走每个部分把题型、解题套路和踩过的坑都摊开讲。适合两类人一类是还没开始系统复习、需要有人帮你画重点的另一类是刷过一遍题但总觉得知识是散的、想找个查漏补缺框架的。有一点先说清楚——这篇不是押题是帮你把复习路径理顺方向对了题怎么出都能接得住。2. 进程与线程管理考纲里最肥的一块肉也是翻车重灾区2.1 进程状态模型与时序图题把三态图背熟只是入场券进程状态转换是操作系统考纲里最基础的送分点但川大网安学院的考法通常不会只让你默写三态图。常见题型是给你一段代码或一个场景描述比如某进程在等待键盘输入时被高优先级进程抢占画出状态变迁路径或者结合fork系统调用让画出父子进程的状态变化。这里最容易翻车的地方在于阻塞态和就绪态的区别很多人只停留在等I/O vs 等CPU这种口头层面一旦题目把等I/O完成和等待被调度混在一起出就开始犯迷糊。我建议把状态转换的触发条件写在一张纸上每个箭头旁边标出谁调用了什么系统调用或谁抢了CPU。比如运行→阻塞是进程自己主动调用阻塞原语或I/O请求运行→就绪是被中断或时间片用完就绪→运行是调度器选中。网安视角可能会追加一个细节用户态与内核态的切换发生在哪些场景。很多同学答状态转换时忘了标注是否经过内核态这个点虽然小但判卷严的年份就是要扣分。关于PCB和上下文切换考纲里会以简答题或名词解释出现。需要记住的关键数字和定义包括PCB是进程存在的唯一标志保存PID、状态、程序计数器、寄存器、打开文件表指针等上下文切换的开销包括保存与恢复寄存器、程序计数器、用户栈与内核栈指针以及TLB刷新带来的成本。我见过一道真题问上下文切换和模式切换的区别这是个特别容易混的考点。模式切换是用户态和内核态之间的一次切换不改变进程身份上下文切换是CPU从执行一个进程变为执行另一个进程必然涉及PCB切换。初学容易把两者混为一谈答题时先写定义、再写是否更换进程身份这个判别维度基本不失分。2.2 fork与exec的连线题进程创建背后藏着网安考点fork是操作系统的教学核心川大网安学院特别喜欢拿fork做文章。考法有两种计算输出型比如给一段fork代码问总共创建几个进程、输出几行特定内容分析型比如fork之后父进程和子进程的地址空间、文件描述符、变量值异同。计算型题目务必注意printf的行为——printf是把内容写入stdio缓冲区fork时缓冲区会被复制所以printf所在行在fork之前还是之后、有没有换行符、有没有fflush都会影响最终输出次数。这个坑几乎每届都有人踩写了printf(A\n)和printf(A)fork之后的输出数量完全不同。分析型题目里网安视角更关心地址空间隔离。子进程复制父进程的地址空间但物理内存上用的是写时复制技术逻辑上两个进程互不影响。考题可能问子进程修改全局变量父进程看到的是改前还是改后答案是改前因为逻辑地址映射到不同物理页。这个点再往深走就引出了进程隔离的安全意义——OS通过页表和特权级保证一个进程无法直接读写另一个进程的内存这也是后续缓冲区溢出防护的硬件基础。exec族函数通常和fork搭配考。题目形式多是父进程fork后调用exec加载新程序子进程还能保留fork之前的代码逻辑吗。答案是exec会完全替换子进程的地址空间代码段、数据段、堆栈全部重来PID不变。有个必记的细节exec成功调用没有返回值失败返回-1判断exec是否出错只能在调用后检查如果在exec后继续写代码只有出错时才会执行到。这些点不背不行。2.3 线程模型与用户态/内核态线程为什么多线程不一定快线程章节的考纲重点包括线程与进程的区别、线程的三种模型多对一、一对一、多对多、线程池。网安学院的考题偏好结合场景出判断题比如某Web服务器采用了线程池但高并发下性能反而下降分析可能原因。这种题不考背诵考建模能力。多线程不一定更快因为线程创建销毁、上下文切换、锁竞争都有成本线程池能复用线程但池大小设置不当会导致过多上下文切换或饥饿。用户态线程如早期的协程库实现和内核态线程如pthread在Linux上的一对一模型的区别考纲里大概率有简答题。核心记忆点用户态线程切换不陷入内核、开销小但一个线程阻塞会让整个进程阻塞内核态线程由内核调度、可以真正并行利用多核但切换开销大。多对一模型结合线程库实现一对一模型就是当前Linux glibc的pthread实现。考场上画三种模型的示意图是加分项但注意标注谁负责调度和谁被阻塞会影响谁这两个维度比图本身更值钱。3. 内存管理分段分页页表每一层都是网安必考的防线3.1 连续分配与动态分区碎片问题不要只答有碎片三个字内存管理章节的第一块是连续内存分配。考纲覆盖固定分区、动态分区、伙伴系统简答题会问动态分区分配中最佳适应、首次适应、最坏适应分别有什么优缺点。这里不建议只背结论比如最佳适应产生最多小碎片。考题如果追问为什么实际系统几乎不用最佳适应你要能答出查找成本高、剩余区太小难以再利用、分配和回收后碎片整理困难。首次适应和循环首次适应的差别是一个从头扫描、一个从上次位置继续循环首次适应的初衷是让空闲区分配更均匀实现也简单所以是很多教学OS的默认策略。碎片问题是必考概念题。外部碎片是空闲分区零散、无法满足大请求内部碎片是分配了整页但用不满。连续分配只能消除外部碎片引入分页就是为了从机制上消除外部碎片。这里常见理解错误是分页消除了所有碎片——分页消除了外部碎片但引入了内部碎片最后一页不满是典型场景连续分配反之。这个对比结构答题时先用一句话点破再展开容易拿全分。伙伴系统的计算题也很爱出给定内存64K依次申请和释放等。做题关键是伙伴的条件是大小相同、地址相邻且由同一大块分裂而来。合并时只找伙伴不是随便相邻就能合并。很多人在这一步栽跟头把两个相邻但不同级的块强行合并导致地址对齐错乱。3.2 分页公式与两级页表计算题就这几板斧背熟别丢分分页的基础计算是考纲的送分题但每年都有人因单位换算失分。固定套路逻辑地址→页号页内偏移页内偏移位数取决于页大小物理地址→物理块号页内偏移。考题如果给逻辑地址空间大小、页大小、物理内存大小先统一换算成字节再算位数。公式不复杂但要特别注意偏移量不参与页表交换缺页中断时只替换页框。网安学院喜欢把分页和一个安全概念绑在一起考页式存储天然实现了进程间的地址隔离每个进程有自己的页表通过页表基址寄存器切换实现进程地址空间隔离。这个点写进大题答案里比干巴巴地套公式得分率高。两级页表的计算题算进阶考法。背景是单级页表在32位系统、4K页下需要2^20个页表项每个页表项4字节就是4MB每个进程都要占这么多。两级页表的核心是顶级页表固定占一页二级页表按需分配。计算习惯先确定逻辑地址位数拆成页目录索引页表索引页内偏移三段页内偏移位数由页大小决定页表索引位数由一页能放的页表项个数决定剩下的就是页目录位数。做这类题脑子里要有页目录基址寄存器→一级页表→二级页表→物理页框这条寻址链边算边画不容易错。3.3 TLB与局部性原理回答为什么TLB命中率这么高时别忘了网安视角TLB是快表缓存最近用过的页表项。考纲会考它的作用地址转换时先查TLB命中就不用访问内存页表省一次甚至两次内存访问。核心概念是局部性原理包括时间局部性和空间局部性。问为什么TLB命中率高答案要落到循环代码反复访问同一页时间、顺序遍历数组恰好命中相邻页空间。考题还可能结合多级页表问TLB快表命中为什么比普通页表省更多次访问因为多级页表每次地址转换要访问多级内存TLB一次命中绕过了整条链。网安视角有一个容易被忽略的点TLB是每个CPU核心独立的进程切换或上下文切换时TLB可能被刷新刷新后的TLB冷启动导致首次访问慢。有一种缓解手段是给TLB项打上地址空间标识符避免切换进程就全部刷新。这个点如果出现在论述题里能体现出你对安全性和性能之间权衡的理解是加分项。4. 死锁与进程同步考纲大题区画图比背定义管用4.1 死锁产生的四个必要条件银行家算法必考别只背流程死锁的四个必要条件互斥、持有并等待、不可剥夺、循环等待会以简答或判断出现答题时四个条件缺一不可少一个就不是死锁。考纲更倾向于考银行家算法大题会给你进程的已分配矩阵、最大需求矩阵、可用资源向量让你判断某个安全序列是否存在、能不能安全分配。做题步骤照我家传的方式先把Need矩阵算出来NeedMax-Allocation然后每轮找可以满足的进程模拟分配、执行完释放资源把available更新再看下一轮。找不到满足的进程就说明系统会进入不安全状态。这里有个血泪经验判断不安全不代表一定死锁只能说有死锁风险。很多同学把两者画等号简答题只要出现不安全状态等价于死锁的字眼直接扣分。安全序列不是唯一的考场答出一个就算对。常见失误是资源向量忘了加上回收向量或者把已分配矩阵抄错。验算的时候从最后一个进程倒推回来检查一遍能抓住大部分手滑错误。4.2 信号量与PV操作生产者消费者是纲真题会套壳进程同步大题川大网安学院最典型的考法是给一个业务场景让你设计信号量并写出流程。最常见的是变种的生产者消费者缓冲区有界、多生产者多消费者、消费者一次取多个产品甚至还有读者优先/写者优先的变体。你不要背死代码要背结构互斥信号量保护缓冲区本身的读写empty/full信号量计数缓冲区空槽和满槽的个数。PV操作的顺序有讲究对计数器信号量的P操作统一放在对互斥信号量P操作之前对互斥信号量的V操作统一放在释放资源之后。这个顺序如果反了可能出现死锁——比如生产者先P(mutex)锁住缓冲区再P(empty)发现没有空槽此时消费者想P(mutex)释放一个槽却进不来死锁就成了。写PV大题时有个好习惯用注释标注这是保护临界区还是这是资源计数判卷时就算信号量名写丑一点也能拿步骤分。并发的打印输出、进程间同步本质都是这类结构能套就套这个框架。需要额外提醒一个考点信号量的初值设置。互斥信号量初值为1计数信号量初值取决于资源量空槽数量、允许同时读的数量。初值写错后面整个逻辑全部拧巴。4.3 管程与消息传递考纲出现频率不低别只靠PV一条腿走路管程是比信号量高级的同步机制把共享资源和对它的操作封装在一起同一时刻只有一个进程能进入管程调用其中一个过程。Java的synchronized、并发包里的锁底层都有它的影子。考纲会考你管程和信号量的区别信号量散落在各个进程中、容易漏P漏V导致死锁管程从结构上约束了访问路径自动互斥条件变量配合wait/signal使用。答简答题时从这个角度切入显示出你理解的是机制差异不是术语差异。消息传递又称IPC考纲要求理解send和receive两个原语以及阻塞/非阻塞语义。网安学院多选题只告诉你进程A向进程B发消息问你没调用receive前send要不要等答案是看是阻塞发送还是非阻塞发送。同步语义的教学重点是阻塞是同步、非阻塞是异步、send能阻塞在缓冲区满、receive能阻塞在缓冲区空。这些用表格整理比较清爽答题时先列语义再配场景不容易漏维度。IPC在具体实现里的管道、消息队列都是从这两个原语演变出来的考纲如果不单独考Linux IPC也会在这个章节让你对比优缺点。5. 调度算法与磁盘管理计算题必须秒杀的章节注意单位陷阱5.1 各类调度算法的比较FCFS、SJF、RR、优先级谁也别落下调度章节的覆盖范围是作业调度与进程调度两级。考纲算法包括先来先服务、短作业优先、时间片轮转、优先级调度和多级反馈队列。常见大题的考法是给你一组进程到达时间和执行时间让你分别用这些算法画甘特图、算平均等待时间和平均周转时间。做这类题我有个习惯先在草稿纸上按时间轴画一张表列头是时间点每行写一个进程状态就绪/运行/完成同步标注调度决策点再把等待时间和周转时间逐项数出来比口算靠谱得多。短作业优先的坑是抢占式和非抢占式。非抢占SJF在进程到达后再选最短的抢占式SJF又称最短剩余时间优先会在新进程到达时重新比较剩余时间。真题考试时题干一定标注了是否抢占不标注就是默认非抢占。时间片轮转的坑更隐蔽时间片太短上下文切换开销变大、吞吐量下降时间片太长退化成FCFS。多选题会问时间片大小受什么因素影响标准答案是切换开销和响应时间之间的权衡。多级反馈队列是终极改进每级优先级从高到低、时间片从短到长、新进程进最高级用完时间片降级。这类算法不用背死注意它同时兼顾短作业的响应和长作业的周转。5.2 磁盘调度SCAN与C-SCAN磁头方向是半对半错的失误点磁盘调度的考点是四种算法FCFS、SSTF、SCAN、C-SCAN电梯算法。计算题会给磁道范围、磁头起始位置和方向、请求序列让你算磁头移动总量或平均寻道距离。最容易得零分的原因是忽略当前磁头移动方向——SSTF可能因为贪近而往返折返SCAN则是先朝一个方向走到头反方向再走到头期间经过的请求逐个服务。C-SCAN更简单单向服务到最远端后直接跳回起点不服务回程的请求。画移动轨迹图能极大降低出错率按先后顺序标一个箭头折线沿磁道数一遍格子就算出移动总量。方向判断上题目会明确说当前磁头在100道正向磁道号增大的方向移动你就只往增大方向走遇到最大请求再返回。很多同学下意识往最近的服务请求方向移动实际是错的必须严格按方向约束来不然算出来的答案会被扣一半甚至全扣。5.3 磁盘读写时间计算三次分解别漏项扇区边界注意磁盘读写时间的计算题是每年大题的保分题。公式要烂熟于心存取时间 寻道时间 旋转延迟 传输时间。旋转延迟的坑不是取一半是平均旋转延迟通常是旋转半圈的时间所以用旋转一周时间的1/2来算除非题目给了具体起始扇区位置此时要按具体角度差计算。传输时间用要读的字节数除以磁盘传输速率得到。单位制式上磁盘容量常见GB、传输速率常给MB/s题目很容易在这里挖坑换算时要格外小心。扇区边界的一个冷门考点是读多个连续扇区时旋转延迟算几次。正确答案是一次寻道后、旋转到第一个扇区、连续读多扇区只需要额外旋转很少的角度甚至不转。很多同学按每个扇区都算一次寻道和旋转延迟直接把结果翻几倍这是典型的丢分点。备考时这种细节题型值得刷两遍。6. 考前一周的三种冲刺技巧把死知识变活网安视角能多拿卷面分如果你已经按照前面几章把概念、计算、大题结构都捋过一遍最后一这个阶段我一般会做三件事第一把错题按考点类型重新分类而不是按题号顺序看找出自己真正薄弱的是信号量设计还是两级页表计算集中突击第二把每一章的知识网络用白纸画一遍不看书默写状态转换图、页表查询链、死锁处理流程的三种策略预防、避免、检测与恢复的对比表能画出来才是真记住了画不出来就先背再画第三把历年考题的大题答案重新写一遍不是背而是用自己的话复述逻辑写完再对着考纲核对有没有漏掉关键维度。至于具体题型我的经验是如果算错一步宁可把草稿纸上正确的部分圈出来写上已验算到某一步也好过直接涂掉。网安视角的加分项我多说一句画页表转换、进程隔离、缓冲区溢出和栈保护的关系时顺手标注硬件上通过页表、TLB、特权级实现进程隔离恶意进程无法随意访问其他进程地址空间这段话每一次出现在合适题型里都能让判卷老师觉得你比其他同学多懂一层。希望这篇笔记的框架能帮你在最后这个几天里把知识串成网考场上遇到没见过的变体题也不慌。我不太爱说加油这种话但真心希望这份复习路径被证明是准的省下来的时间多睡两觉比多刷十道无用题实在多了。本文还有配套的精品资源点击获取