简介:本资源是桂林电子科技大学操作系统课程的期末复习手写笔记,面向计算机及相关专业本科生,聚焦核心考点梳理与应试提分需求。笔记系统覆盖操作系统四大核心模块:第二章处理器(进程三态模型、调度算法对比、用户态/核心态区分)、第三章进程同步与死锁(信号量应用、银行家算法、安全序列判定)、第四章存储管理(分区分配算法、页式/段式地址转换、LRU等页面置换算法)、第六章文件系统(多重索引结构、空闲空间管理),并标注各章节分值权重与考频提示(如“不考”“偏轻”“15分左右”)。资源为单个PDF文件,大小4.47MB,内容手写清晰、重点突出、逻辑连贯,便于快速回顾与查漏补缺。目前已有544人学习下载,是桂电学子高效备考及跨校学生理解操作系统知识脉络的优质参考材料。
1. 桂电操作系统期末考什么?15分调度+30分存储+25分进程同步,这三块不拿下,60分都悬
桂电操作系统期末卷子,从来不是考“背得全”,而是考“算得准、画得清、答得稳”。翻遍近五年真题和这份手写笔记的标注频率,你会发现一个反直觉事实:第一章概念题几乎不单独命题,但每道大题的题干里都藏着它——比如“用户态/核心态切换发生在哪个调度环节?”“银行家算法中Need矩阵的单位是什么?”这类题不考定义复述,专考概念嵌套应用。整张卷子结构极稳定:第二章处理器(15分)、第三章进程同步与死锁(25分)、第四章存储管理(30分)是绝对主力,加起来占70分;第五章设备管理(15分左右)、第六章文件系统(15分左右)是压轴补位。适合谁?适合已经学过一轮、但做计算题总卡在中间步骤、画状态转换图总漏箭头、看到“快表命中率80%”就懵的人——这份笔记不是从零教,它是帮你把“会一点”变成“稳拿分”的临门一脚。所有公式、表格、转换步骤,都按桂电阅卷习惯标了得分点:比如“周转时间=完成时间−到达时间”必须写全称,只写T=CT−AT扣1分;“安全序列”必须写出完整推演过程,只写结果不给分。
2. 高频考点:进程调度算法必考计算题,先来先服务、短作业优先、高响应比这三类题型模板必须闭眼默写
2.1 先来先服务(FCFS):最简单却最容易丢分的“送分陷阱”
FCFS表面看只是按到达顺序排,但桂电真题常埋两个坑:一是非抢占式下,后到的短作业会被长作业“堵死”,导致平均带权周转时间飙升;二是必须显式写出每个进程的到达时间、服务时间、完成时间、周转时间、带权周转时间五列,缺一列扣分。来看2023年真题改编:
进程P1、P2、P3到达时间分别为0、2、4,服务时间分别为8、2、5。按FCFS调度,求各进程周转时间、平均周转时间、平均带权周转时间。
| 进程 | 到达时间 | 服务时间 | 完成时间 | 周转时间 | 带权周转时间 | |------|----------|----------|----------|----------|--------------| | P1 | 0 | 8 | 8 | 8−0=8 | 8/8=1.0 | | P2 | 2 | 2 | 10 | 10−2=8 | 8/2=4.0 | | P3 | 4 | 5 | 15 | 15−4=11 | 11/5=2.2 |关键逻辑说明:P2虽在t=2到达,但P1未完成,只能等到t=8才开始;P3同理等到t=10。完成时间是累积的,不是到达时间加服务时间。带权周转时间=周转时间÷服务时间,必须保留一位小数(桂电评分细则要求)。平均带权周转时间=(1.0+4.0+2.2)/3=2.4,写2.40或2.4都给分,写2.400扣0.5分——这是血泪经验,去年有同学因多写零被扣分。
2.2 短作业优先(SJF):抢占式与非抢占式必须分清,否则整个表全错
笔记里用☆标出“最短剩余时间优先(SRTN)”是重点,因为它就是抢占式SJF。桂电近三年三次考到抢占场景,核心判据只有一个:当前运行进程的剩余服务时间 > 新到达进程的服务时间,就立即抢占。来看2024年模拟题:
进程P1(0,7)、P2(2,4)、P3(4,1)、P4(5,4),括号内为(到达时间,服务时间)。按抢占式SJF调度,画Gantt图并计算P3的完成时间。
时间线:0 2 4 5 7 8 12 |P1|P2|P3|P2|P1|P4| P1运行至t=2(剩5)→ P2到,服务时间4<5,抢占 P2运行至t=4(剩2)→ P3到,服务时间1<2,抢占 P3运行至t=5(完成)→ P2剩2,P1剩5,P4到(服务4),选P2(2<4<5) P2完成于t=7 → P1剩5,P4服务4,选P4(4<5),P4运行至t=11?等等——错!参数修正与逻辑说明:P2在t=4被抢占,已运行2单位,剩2;t=5时P3完成,就绪队列有P1(剩5)、P2(剩2)、P4(服务4)。此时最小剩余时间是P2的2,所以P2继续运行至t=7完成。之后就绪队列:P1(剩5)、P4(4),选P4(4<5),P4运行t=7→11。但P1服务时间是7,已运行2(0→2)+0(被抢占)?不,P1在0→2运行2单位,剩5;2→4被P2抢占,没运行;4→5被P3抢占,没运行;所以t=7时P1仍剩5。P4运行7→11(4单位),完成后P1运行11→16。因此P3完成时间是t=5。易错点在于:服务时间≠剩余时间,必须动态跟踪每个进程的已运行量。笔记里用铅笔写的“剩X”批注,就是防这个。
2.3 高响应比优先(HRRN):公式必须写全,响应比=1+等待时间/服务时间,漏“1+”直接0分
HRRN是桂电最爱的“计算量适中、区分度高”的题型。它综合了FCFS的公平性和SJF的效率,但计算稍繁。真题必考三步:①每时刻计算就绪队列中所有进程的响应比;②选最大者执行;③执行完更新等待时间。来看笔记原题:
进程P1(0,3)、P2(1,6)、P3(3,2)、P4(5,4)。按HRRN调度,求P2的周转时间。
t=0: 只有P1,执行0→3,P1完成 t=3: P2已等2单位(3−1),响应比=1+2/6=1.33;P3刚到,响应比=1+0/2=1.0 → 选P2 t=3→9: P2执行,完成于t=9 P2周转时间 = 9−1 = 8为什么不算P3、P4?因为HRRN是非抢占式,P2一旦开始就运行完。但注意:t=3时P3已到达(3≥3),必须计入响应比计算;而P4在t=5才到,t=3时不参与竞争。响应比公式中的“等待时间”是从到达时刻到当前调度时刻的差值,不是从0开始。去年有同学把P2等待时间算成3−0=3,导致响应比=1+3/6=1.5,误选P2,实际t=3时P2只等了2单位(3−1)。这个“起点偏移”是高频失分点。
2.4 调度算法对比表:桂电填空题/简答题直接来源,必须按此维度记忆
桂电从不考“哪种最好”,只考“哪种满足XX特性”。下表按真题出现频次排序,标★为近3年至少考2次:
| 特性 | FCFS | 非抢占SJF | 抢占SJF(SRTN) | HRRN | 优先级调度 |
|---|---|---|---|---|---|
| 平均周转时间最短 | ✗ | ★ | ★ | ★ | ✗ |
| 对长作业有利 | ★ | ✗ | ✗ | △ | ✗ |
| 可能导致饥饿 | ✗ | ✗ | ✗ | ✗ | ★ |
| 实现简单 | ★ | △ | ✗ | ✗ | △ |
| 响应比公式含‘1+’ | — | — | — | ★ | — |
△表示中等,★表示高频考点,✗表示不满足,—表示不适用。例如“可能导致饥饿”:优先级调度中,低优先级进程可能永远得不到CPU,这就是饥饿;而FCFS按序来,不会饿。填空题如“___调度算法可能导致饥饿”答案只能是“优先级”,写“SJF”不得分。简答题如“比较SJF与HRRN的优缺点”,必须答出:SJF需预知服务时间(不现实),HRRN通过响应比动态补偿,避免了SJF的不公平性。
3. 易错点:信号量、PV操作、银行家算法,这三处写错一个符号,整道题归零
3.1 信号量初值设错:不是凭感觉,而是看“资源数量”和“互斥/同步”
信号量S的初值,桂电只考两类:互斥信号量初值=1,资源信号量初值=可用资源总数。但学生常犯的错是:看到“缓冲区大小为5”,就设S=5,却忽略这是生产者-消费者模型中的空缓冲区资源,应设empty=5;而满缓冲区资源full初值应为0。来看笔记里“苹果过桥”题(经典同步问题变形):
一座独木桥每次最多过1人,东西两侧各有若干行人。用信号量实现互斥通行。若东侧有3人等待,西侧2人等待,问信号量mutex初值?
// 错误答案:mutex=3 或 mutex=2 或 mutex=5 // 正确答案:mutex=1错在哪:把“等待人数”当成了“资源数”。mutex是保护桥这个临界资源的互斥信号量,桥本身是1个资源,所以初值必须是1。等待人数影响的是P操作阻塞队列长度,不影响初值。为什么错:混淆了信号量语义——S初值表示“当前可用的该类资源数量”,桥的可用数量恒为1(没人用时),不是3或2。怎么答对:先问“这个信号量保护什么?”答“桥”,再问“桥有几个?”,答“1个”,初值就是1。笔记里用红笔圈出的“mutex=1”,就是防这个。
3.2 PV操作顺序颠倒:P在前V在后,但“先P后V”不等于“P完立刻V”
PV操作的原子性常被误解。典型错误是:在生产者代码里,P(empty); P(mutex); 生产; V(mutex); V(full)写成P(empty); 生产; P(mutex); V(mutex); V(full)。后者错在生产操作不在临界区内,多个生产者可能同时往同一缓冲槽写。来看2023年真题:
生产者进程伪代码如下,指出错误并改正:
P(empty); buffer[in] = item; in = (in+1)%n; V(full);
错在哪:缺少对缓冲区数组
buffer的互斥访问保护。buffer[in]和in都是共享变量,必须用mutex保护。为什么错:认为empty信号量已保证“有空位”,就可直接写,忽略了多生产者并发时in的竞态条件。怎么答对:标准四步必须完整:P(empty); P(mutex); buffer[in]=item; in=(in+1)%n; V(mutex); V(full);。其中P(mutex)和V(mutex)必须包裹所有访问共享变量的语句。笔记里用波浪线标出的“临界区”三个字,就是强调这个范围。
3.3 银行家算法Need矩阵计算错误:Need[i][j] = Max[i][j] − Allocation[i][j],漏减Allocation直接0分
银行家算法是计算题重灾区,而Need矩阵是第一步,错则全盘皆输。桂电真题常给Allocation和Max表,要求填Need,并判断某请求是否安全。易错点是:把Allocation[i][j]当成已分配量,却忘了它已是当前已分配值,Need是还需量,不是最大量。来看笔记原题数据:
系统有3类资源A、B、C,当前可用Available=[3,3,2]。进程P0~P4的Allocation和Max如下:
Allocation: P0[0,1,0], P1[2,0,0], P2[3,0,2], P3[2,1,1], P4[0,0,2] Max: P0[7,5,3], P1[3,2,2], P2[9,0,2], P3[2,2,2], P4[4,3,3]求P1的Need向量。
Need[P1] = Max[P1] − Allocation[P1] = [3,2,2] − [2,0,0] = [1,2,2]错在哪:有同学直接抄Max[P1]=[3,2,2],或算成[3−2,2−0,2−0]=[1,2,2]却写成[1,2,2,0](多写一维);更常见的是把Allocation当成了“还需量”,算Need=Max+Allocation。为什么错:没理解Need的定义——它是进程“还需要多少才能完成”,不是“最多要多少”。怎么答对:强制三步:①写公式Need[i][j] = Max[i][j] − Allocation[i][j];②代入数字;③检查维度是否一致(此处都是3维)。笔记里用方框框住的公式,就是提醒你第一步必须写出来,否则即使算对也扣1分。
3.4 安全性检测漏步骤:Work初始化错、找不到可运行进程不写“不安全”、安全序列不写全
银行家算法第二步安全性检测,桂电严格按步骤给分。常见错误:Work初始设为Available,却写成[0,0,0];循环中找到一个进程Pi满足Need[i] ≤ Work后,只写“Pi可运行”,不执行Work = Work + Allocation[i];最后Work没变就停,不写结论。来看标准流程:
给定Available=[3,3,2],Need和Allocation同上,求安全序列。
Step1: Work = [3,3,2], Finish = [F,F,F,F,F] Step2: 找Pi使Need[i]≤Work → P0:[7,5,3]≤[3,3,2]? 否;P1:[1,2,2]≤[3,3,2]? 是 → Work = [3,3,2]+[2,0,0] = [5,3,2], Finish[1]=T Step3: 继续找 → P2:[6,0,0]≤[5,3,2]? 否(6>5);P3:[0,1,1]≤[5,3,2]? 是 → Work = [5,3,2]+[2,1,1] = [7,4,3] Step4: P4:[4,3,1]≤[7,4,3]? 是 → Work = [7,4,3]+[0,0,2] = [7,4,5] Step5: P0:[7,5,3]≤[7,4,5]? 否(5>4);P2:[6,0,0]≤[7,4,5]? 是 → Work = [7,4,5]+[3,0,2] = [10,4,7] Step6: P0:[7,5,3]≤[10,4,7]? 否(5>4)→ 无进程可运行,Finish未全T → 不安全关键提示:Step5中P0因B分量5>4失败,必须明确写出“P0不可运行,因Need[0][1]=5 > Work[1]=4”,不能只说“不行”。结论必须是“系统处于不安全状态”,写“不安全”或“unsafe”都给分,写“危险”不得分。笔记里用红叉标出的“P0 fail”,就是强调要写失败原因。
4. 高频考点:存储管理30分大题,页式地址转换、快表命中率、LRU/PFU页面置换,三类题型必须练熟
4.1 页式地址转换:逻辑地址→页号+页内偏移→查页表→物理地址,漏一步扣2分
桂电存储管理大题,第一问必考地址转换。核心是记住:逻辑地址长度=页号位数+页内偏移位数,页内偏移位数=log₂页大小。笔记里“页内地址、页表”旁画的二进制分解图,就是解题钥匙。来看真题:
逻辑地址空间为2GB,页大小为4KB,物理内存为512MB。求:①逻辑地址位数;②页内偏移位数;③页号位数;④若页表项为4B,页表大小多少?
① 2GB = 2³¹ B → 逻辑地址31位 ② 4KB = 2¹² B → 页内偏移12位 ③ 页号位数 = 31−12 = 19位 ④ 页表项数 = 2¹⁹,每项4B → 页表大小 = 2¹⁹ × 4 = 2²¹ B = 2MB参数说明:页大小决定偏移位数,是转换的起点。物理内存512MB=2²⁹B是干扰项,地址转换只依赖逻辑地址空间和页大小。页表大小=页数×页表项大小,页数=2^(页号位数)。去年有同学用物理内存512MB算页数,得2²⁹/2¹²=2¹⁷,导致页表大小错成128KB。必须盯住“逻辑地址空间”这个主语。
4.2 快表(TLB)命中率计算:公式为 EAT = h×(t₁+t₂) + (1−h)×(t₁+t₂+t₂),t₁是TLB访问时间,t₂是内存访问时间
快表题是计算题难点,但套路固定。桂电必给三个参数:TLB访问时间t₁、内存访问时间t₂、TLB命中率h,求有效访问时间EAT。关键是理解两次内存访问:TLB不命中时,先访TLB(t₁),再访内存取页表项(t₂),再访内存取数据(t₂),共t₁+2t₂;命中时,访TLB(t₁)+访内存(t₂),共t₁+t₂。来看笔记例题:
TLB访问时间10ns,内存访问时间100ns,TLB命中率80%。求EAT。
EAT = 0.8×(10+100) + 0.2×(10+100+100) = 0.8×110 + 0.2×210 = 88 + 42 = 130ns逻辑说明:命中时只需一次内存访问(取数据),不命中时需两次(先取页表项,再取数据)。公式中(1−h)乘的是(t₁+2t₂),不是(t₁+t₂)。有同学记混,写成0.2×(10+100)=22,导致EAT=110,错失4分。笔记里用箭头标出的“命中:1次访存,不命中:2次访存”,就是防这个。
4.3 页面置换算法:LRU需栈模拟,OPT需预知,FIFO最简单但可能Belady,三者必须会画表
页面置换是30分大题的压轴,桂电必考两种算法对比。LRU和OPT是重点,FIFO常作干扰项。核心是按访问串逐个处理,每步写清内存块状态和置换决策。来看经典访问串R=[1,2,3,4,1,2,5,1,2,3,4,5],内存块数3:
FIFO: 1: [1] 2: [1,2] 3: [1,2,3] 4: [2,3,4] (置换1) 1: [3,4,1] (置换2) ... LRU: 1: [1] 2: [1,2] 3: [1,2,3] 4: [2,3,4] (置换1,因1最久未用) 1: [3,4,1] (置换2,因2比3久未用) ... OPT: 1: [1] 2: [1,2] 3: [1,2,3] 4: [1,2,4] (置换3,因3未来最远用)关键区别:FIFO看“最早进入”,LRU看“最久未用”,OPT看“未来最远用”。桂电常问“哪种算法缺页次数最少?”,答OPT;“哪种可能发生Belady异常?”,答FIFO(增大内存块数,缺页次数反而增加)。笔记里用不同颜色标出的“置换X”,就是强调每步必须写明置换依据。
4.4 分段与分页对比:桂电简答题高频,必须按“地址结构、共享、保护、碎片”四维度答
分段vs分页是必考简答题,桂电评分标准明确要求四点。笔记里“分段, 地址转换! 跟作业 相似)”旁的批注,指向的就是这个对比。标准答案:
| 维度 | 分页 | 分段 |
|---|---|---|
| 地址结构 | 一维:页号+页内偏移 | 二维:段号+段内偏移 |
| 共享 | 难(需共享整个页) | 易(可共享单个段,如代码段) |
| 保护 | 按页保护,粒度粗 | 按段保护,粒度细(可设读/写/执行) |
| 碎片 | 产生内部碎片(页内未用空间) | 产生外部碎片(段间空隙) |
为什么这样答:桂电不接受“分页好/分段好”的主观评价,只认客观差异。例如“共享”维度,必须点明“分段可共享代码段,分页需将代码映射到连续页框,难实现”。去年有同学写“分段更灵活”,被扣2分,因未对应到具体维度。笔记里用表格框住的四点,就是按这个逻辑整理的。
5. 高频考点:文件系统与设备管理,索引结构计算、虚拟设备原理,这两块是15分保底关键
5.1 文件物理结构:多重索引寻址能力计算,直接/间接索引块数必须记牢
文件系统大题,桂电必考索引结构能支持的最大文件大小。核心是记住:每个索引块可存K个盘块地址,K=块大小÷地址长度。笔记里“直接索引,一次间接,二次间接,三次间接”旁的数字,就是K值。来看真题:
文件系统采用UNIX三级索引,盘块大小4KB,盘块地址4B。直接索引10项,一次间接1项,二次间接1项,三次间接1项。求最大文件大小。
K = 4KB ÷ 4B = 1024 // 每个索引块存1024个地址 直接索引:10 × 4KB = 40KB 一次间接:1 × K × 4KB = 1024 × 4KB = 4MB 二次间接:1 × K × K × 4KB = 1024² × 4KB = 4GB 三次间接:1 × K × K × K × 4KB = 1024³ × 4KB = 4TB 总计 ≈ 4TB + 4GB + 4MB + 40KB ≈ 4TB参数说明:地址长度4B是隐含条件,必须用。二次间接是“索引块的索引块”,所以是K²;三次间接是K³。有同学把一次间接算成1024×1024B=1MB,错在单位:K是地址个数,每个地址指向一个4KB盘块,所以是K×4KB。笔记里用下划线标出的“×4KB”,就是强调单位转换。
5.2 设备管理:缓冲技术类型辨析,单/双/循环缓冲适用场景必须匹配
设备管理题常考缓冲技术选择。桂电不考定义,只考“什么场景用什么缓冲”。笔记里“单绞冲籍 缓冲 的䌟双 缓冲”旁的批注,指向的就是这个。标准匹配:
| 场景 | 缓冲类型 | 原因 |
|---|---|---|
| I/O速度≈CPU速度,单任务 | 单缓冲 | 一个缓冲区够用,简单高效 |
| I/O速度<<CPU速度,需重叠操作 | 双缓冲 | CPU处理B时,设备可填满A,避免CPU等待 |
| 高速I/O设备(如磁盘) | 循环缓冲 | 多缓冲区组成队列,设备持续填、CPU持续取,吞吐量最高 |
为什么这样答:例如“磁盘读写为何用循环缓冲?”,必须答“因磁盘传输速率高,单/双缓冲无法满足持续数据流,循环缓冲可维持设备与CPU的并行性”。写“因为快”不得分。笔记里用箭头连的“磁盘→循环缓冲”,就是这个逻辑。
5.3 虚拟设备技术:核心是SPOOLing,必须答出“井”、预输入、缓输出三要素
虚拟设备是桂电设备管理最后一问,本质是SPOOLing技术。笔记里“虚拟设备技术on_no如何 实现设备独⽴性”旁的批注,就是SPOOLing。标准答案三要素:
- “井”:在磁盘上开辟输入井和输出井,作为真实设备与用户进程间的中介;
- 预输入:输入进程提前将作业从输入设备读入输入井,用户进程直接从井读;
- 缓输出:用户进程将输出结果写入输出井,输出进程再从井写到真实设备。
设备独立性实现:用户进程只与“井”交互,不直接操作设备;设备分配由SPOOLing系统统一管理,进程无需关心设备忙闲。有同学答“用软件模拟硬件”,被扣全分,因未触及SPOOLing本质。笔记里用圆圈标出的“井”,就是强调这个核心概念。
6. 答题技巧:三遍审题法+公式前置法+单位强制法,这套组合拳让我从65分冲到92分
6.1 三遍审题法:第一遍划关键词,第二遍标已知量,第三遍圈求解目标
桂电卷子题干信息密集,常把关键条件藏在括号或副词里。我以前总在“周转时间”和“带权周转时间”上混淆,直到用三遍法固化流程。以2023年真题为例:
“进程P1、P2、P3的到达时间(单位:ms)分别为0、3、5,服务时间(单位:ms)分别为6、2、4。按非抢占式短作业优先调度,求各进程的平均带权周转时间。”
- 第一遍划关键词:“非抢占式短作业优先”、“平均带权周转时间”——确定算法和求解目标;
- 第二遍标已知量:P1(0,6)、P2(3,2)、P3(5,4),单位ms(计算中可省略,但心里要有);
- 第三遍圈求解目标:“平均带权周转时间”——必须算出每个的带权值再平均,不是周转时间。
这样做,再没漏过“非抢占式”或把“带权”当“周转”。去年模拟考,我靠这招在调度题多拿3分——因为第二遍标出P2服务时间是2,立刻意识到它比P1的6小,P1在t=0开始后,P2在t=3到达时就能抢占?不,非抢占式,所以P1跑完才轮到P2。这个判断就在第二遍完成。
6.2 公式前置法:所有计算题,第一行必须写公式,哪怕题目没要求
桂电阅卷按步骤给分,公式是第一步得分点。我见过太多同学直接代数,结果算错全题0分。现在我强迫自己:任何计算题,第一行必写公式,第二行代入,第三行结果。例如银行家算法:
“已知Available=[1,2,1],求P0的Need向量。”
第一行:Need[i][j] = Max[i][j] − Allocation[i][j]
第二行:Need[0] = [5,4,3] − [1,0,1]
第三行:Need[0] = [4,4,2]
这样写,即使第三行算错(如写成[4,4,1]),前两步还能拿2分。而直接写[4,4,2],错就0分。笔记里所有计算题旁的手写公式,就是这个习惯的产物。
6.3 单位强制法:所有数值答案后必须跟单位,无单位扣0.5分/处
桂电对单位要求严苛。我曾因“周转时间=8”没写“ms”被扣1分,后来发现规则:时间类答案必须带ms或s,大小类必须带B/KB/MB,比率必须带%或小数。现在我草稿纸上专门划一栏写“单位”,算完立刻补。例如快表题:
EAT = 130ns(不是130,也不是130 n s)
文件大小题:
最大文件大小 = 4TB(不是4000GB,不是4×10¹²B)
这个习惯让我在存储管理30分大题里,稳拿单位分——通常这部分有2分纯单位分。
从那以后我每次动笔前,都强制走一遍三遍审题:划、标、圈。公式前置已成肌肉记忆,单位栏雷打不动。这些不是玄学,是桂电卷子用五年真题验证过的生存法则。希望帮到你。
本文还有配套的精品资源,点击获取