简介:这份复习笔记面向高校计算机相关专业学生,聚焦操作系统期末备考场景,系统梳理课程核心概念与关键机制,帮助读者在考前快速建立知识框架、查漏补缺。内容覆盖操作系统的目标与发展历程、并发共享虚拟异步四大特性,以及处理机管理、存储器管理、设备管理和文件管理等主要功能;第二章进一步展开前趋图、进程三态与五态转换、PCB、内核原语,并重点讲解信号量机制、进程互斥与同步、管程及生产者消费者等经典问题,知识点按章节层层递进,便于对照教材复习。资源包共1个docx文档,约1.17MB,以文字笔记形式呈现,条理清晰、重点突出,适合打印或电子阅读。目前已有779人学习下载,可作为期末冲刺阶段的提纲式参考资料,帮助读者理清易混概念并强化对进程管理部分的理解。
1. 从一道“送分题”翻车说起:操作系统期末到底考什么
“操作系统期末复习笔记”这几个字,很多人第一反应是背概念。真到考场上,最先翻车的往往不是没背,而是背了不会用。比如问“并发和并行的区别”,背了“宏观同时、微观交替”却答不出进程为什么需要同步;问“页面置换算法”,记住了 LRU 名字却算不对缺页次数。这场考试考的不是名词默写,而是你能不能把概念放进具体场景里推一遍。整份卷子的分值分布很稳定:基本概念与特征、进程管理与同步互斥、处理机调度与死锁、内存管理与分页分段、虚拟存储器与页面置换、I/O 管理与磁盘调度,六大块撑起绝大部分分数。选择填空靠概念辨析拿分,简答靠“定义加对比加例子”拿分,计算题靠地址变换、周转时间、缺页率、银行家算法这些固定套路拿分。适合正在准备期末、想把零散笔记串成答题模板的人,也适合面试前需要快速捡起操作系统核心考点的人。
2. 基本概念与四大特征:选择题最爱在这里挖坑
2.1 操作系统目标与发展阶段的高频辨析
这一块在卷面上通常以选择题和填空题出现,分值不大但密度高。四个目标里,方便性和有效性是最重要的两个,有效性包含提高资源利用率和提高系统吞吐率两层,答题时别只写“提高效率”四个字,要拆开写。发展阶段要能按顺序说清:人工操作方式没有操作系统,单道批处理每次内存只有一个作业,多道批处理的核心是上一道程序做 I/O 时 CPU 空闲就调度下一道,让 CPU 始终处于运行状态。分时系统的关键词是及时响应和交互,实现靠作业直接进入内存加时间片轮转;实时系统的关键词是截止时间,时间本身是关键参数。这类题最常见的考法是给一段描述让你判断属于哪种系统,判断依据就抓两个词:有没有交互、有没有硬性截止时间。
提示:多道批处理和分时系统最容易混。看到“提高吞吐量、资源利用率”选多道批处理,看到“多个终端交互、及时应答”选分时。
2.2 并发、共享、虚拟、异步:四个特性怎么答才不丢分
四个基本特性里,并发和共享是相辅相成的,有并发才能共享,有共享才能并发,这句话几乎每年都能用到。并发与并行的区别要答准:并行是同一时刻同时进行,并发是同一时间间隔内宏观同时、微观交替。共享分互斥共享和同时访问两种,打印机是互斥共享的典型例子。虚拟分时分复用和空分复用,时分复用是让空闲资源去为别人服务,空分复用对应虚拟存储。异步的落脚点是进程停停走走、以不可预知的速度推进。简答题如果只写四个词,最多拿一半分,正确答法是每个特性给一句定义加一个例子,再补一句“并发与共享互为存在条件”。
2.3 真题演练:一道特征辨析简答题的完整答法
题目:请说明操作系统的四个基本特性,并解释并发与共享之间的关系。
答题思路分三步走。第一步逐个下定义,并发是多个进程在同一时间间隔内宏观同时运行、微观交替执行;共享是系统资源可供多个并发进程共同使用,分互斥共享和同时访问;虚拟是把一个物理实体变成若干逻辑对应物,靠时分复用和空分复用实现;异步是进程受资源限制停停走走、推进速度不可预知。第二步点关系,并发和共享互为存在条件,没有并发就谈不上共享,没有共享并发也无法推进。第三步补一句易错提醒,并行不是并发,并行需要多处理机,并发在单处理机上也能发生。这样答下来,定义、关系、辨析三层都齐了,阅卷时每个采分点都能对上。
3. 进程管理与同步互斥:简答和综合题的主战场
3.1 进程状态转换与 PCB:三态图五态图必须能默画
进程这块的第一道坎是状态转换。三态是就绪、执行、阻塞,五态多了创建和终止,引入挂起后还要能说清挂起态和就绪态的区别。答题时把转换条件写全:就绪到执行是调度,执行到就绪是时间片用完,执行到阻塞是等待某事件,阻塞到就绪是事件发生。进程控制靠原语实现,原语由关中断和开中断指令保证一气呵成、不可中断。PCB 的作用要背四条:作为独立运行基本单位的标志、能实现间断性运行、提供进程管理与调度所需信息、实现与其他进程的同步与通信。PCB 里的信息分四类:进程标识符、处理机状态、进程调度信息、进程控制信息。这类题考法很直接,给状态图让你填箭头,或者问“阻塞态能不能直接到执行态”,答案是不能,必须先回就绪态。
3.2 信号量机制:从整型到记录型再到信号量集
同步互斥是整张卷子最容易出综合题的地方。先要答清为什么引入信号量:进程互斥的四种软件实现(单标志法、双标志先检查、双标志后检查、Peterson 算法)和三种硬件实现(中断屏蔽、TSL 指令、Swap 指令)都无法实现让权等待。信号量机制用一对原语 wait(S) 和 signal(S),也就是 P、V 操作,来申请和释放资源。整型信号量的优点是两个原子操作就能实现互斥,缺点是不满足让权等待、存在忙等。记录型信号量用记录型数据结构,实现了让权等待,而且 value 有了物理意义:value 大于等于 0 表示资源数目,小于 0 时其绝对值表示阻塞队列中的进程数。AND 型信号量把进程需要的所有资源一次性分配,避免死锁,但调度单位仍是 1、效率低。信号量集解决一次需要 N 个某类资源要执行 N 次 wait 的低效问题,以及资源低于下限就不分配的需求,操作是 Swait 和 Ssignal。
用信号量实现互斥的四步是固定模板:划定临界区、设互斥信号量 mutex 初值为 1、临界区前 wait(mutex)、临界区后 signal(mutex)。实现同步则是设同步信号量初值为 0,前操作之后 signal、后操作之前 wait。实现前驱关系时,每一对前驱关系各设一个同步变量,前操作后 V、后操作前 P。管程的思想是把信号量及其操作封装在对象内部,每次只允许一个进程访问管程内资源。
3.3 真题演练:生产者消费者与哲学家进餐的答题模板
题目:用信号量描述生产者消费者问题,并说明哲学家进餐问题如何避免死锁。
生产者消费者的标准答法:设 mutex 初值 1 保护缓冲区,设 empty 初值 n 表示空缓冲区数,设 full 初值 0 表示产品数。生产者先 wait(empty) 再 wait(mutex),放产品后 signal(mutex) 再 signal(full);消费者先 wait(full) 再 wait(mutex),取产品后 signal(mutex) 再 signal(empty)。这里有个血泪经验:两个 wait 的顺序不能反,先 wait(mutex) 再 wait(empty) 在缓冲区满时会死锁。哲学家进餐的避免死锁答法有三种常见思路:一是限制最多四位哲学家同时拿筷子,二是要求奇数号先拿左再拿右、偶数号相反,三是用 AND 型信号量一次性拿两只筷子。答题时写出一种并说明理由即可,面试官最想听的是你知不知道死锁的四个必要条件在这里怎么被破坏。
// 生产者消费者:信号量顺序是采分点 semaphore mutex = 1; // 保护缓冲区 semaphore empty = n; // 空缓冲区数量 semaphore full = 0; // 产品数量 producer() { while (1) { wait(empty); // 先确认有空位,再抢锁 wait(mutex); // 放入产品 signal(mutex); signal(full); } } consumer() { while (1) { wait(full); // 先确认有产品,再抢锁 wait(mutex); // 取出产品 signal(mutex); signal(empty); } }这段代码的关键不在语法,在 wait 的先后。empty 和 full 是资源信号量,mutex 是互斥信号量,资源信号量必须放在互斥信号量之前,否则一个进程占着锁等资源、另一个进程等锁,直接死锁。参数上 n 是缓冲区容量,初值设置错了整道题就废了。
4. 调度、死锁与内存管理:计算题的固定套路
4.1 调度算法对比与周转时间计算
处理机调度分三级:高级调度是作业调度,外存到内存;中级调度是内存调度,挂起态到就绪态;低级调度是进程调度,就绪到运行,频率最高。算法对比要能说清适用场景和优缺点:FCFS 公平简单但交互性差;SJF 平均等待和平均周转最短但对长作业不利;HRRN 用响应比等于(等待时间加要求服务时间)除以要求服务时间,兼顾长短作业;时间片轮转用于分时系统,时间片太大退化为 FCFS,太小则切换开销大;优先级调度用于实时系统,要能说出优先级倒置是什么。计算题的核心公式是周转时间等于完成时间减到达时间,带权周转时间等于周转时间除以运行时间。答题时画一张时间轴表,按到达顺序逐个填完成时间,比心算稳得多。
4.2 死锁四个条件与银行家算法
死锁的四个必要条件是互斥、请求和保持、不可抢占、循环等待,缺一不可。处理策略分三类:预防是破坏必要条件,避免是防止进入不安全状态,检测与解除是允许发生再处理。银行家算法的思路要能口述:进程提出请求时先预判分配后系统是否仍处于安全状态,安全就分配,不安全就让进程先阻塞。安全状态一定不会死锁,不安全状态可能死锁。解除死锁的两种方式是终止进程和剥夺资源,终止全部代价大,逐个终止要考虑进程已运行多久。这类题常考填安全序列,做法是每次找一个需求量小于等于当前可用资源的进程,假设它完成并回收资源,重复直到所有进程排完。
4.3 分区、分页、分段:连续与离散必须分清
内存管理先记层次结构:寄存器在 CPU 内,高速缓存缓解 CPU 与主存速度矛盾,主存存当前运行的程序,磁盘缓存减少 I/O 次数,外存长期保存。装入方式分绝对装入、可重定位装入(静态重定位)和动态运行时装入,链接分静态、装入时动态、运行时动态。连续分配四种:单一连续、固定分区、动态分区、动态可重定位分区。动态分区的顺序搜索算法要能对比:首次适应从链首找、低地址碎片多;循环首次从上一次位置找、碎片均匀;最佳适应按从小到大排、留下最小碎片;最坏适应挑最大分区、容易没有大分区。分页的地址计算是固定套路:页号等于逻辑地址除以页面长度取整,页内偏移等于逻辑地址对页面长度取余。分页与分段的区别要背三条:页是物理单位、段是逻辑单位;页大小固定由系统定、段长由用户定;分页地址空间一维、分段二维。分区是连续的,分页是离散的,分段是段间离散段内连续。
5. 易错点:这五处丢分最冤
5.1 易错一:把并发当并行,把异步当无序
错在哪:答题时写“并发就是同时执行”,或者把异步解释成“进程乱序执行”。为什么错:并发是同一时间间隔内宏观同时、微观交替,并行才要求同一时刻;异步强调的是推进速度不可预知,不是没有规则。怎么答对:先给一句“并发在单处理机上也能发生,并行需要多处理机”,再用“停停走走”解释异步,两个概念分开写。
5.2 易错二:信号量初值设错、wait 顺序写反
错在哪:生产者消费者里把 mutex 初值设成 0,或者先 wait(mutex) 再 wait(empty)。为什么错:mutex 是互斥信号量初值必须为 1,同步信号量初值才为 0;顺序反了在缓冲区满或空时直接死锁。怎么答对:记住“资源信号量在前、互斥信号量在后”,写完代码回头检查每个信号量的物理含义和初值。
5.3 易错三:页面置换算法只记名字不算缺页
错在哪:问 LRU 和 FIFO 的区别,只答“LRU 最近最久未使用”,不给缺页次数对比。为什么错:这类题的分值在计算过程,不在名词。怎么答对:拿到访问串先画帧表,逐次判断命中还是缺页,FIFO 看驻留时间最长,LRU 看上次使用时间最久,OPT 作为评价标准不可实现。算完再补一句“FIFO 性能最差、可能出现 Belady 异常”。
5.4 易错四:银行家算法只看当前可用资源
错在哪:判断安全时只比较当前可用资源够不够,不考虑进程完成后回收的资源。为什么错:安全序列的本质是“假设前面的进程能跑完并归还资源”,只看当前一步会误判。怎么答对:每次选一个需求量小于等于当前可用资源的进程,假设它完成、把已分配资源加回可用资源,再继续找下一个,直到全部排完或找不到。
5.5 易错五:分页地址计算出错在取整取余
错在哪:页号和页内偏移算反,或者页面长度不是 2 的幂时直接移位。为什么错:页号是整除结果、偏移是余数,顺序反了地址全错。怎么答对:写清公式再代入,页号等于逻辑地址除以页面长度取整,偏移等于取余,最后物理地址等于块号乘页面长度加偏移。
6. 考场上的答题节奏:把笔记变成分数的三个习惯
走到最后一章,说点真正影响得分的东西。操作系统期末的卷面结构通常是选择填空打底、简答拉分、计算题定胜负,时间分配上建议选择填空控制在三分之一以内,简答每题写满采分点就停,把时间留给地址变换和调度计算。简答题的通用模板是“定义加对比加例子”三句话:先给准确定义,再和最容易混的概念对比一句,最后补一个具体例子,比如讲互斥共享就提打印机。计算题的习惯是先在草稿上画表,周转时间画到达、运行、完成三列,页面置换画访问串和帧表,银行家算法画最大需求、已分配、需求、可用四列,表格一画,错误率立刻下来。
押题方向上,六个模块里最可能出综合题的是信号量互斥同步、银行家算法安全序列、分页地址变换加 EAT 计算、页面置换缺页次数这四类,简答最可能考四大特性关系、进程三态五态转换、分页与分段区别、死锁四个条件。复习时不要平均用力,把这四类综合题各手算三遍,比通读五遍笔记有用。我自己的教训是早年复习只背概念,考场上遇到生产者消费者直接卡在 wait 顺序上,后来每次复习都强制把每个同步问题手写一遍信号量初值和 P/V 顺序,再对照答案检查,这个习惯让我再没在这类题上丢过分。希望帮到你。
本文还有配套的精品资源,点击获取