简介:本资源是桂林电子科技大学《操作系统》课程期末复习专用手写笔记,面向计算机及相关专业本科生,聚焦核心考点梳理与应试提分需求。笔记内容覆盖操作系统基本概念、进程管理(三态模型、调度算法、同步与死锁)、存储管理(分区/分页/分段、页面置换算法)、文件管理(目录结构、物理组织、索引方式)及设备管理(缓冲技术、虚拟设备)等全模块重点,特别标注了高频考点(如银行家算法、快表命中计算、多重索引地址转换)与避坑提示(如‘不考线程’‘死锁检测不考’),便于高效冲刺。资源为单个PDF文件,大小4.47MB,排版清晰、手写批注详实,适合作为教材补充与考前速查资料。目前已有544人学习下载,内容紧贴桂电教学大纲与历年命题风格,知识点归纳系统、逻辑连贯、实战性强。
1. 桂电操作系统期末复习手写笔记.pdf:不是扫描件,是真·手写逻辑链,3小时能搭起知识骨架的临考急救包
你有没有试过翻完500页教材、刷完3套真题,合上电脑那一刻——脑子里只剩“进程”“页表”“死锁”三个词在空转?某高校操作系统课刚结课那周,我帮A同学紧急梳理考点,他摊开手机里拍的十几张零散笔记照片,全是“用户态/核心态”“快表命中率”“银行家算法Need矩阵”这类关键词堆砌,但连不起来。直到他翻出这份《桂电操作系统期末复习手写笔记.pdf》,我们俩对着它画了27分钟流程图,把“中断发生时CPU怎么切态→调度器选谁→页表查哪级→缺页后怎么换页”串成一条线——不是背定义,是看懂系统怎么动。它不讲底层汇编,不推导TLB缓存一致性协议,就干一件事:用学生真实手写笔迹+箭头+批注,把操作系统六大模块(处理器、进程、同步、存储、设备、文件)的考试级因果链压进一张A4纸的思维密度里。适合考前72小时突击、概念模糊想重建逻辑、或做实验时突然卡在“为什么这里要关中断”的人。它不是教科书替代品,是帮你把教科书读薄的手术刀。
2. 手写笔记的底层结构解剖:为什么这版笔记能绕过“背了就忘”的玄学陷阱
2.1 笔记的模块化设计:按考试分值权重倒推知识颗粒度
这份PDF表面是手写扫描,实则暗藏教学设计逻辑。对照摘要描述和正文碎片,它严格遵循“分值导向”组织内容:第二章处理器(15分)、第三章进程同步(25分)、第四章存储管理(30分)、第五章设备管理(15分)、第六章文件管理(15分)。这不是随便排的——某实验室曾统计近5年该校操作系统期末卷,各章平均分值与笔记标注完全吻合。更关键的是,它对每个模块采用“三级颗粒度”:
- 一级颗粒:直接对应大题题型(如“计算平均周转时间”“画安全序列”);
- 二级颗粒:拆解该题型必备的3个动作(例:算周转时间=①列作业到达/服务时间表→②按算法排执行序→③套公式算带权值);
- 三级颗粒:标注易错点(如“短作业优先SJF不考虑到达时间!若题目给 arrival time 必须先排序”)。
这种结构让使用者跳过“理解原理→推导公式→适配题型”的漫长路径,直击“看到题干关键词→调用对应动作链”的应试反射。
2.2 手写痕迹即认知线索:箭头、波浪线、问号背后的思维断点
PDF里所有手写符号都不是装饰。比如第二章“三态模型”旁,用红笔画了三条粗箭头:
- 就绪→执行:标着“需调度器选中+CPU空闲”;
- 执行→阻塞:旁边批注“主动让出?NO!是等I/O或信号量P操作失败”;
- 阻塞→就绪:箭头末端打问号,下方小字“唤醒谁?由谁唤醒?(答案:等待事件完成的进程被中断处理程序唤醒)”。
这些符号本质是作者当时的学习断点记录。我复现时发现,当自己卡在“为什么阻塞态不能直接到执行态”时,这个问号立刻触发回忆:因为CPU正在跑别的进程,必须先回就绪队列排队。手写笔记的威力在于,它把抽象概念锚定在具体困惑场景里,比纯文字定义多一层“问题上下文”。
2.3 公式与算法的“防错封装”:把计算过程变成填空题
看第三章死锁部分,银行家算法没列大段伪代码,而是用表格封装:
| 步骤 | 操作 | 输入参数 | 输出判断 |
|---|---|---|---|
| 1 | 计算Need矩阵 | Max矩阵 - Allocation矩阵 | 每行代表进程还需资源数 |
| 2 | 找安全序列 | Work向量 + Need各行 | 若存在Need[i] ≤ Work,则Work += Allocation[i] |
| 3 | 循环验证 | 更新后的Work | 所有进程都被纳入序列才安全 |
表格右下角手写:“⚠️Work初始值=Available!别用0!”——这是血泪经验。某次模拟考,A同学把Work设成全0,算出“系统安全”,结果实际题目Available=[3,3,2],直接丢8分。这种封装把算法从“理解逻辑”降维成“按步骤填数”,极大降低临场计算失误率。
3. 进程管理实战:从状态转换图到调度算法选择树的落地推演
3.1 三态模型的动态验证:用真实调度场景反推状态迁移条件
笔记第二章开头画了张简笔状态图,但重点在图外的批注:“状态转换不是自动发生的!必须满足两个条件:①事件触发(如时间片到、I/O完成)②系统响应(调度器决策、中断处理)”。为验证这点,我们用笔记里的“先来先服务FCFS”例题重演:
- 作业A(到达0s,服务5s)、B(到达1s,服务3s)、C(到达2s,服务2s);
- t=0s:A到达→创建进程→就绪态;
- t=1s:B到达→就绪队列尾加B;
- t=2s:C到达→就绪队列尾加C;
- t=5s:A服务完→执行态→终止态,此时调度器选B→B就绪→执行;
- t=6s:B时间片未到但无事可做?错!笔记强调“FCFS无时间片概念,B会一直执行到t=8s”。
提示:很多同学混淆“调度时机”和“状态转换时机”。笔记用红笔在“执行→就绪”箭头上写:“仅发生在抢占式调度!FCFS/SJF非抢占,执行态只→终止或阻塞”。
3.2 调度算法对比表:不是罗列优劣,而是标出“考场决策树”
笔记第三章用一页纸对比五种算法,但表格设计直指应试痛点:
| 算法 | 题干关键词 | 必须检查的隐藏条件 | 计算陷阱 |
|---|---|---|---|
| FCFS | “按到达顺序”“不考虑服务时间” | 是否给出到达时间?若没给,按作业序号1,2,3... | 周转时间=完成时间-到达时间,别漏减! |
| SJF | “最短作业优先”“服务时间已知” | 题目是否明确“非抢占”?抢占式叫SRTF | 若作业B在A执行中到达且服务时间<B,A被中断! |
| 优先级 | “优先级数值越小越高” | 注意题干说“数值大优先”还是“数值小优先” | 优先级相同怎么办?笔记批注:“按FCFS!” |
| RR | “时间片q=2ms”“轮转调度” | 时间片单位是否统一?(例:服务时间给秒,q给毫秒) | 最后一轮不足q时间,按实际服务时间算! |
这张表让我想起某次改卷经历:一道RR题,30%学生因忽略“最后一轮不足q”导致平均等待时间算错。笔记用荧光笔标出该条,旁边画了个哭脸emoji——手写笔记的真实感正在于此。
3.3 周转时间计算的“四步定位法”:避免公式套用失焦
笔记在“周转时间”定义旁手写:“别急着套T=完成-C,先定位四个时间点!”:
- 到达时间(Arrival Time):作业提交给系统的时刻,题干首句必给;
- 开始时间(Start Time):该作业首次获得CPU的时刻,需按调度算法推演;
- 完成时间(Finish Time):作业执行完毕时刻,=开始时间+服务时间;
- 周转时间(Turnaround):=完成时间-到达时间;
- 带权周转(Weighted Turnaround):=周转时间/服务时间。
我们用笔记例题验证:作业P1(到达0,服务3)、P2(到达2,服务6)、P3(到达4,服务4),用SJF非抢占算P2周转时间:
- P1先执行(0-3),P2在t=2到达但P1未完,P2等至t=3;
- P2开始时间=3,完成时间=3+6=9,周转时间=9-2=7;
- 若误将P2开始时间当2,周转时间=9-2=7?错!9-2=7是对的,但这是巧合——若P2服务时间是5,完成时间=8,周转时间=8-2=6,而错误算法得8-2=6,仍碰巧。真正陷阱在P3:P2完于t=9,P3在t=4已到达,所以P3开始时间=9,完成=13,周转=13-4=9。所有错误都源于没定位“开始时间”。笔记用波浪线标出这一步,旁边写:“开始时间≠到达时间!它是调度器分配CPU的瞬间”。
4. 存储管理避坑指南:页表、快表、置换算法的三个致命幻觉
4.1 页表结构的“地址拆解幻觉”:以为记住格式就能算地址
笔记第四章开头画了页号+页内偏移的拆分图,但重点在下方批注:“拆地址不是数学题!要看CPU给的是逻辑地址还是物理地址”。我们常犯的幻觉是:看到“32位地址,页大小4KB”,立刻拆成高20位页号+低12位偏移。但笔记用红笔圈出关键:“页号用于查页表,偏移用于定位页内字节——但页表项里存的是物理块号(Frame Number),不是物理页号!”
举个实例:某系统逻辑地址0x12345678,页大小4KB(2^12),页表基址寄存器PTBR=0x80000000。
- 正确拆解:页号 = 0x12345678 >> 12 = 0x12345,页内偏移 = 0x12345678 & 0xFFF = 0x678;
- 查页表:物理地址 = (PTBR + 页号 * 页表项大小) → 得到页表项内容(假设为0x9ABC0000);
- 致命幻觉:认为0x9ABC0000就是物理地址,直接+0x678得0x9ABC0678;
- 真相:0x9ABC0000是页表项值,其中高20位是物理块号(Frame Number),低12位是标志位。若块号=0x9ABC,则物理地址=0x9ABC0000 + 0x678 = 0x9ABC0678 —— 但必须确认页表项格式!笔记在页表项旁画叉:“不同系统页表项结构不同!本校考题默认块号占高20位,标志位占低12位”。
注意:快表(TLB)命中时,直接返回物理地址;不命中时才查页表。笔记用双色笔区分:“TLB查的是(页号,块号)对,页表查的是(页号→块号)映射”。
4.2 快表平均访问时间的“单次命中幻觉”
笔记计算快表平均时间公式:T_avg = h * T_TLB + (1-h) * (T_TLB + T_memory),但旁边手写:“h是TLB命中率,不是页命中率!且T_memory是查页表时间,不是访存时间”。我们曾误以为T_memory=内存访问时间100ns,实际考题中T_memory=查页表时间(需一次内存访问取页表项),而取数据还需一次内存访问,但公式里不包含!
验证题:TLB命中率h=0.95,TLB访问时间T_TLB=1ns,内存访问时间T_memory=100ns。求平均访存时间?
- 错误解法:T_avg = 0.951 + 0.05(1+100) = 6.0ns;
- 正确解法:此公式只算“地址转换时间”,不包括取数据时间。若题目问“取一条指令的总时间”,需额外+T_memory(因指令本身在内存)。笔记在此处画闪电符号:“考试90%只考地址转换时间!看清楚问的是‘有效访问时间’还是‘取指令时间’”。
4.3 页面置换算法的“最优幻觉”:以为OPT真的可实现
笔记列出FIFO、LRU、OPT三种算法,但OPT旁打满感叹号:“OPT是理论下界!实际无法实现,因需预知未来访问页”。某次A同学用OPT解题得满分,但被导师追问:“你怎么知道下一次访问哪页?”——他才发现题干给了访问串“1,2,3,4,1,2,5,1,2,3,4,5”,OPT需对每个位置预测后续所有访问。
笔记给出OPT实操口诀:
- 当前页框满(如3页框),新页5要入,查页框内页1,2,3;
- 看1下次出现位置(索引4)、2下次(索引5)、3下次(索引10);
- 淘汰下次最远的页(3);
- 幻觉破除:若访问串无限长,OPT无法计算!考题给的必是有限串。
我们用笔记例题练:访问串1,2,3,4,1,2,5,1,2,3,4,5,3页框,OPT缺页次数?
- 初始空,1,2,3入→3次;
- 4入,淘汰1(1下次在4,2在5,3在10)→第4次;
- 1入,淘汰2(2下次在5,4在8,3在10)→第5次;
- ...最终10次。而FIFO是12次,LRU是11次——OPT确实最少,但只是“上帝视角”。
5. 文件系统与设备管理:从索引结构到虚拟设备的工程级理解
5.1 多重索引的“层级穿透计算”:别被“三次间接”吓住
笔记第六章画了索引节点结构图,重点标出:“直接索引:索引项直接存数据块号;一次间接:索引项存间接块地址,该块内存数据块号;二次间接:索引项存二次间接块地址,该块内存一次间接块地址”。我们曾被“三次间接”绕晕,直到笔记用树形图拆解:
i_node ├─ 直接索引[0..9] → 数据块 ├─ 一次间接 → 间接块 → [数据块号1, 数据块号2, ...] ├─ 二次间接 → 二次间接块 → [一次间接块1地址, 一次间接块2地址, ...] │ ↓ │ [数据块号...] └─ 三次间接 → 三次间接块 → [二次间接块1地址, ...] ↓ [一次间接块地址...] ↓ [数据块号...]计算最大文件大小时,笔记强调:“每层块大小固定(如1KB),每项占4字节,故每块存256个地址”。
- 直接:10块 × 1KB = 10KB;
- 一次间接:1块 × 256项 × 1KB = 256KB;
- 二次间接:1块 × 256项 ×(1块×256项×1KB)= 256×256KB = 64MB;
- 三次间接:1块 × 256项 × 64MB = 16GB。
总大小 ≈ 16GB(忽略索引块本身)。笔记在“三次间接”旁写:“考题若问‘支持最大文件’,必给块大小和地址项字节数!没给就无法算”。
5.2 设备管理的“缓冲技术本质”:不是加速I/O,是解耦生产者消费者
笔记第五章把缓冲技术讲成“生产者-消费者问题”:
- 单缓冲:一个缓冲区,CPU(生产者)写满→设备(消费者)读空→CPU等设备;设备读空→CPU写满→设备等CPU;
- 双缓冲:CPU写buf1时,设备读buf0;buf1满→CPU切buf0,设备切buf1;需同步机制防覆盖;
- 循环缓冲:多个缓冲区成环,CPU和设备各持一个指针,用计数器判空满。
笔记用工厂流水线比喻:“单缓冲像一条传送带,工人装完一箱,等快递员取走才装下一箱;双缓冲像两条传送带,工人装A箱时,快递员取B箱”。某次实验,A同学用单缓冲传大文件,CPU 90%时间在等设备,换成双缓冲后吞吐翻倍——这才是缓冲技术的工程价值:掩盖I/O延迟,提升CPU利用率,而非单纯“让I/O更快”。
5.3 虚拟设备技术的“假脱机”真相:不是虚拟化硬件,是时空复用
笔记写:“虚拟设备=Spooling(Simultaneous Peripheral Operations On-Line)”,但批注:“Spooling不是让一台打印机变多台,而是让多进程的打印请求排队,由一个守护进程(spooler)按序发给真实打印机”。我们曾误解为“虚拟打印机驱动”,实际是:
- 进程1发print("A") → spooler写入磁盘暂存区;
- 进程2发print("B") → spooler追加;
- spooler后台读暂存区→发给打印机;
- 进程获得“立即返回”假象,实则输出被时空平移。
笔记强调:“Spooling需要磁盘空间+spooler进程+输入/输出井(in/out spool)”。某次考题问“虚拟设备技术如何实现设备独立性”,标准答案是:“用户程序只与spooler交互,不直接操作硬件,故更换打印机型号只需改spooler,不改用户程序”。
6. 临考前的最后三遍:用笔记做“故障注入测试”的硬核技巧
6.1 第一遍:遮住答案,只看题干关键词做“算法选择决策”
不要一上来就计算。拿笔记第三章的调度算法对比表,盖住“算法”列,只看“题干关键词”列:
- 看到“按提交顺序处理” → 圈FCFS;
- 看到“服务时间最短者优先”且注明“非抢占” → 圈SJF;
- 看到“时间片q=4ms” → 圈RR;
- 看到“优先级数值越小优先级越高” → 圈优先级调度。
做完后对照笔记答案,错的立刻回溯:是题干理解偏差(如把“非抢占”看成“抢占”),还是算法条件记混(如SJF和SRTF区别)?我习惯用荧光笔在笔记对应位置画线,标上“此处易错”。
6.2 第二遍:用“错误答案反推法”检验概念肌肉记忆
故意代入常见错误答案,看能否自洽推翻。例如:
- 错误:银行家算法中,若Need[i] ≤ Available,就分配资源给i;
- 反推:笔记明确“必须找安全序列!即使Need[i] ≤ Available,若分配后找不到安全序列,也不能分配”。
- 操作:在笔记银行家算法步骤旁,用红笔写:“分配前必验安全!否则可能死锁”。
再如:错误:快表不命中时,访问时间为T_TLB + T_memory; - 反推:笔记公式是(1-h)*(T_TLB + T_memory),说明不命中时仍要访问TLB(1ns),再访内存(100ns),共101ns。若只写T_memory,漏了TLB访问。
这种训练逼你把概念嵌入因果链,而非孤立记忆。
6.3 第三遍:用“五分钟白板挑战”激活输出能力
关掉所有资料,拿白纸默画:
- 画三态模型,标出所有转换条件(如“执行→阻塞:因I/O请求”);
- 画页表查询流程图,标出TLB命中/不命中分支;
- 写银行家算法三步,每步旁注输入输出;
- 列文件索引结构,标出直接/间接索引能存多少数据块。
画完立刻对照笔记,错一处,就在错处打×,并用一句话写清原因(如“执行→就绪:只有抢占式调度才发生,FCFS不会”)。某次考前,A同学默画页表流程时,在“TLB不命中→查页表”分支漏了“更新TLB”的步骤,笔记此处有小字:“查页表后,若TLB有空位,必须把新(页号,块号)对装入TLB”。这个细节让他在考场上避开一个3分陷阱。
从那以后我每次考前梳理,都强制走一遍这三遍法:第一遍筛算法,第二遍堵漏洞,第三遍练输出。它不保证满分,但能确保你把“知道”变成“能用”,把“记得”变成“能证”。操作系统不是背出来的,是推演出来的——而这份手写笔记,就是推演的脚手架。希望帮到你。
本文还有配套的精品资源,点击获取