ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

操作系统期末冲刺:23个必考动作与11处易错陷阱精讲

操作系统期末冲刺:23个必考动作与11处易错陷阱精讲

简介:本资源是桂林电子科技大学《操作系统》课程期末复习专用手写笔记,面向计算机及相关专业本科生,聚焦核心考点梳理与应试提分。笔记内容覆盖操作系统基本概念、进程管理(三态模型、调度算法、同步与死锁)、存储管理(分区/分页/分段、页面置换算法)、文件管理(目录结构、物理组织、索引方式)及设备管理(缓冲、虚拟设备)等全模块重点,特别标注高频考点(如银行家算法、快表命中计算、多重索引地址转换)与避坑提示(如‘不考’‘偏轻’类说明),便于高效冲刺。资源为单个PDF文件,大小4.47MB,排版清晰、手写批注丰富,适合作为教材补充与考前速查资料。目前已有544人学习下载,内容源自真实课堂笔记,逻辑连贯、术语准确、例题穿插,助力系统回顾与难点突破。

1. 桂电操作系统期末复习手写笔记:一张覆盖6大核心模块、直击23个高频考点与11处易翻车陷阱的知识地图

这份《桂电操作系统期末复习手写笔记.pdf》不是零散知识点堆砌,而是一张高度凝练、考频精准、错点明确的“应试型知识地图”。它把操作系统这门课拆解为进程管理(15分)、存储管理(30分)、文件系统(15分)、设备管理(10分)、死锁与同步(25分)、处理器基础(5分)六大权重模块,其中存储管理占比最高、文件系统结构最细、死锁计算最易失分——这和多数高校期末命题规律高度吻合。笔记用“☆”标出必考题型(如银行家算法、页面置换、多重索引寻址),用“不考”“偏轻”“☆不考”等短语果断过滤低频内容(如线程细节、死锁检测算法),把有限复习时间锚定在真题常驻区。适合两类人:一是已学完教材但抓不住重点的中阶学习者,需要一张能快速定位“哪里该停、哪里该冲”的导航图;二是考前72小时冲刺者,需要一份能直接上手演算、对照自查、避开经典坑位的实战笔记。它不讲原理推导,不炫技术深度,只回答一个问题:这张卷子,你到底要会哪23个具体动作?

2. 进程管理与调度:三态模型、五种算法、四类时间指标的闭环计算链

2.1 进程状态转换:从用户态/核心态切入理解“为什么不能乱跳”

进程状态不是静态标签,而是由硬件中断机制+内核权限控制共同驱动的动态闭环。笔记开篇即强调“用户态只能运行用户程序,非特权指令”,这句话背后是CPU的特权级(Ring 0–3)设计:用户态(Ring 3)无法直接执行in/out指令访问I/O端口,也无法修改页表基址寄存器(CR3),所有越权操作都会触发保护异常(#GP),由内核接管。这就是“用户态→核心态”必须通过系统调用、中断或异常的底层原因。

三态模型(就绪、运行、阻塞)的转换箭头,本质是内核对资源可用性的实时响应:

  • 就绪→运行:调度器选中,加载PC/SP寄存器,切换到用户栈
  • 运行→就绪:时间片用尽,触发时钟中断,保存现场入就绪队列
  • 运行→阻塞:发起read()等阻塞系统调用,内核将PCB移入等待队列,调度新进程

提示:考试中若出现“进程从运行态直接变为新建态”,一定是错的——新建态(New)只在fork()创建子进程时出现,且仅持续极短时间(分配PCB、初始化字段),之后立即进入就绪态。这是状态机建模的基本约束。

2.2 调度算法:五种算法的计算逻辑、适用场景与得分关键点

调度算法是计算题主力,笔记明确列出5种必考类型,并给出统一解题模板:先画Gantt图 → 标注每个进程的到达时间(AT)、服务时间(BT)、完成时间(CT)、周转时间(T = CT−AT)、带权周转时间(W = T/BT)→ 求平均值。每种算法的核心判据如下:

算法类型选择依据关键限制典型失分点
先来先服务(FCFS)到达时间最早非抢占式忽略“到达时间”排序,误按提交顺序排
短作业优先(SJF)剩余服务时间最短非抢占式混淆“服务时间”与“剩余时间”,未重排序列
最短剩余时间优先(SRTF)当前剩余服务时间最短抢占式时间片切分错误,未在每个时间点重新比较剩余时间
优先级调度(非抢占)优先级数值最小(或最大,需看题设)非抢占式未声明优先级定义(高数=高优 or 低数=高优)
轮转调度(RR)时间片轮转,超时即切换抢占式时间片边界计算错误(如q=4,t=0–3为第1片,t=4–7为第2片)

以SRTF为例,某题给定进程P1(AT=0,BT=8), P2(AT=1,BT=4), P3(AT=2,BT=9):

  • t=0:P1运行,剩余7
  • t=1:P2到达,剩余4 < 7 → 抢占P1,P2运行
  • t=5:P2完成,此时P1剩余7, P3剩余9 → P1运行
  • t=12:P1完成,P3运行至t=21

最终CT=[12,5,21], T=[12,4,19], 平均T=11.67。所有算法都必须严格按时间轴推进,不可跳跃假设。

2.3 周转时间相关指标:为什么“带权周转时间”才是公平性标尺?

单纯看周转时间(T)会掩盖长作业对短作业的挤压。例如FCFS下,P1(BT=1), P2(BT=100),若P1先到,则T1=1, T2=101,平均T=51;但若P2先到,T1=101, T2=100,平均T=100.5——平均值失真。而带权周转时间W=T/BT消除了服务时间量纲:

  • 前者W1=1/1=1, W2=101/100=1.01, 平均W≈1.005
  • 后者W1=101/1=101, W2=100/100=1, 平均W=51

W值越接近1,说明调度越公平。考试中若要求“评价算法优劣”,必须同时给出平均T和平均W,缺一不可。笔记在此处用红笔标注:“只算T不写W,扣1分”。

2.4 易错点:进程管理中4个被反复忽略的底层细节

  • 易漏点①:用户态/核心态切换必然伴随栈切换
    为什么?因为用户栈无权访问内核数据结构。当系统调用发生时,CPU自动将SS:ESP(用户栈指针)压入内核栈,并加载内核栈段寄存器(SS0)和栈顶(ESP0)。若题目问“中断处理时使用哪个栈”,答“内核栈”而非“当前进程栈”。

  • 易漏点②:阻塞态进程无法被调度器选中,但可被信号唤醒
    阻塞态进程不在就绪队列中,调度器遍历就绪队列时根本看不到它。但当I/O完成,设备驱动会调用wake_up_process()将其PCB移入就绪队列——这个动作独立于调度周期。考试若问“阻塞进程何时能再次运行”,答“被唤醒后进入就绪态,等待下次调度”,而非“时间片到时”。

  • 易漏点③:进程控制块(PCB)是进程存在的唯一标志
    创建进程=分配PCB+初始化字段(PID、状态、寄存器上下文、内存映射等);撤销进程=回收PCB+释放资源。没有PCB,就没有进程。若题目说“父进程退出后子进程继续运行”,必须指出“子进程PCB仍存在,被init进程收养”。

  • 易漏点④:系统调用号是内核API的索引,不是功能名
    sys_read、sys_write等函数名是内核源码标识,用户层通过int 0x80(x86)或syscall指令+系统调用号(如__NR_read=0)触发。考试若让写“读文件的系统调用”,答“read()库函数,最终触发系统调用号0”,而非“调用sys_read函数”。

3. 死锁与同步:信号量建模、银行家算法、哲学家进餐的三层抽象

3.1 信号量机制:P/V操作如何精确控制临界资源访问

信号量(Semaphore)是解决进程同步的基石工具,笔记强调其原子性、整型变量、阻塞队列三大特性。sem_wait()(P操作)伪代码为:

void sem_wait(sem_t *s) { while (s->value <= 0) { // 循环检查,非if! add_current_to_queue(s); // 加入等待队列 block(); // 主动放弃CPU } s->value--; // 原子减1 }

关键点在于:P操作必须循环检查(busy-waiting)而非单次判断,否则在多核环境下,两个进程可能同时读到value=1,均通过检查,导致value被减两次变为-1,破坏互斥性。

V操作则相反:

void sem_post(sem_t *s) { s->value++; // 原子加1 if (s->value <= 0) { // 有进程在等 wake_up_one(s->queue); // 唤醒一个 } }

注意:考试中若出现“信号量初值为1,表示1个资源”,这是错的——初值为1表示最多允许1个进程进入临界区,即实现互斥,与资源数量无关。资源数由后续P/V次数决定。

3.2 银行家算法:Need矩阵、Work向量、安全序列的手算全流程

银行家算法是死锁避免的核心,笔记用“苹果过桥”类比:桥是系统资源,苹果是进程,每个苹果需声明过桥所需木板数(Max),已拿木板数(Allocation),剩余需求数(Need = Max − Allocation)。算法步骤如下:

  1. 初始化Work = Available(当前空闲资源向量)
  2. 找进程Pi满足:Need[i] ≤ Work(Pi能被满足)
  3. 假设Pi完成:Work = Work + Allocation[i](归还资源)
  4. 重复2–3,直到所有进程被标记,或找不到满足条件的Pi
  5. 若全部标记,则存在安全序列;否则系统不安全

例:系统有3类资源(A,B,C),Available=[3,3,2],4个进程:

进程MaxAllocationNeed
P0[7,5,3][0,1,0][7,4,3]
P1[3,2,2][2,0,0][1,2,2]
P2[9,0,2][3,0,2][6,0,0]
P3[2,2,2][2,1,1][0,1,1]
  • Work=[3,3,2],查P1:Need[1]=[1,2,2]≤Work → Work=[3+2,3+0,2+0]=[5,3,2]
  • 查P3:Need[3]=[0,1,1]≤Work → Work=[5+2,3+1,2+1]=[7,4,3]
  • 查P0:Need[0]=[7,4,3]≤Work → Work=[7+0,4+1,3+0]=[7,5,3]
  • 查P2:Need[2]=[6,0,0]≤Work → Work=[7+3,5+0,3+2]=[10,5,5]
  • 安全序列:P1→P3→P0→P2

失分重灾区:忘记更新Work向量、Need计算错误(Max−Allocation搞反)、未验证所有进程是否被纳入序列。

3.3 死锁四必要条件:如何用“循环等待”反推资源分配图

死锁发生的四个必要条件(互斥、占有并等待、非抢占、循环等待)中,“循环等待”是唯一可观测、可画图验证的条件。笔记要求必须掌握资源分配图(Resource Allocation Graph)绘制:

  • 矩形框表示资源类(如R1有3个实例,标为●●●)
  • 圆圈表示进程(P1,P2...)
  • 有向边P→R:进程申请资源(请求边)
  • 有向边R→P:资源已分配给进程(分配边)

若图中存在有向环,则系统可能发生死锁(注意:有环≠一定死锁,需结合资源实例数判断)。例如:P1→R1, R1→P2, P2→R2, R2→P1,构成环P1→R1→P2→R2→P1,且R1/R2各只有1实例,则必然死锁。

提示:考试若给资源分配图问“是否死锁”,第一步标出所有资源实例数,第二步找环,第三步验证环中每个资源类的实例是否被完全占用。三步缺一不可。

3.4 易错点:同步与死锁中3个被严重低估的建模陷阱

  • 易漏点①:信号量初值决定资源上限,而非进程数
    若有5台打印机,应设sem_init(&printer_sem, 0, 5),初值为5。若误设为1,则最多1个进程能用打印机,违背资源池本意。考试中“n个同类资源”必对应信号量初值n。

  • 易漏点②:银行家算法中“Available”是当前空闲量,不是总量
    Total = Allocation + Available + Need(对所有进程求和)。若题目只给Allocation和Need,必须先算Total,再求Available = Total − ΣAllocation。直接抄题干Available值是常见错误。

  • 易漏点③:哲学家进餐问题中,“拿左叉再拿右叉”是死锁根源,但“按编号顺序拿叉”只是充分条件
    编号法(奇数号哲学家先左后右,偶数号先右后左)打破循环等待,但若所有哲学家同时拿编号小的叉,仍可能因竞争失败而阻塞。真正可靠的是引入服务员(mutex)集中授权。考试若问“如何避免死锁”,答“破坏循环等待条件:规定拿叉顺序”即可,但需知其局限性。

4. 存储管理:分区/分页/分段的地址转换、快表加速、页面置换的硬核计算

4.1 动态分区分配:五种算法的碎片化本质与首次适应的工程取舍

动态分区将内存划分为大小不等的连续块,分配算法直接影响外部碎片。笔记对比五种策略:

算法选择逻辑碎片特点实际应用
首次适应(First Fit)从低地址起找第一个够大的空闲区中等碎片,查找快Linux早期buddy系统变种
最佳适应(Best Fit)找大小最接近需求的空闲区碎片最多(产生大量微小块)理论研究,少实用
最坏适应(Worst Fit)找最大的空闲区大块减少,中等碎片减少后续大作业失败率
邻近适应(Next Fit)从上次查找位置继续搜索查找开销略降,碎片类似FF某些嵌入式系统
快速适应(Quick Fit)维护多个空闲链表(按大小分类)查找O(1),但合并复杂高性能服务器

关键洞察:首次适应虽产生中等碎片,但因其查找路径最短、实现最简、缓存友好,成为教学与工业首选。考试中若问“为何常用首次适应”,答“平衡碎片率与查找效率,且易于实现”。

4.2 分页地址转换:逻辑地址拆分、页表查询、快表(TLB)命中率的量化影响

分页将逻辑地址分为页号(Page Number)+ 页内偏移(Page Offset)。假设32位地址、4KB页,则页内偏移占12位(2^12=4096),页号占20位(2^20=1M页)。地址转换流程:

  1. CPU给出逻辑地址,MMU提取页号
  2. 查页表:页号作索引,得物理页框号(Frame Number)
  3. 物理地址 = Frame Number × Page Size + Offset

快表(TLB)是页表的高速缓存,其命中率H直接影响有效访存时间(EMAT):

EMAT = H × (TLB_access_time + Memory_access_time) + (1−H) × (TLB_access_time + 2×Memory_access_time)

若TLB访问10ns,内存访问100ns,H=0.95:

  • EMAT = 0.95×(10+100) + 0.05×(10+200) = 104.5 + 10.5 = 115ns
  • 若无TLB(H=0),EMAT=200ns →TLB使访存提速约74%

提示:考试中若给TLB命中率、访问时间,必考EMAT计算。公式中“2×内存访问”是因为:先查页表(1次内存),再访数据(1次内存)。

4.3 页面置换算法:FIFO/LRU/Clock的实现差异与Belady现象

当缺页中断发生且无空闲页框时,需置换一页。三种主流算法:

  • FIFO:淘汰最早装入的页。简单但存在Belady异常(增加页框数,缺页率反而上升)。例:访问序列3,2,1,0,3,2,4,用3页框缺页9次,用4页框缺页10次。

  • LRU(最近最少使用):淘汰最久未被访问的页。理想但硬件难实现,通常用栈模拟(每次访问将页移到栈顶,栈底即LRU页)或计数器(为每页设访问时间戳)。

  • Clock(时钟算法):FIFO的改进版,为每页设引用位(R bit)。指针循环扫描,遇R=0则置换,遇R=1则清R并跳过。R位由硬件在每次访问时置1,OS定时清零。

例:页框数3,访问序列7,0,1,2,0,3,0,4,初始R=0:

  • 加7,0,1 → 页框[7,0,1],R=[1,1,1]
  • 访2:7的R=1→清0,0的R=1→清0,1的R=1→清0,指针回7,7的R=0→置换7 → [2,0,1]
  • 后续同理...

考试重点:Clock算法必须写出R位变化过程,只写置换结果不得分。

4.4 易错点:存储管理中4个被忽视的硬件协同细节

  • 易漏点①:页内偏移位数由页大小决定,与虚拟地址长度无关
    4KB页 → 偏移12位;16MB页 → 偏移24位。若题干说“32位地址、页大小4KB”,偏移固定12位,页号必为20位。混淆会导致地址拆分错误。

  • 易漏点②:快表(TLB)是关联存储器,按内容寻址,非按地址寻址
    TLB中存(页号,页框号)对,CPU送页号,TLB并行匹配所有项。若答“TLB像数组一样用页号当索引”,是根本性错误。

  • 易漏点③:二级页表中,页目录项(PDE)存页表基址,页表项(PTE)存页框号
    逻辑地址拆为:页目录索引 + 页表索引 + 页内偏移。先查页目录得页表物理地址,再查页表得页框号。考试若问“二级页表减少内存浪费的原理”,答“只分配实际使用的页表,空页表不占内存”。

  • 易漏点④:抖动(Thrashing)的根因是进程工作集大于分配页框数,非页面置换算法本身
    即使LRU最优,若给每个进程只分配2页,而其工作集需5页,仍会频繁缺页。解决抖动需增加分配页框数或挂起部分进程,而非换算法。

5. 文件系统:多重索引结构、磁盘空间管理、目录实现的物理与逻辑分离

5.1 文件物理结构:顺序/链接/索引的I/O性能与可靠性权衡

文件在磁盘上的组织方式直接影响读写效率与容错能力:

  • 顺序结构:文件块在磁盘上连续存放。优点:顺序读写极快(一次寻道+批量传输);缺点:文件增长需预留空间,删除后产生大块外部碎片。

  • 链接结构:每块含指向下一块的指针。优点:无外部碎片,文件可动态增长;缺点:随机访问需O(n)遍历,指针占存储空间,单点损坏导致链断裂。

  • 索引结构:索引块存所有数据块地址。优点:支持随机访问(O(1)寻址),无外部碎片;缺点:小文件浪费索引块空间。

笔记强调:现代文件系统(如ext4、NTFS)均采用混合索引——直接块(12个)存小文件;一级间接块(存256个块地址)支持中文件;二级/三级间接块支持超大文件。

5.2 多重索引寻址:直接/间接索引的容量计算与寻址路径

以UNIX System V为例,假设盘块大小1KB,盘块号占4字节:

  • 直接索引:12个地址 → 支持12×1KB = 12KB
  • 一级间接:1块存256个地址(1024/4=256) → 256×1KB = 256KB
  • 二级间接:1块存256个一级间接块地址 → 256×256×1KB = 64MB
  • 三级间接:1块存256个二级间接块地址 → 256×64MB = 16GB

总容量 = 12KB + 256KB + 64MB + 16GB ≈ 16GB

寻址路径示例(读取第10000字节):

  • 字节10000 ÷ 1024 = 9.76 → 第10块(块号9,0起始)
  • 块号9 < 12 → 直接索引第9项 → 得物理块号 → 读取

若读第1000000字节(≈976KB):

  • 块号976 > 12,且976 < 12+256=268 → 属一级间接范围
  • 一级间接块地址 = 直接索引第12项 → 读该块
  • 块内偏移 = (976−12) × 4 = 3856 → 取第3856–3859字节得物理块号

提示:考试必考“某字节对应第几块”及“该块地址存于何处”,需熟练进行“字节→块号→索引层级→地址位置”三级换算。

5.3 文件空间管理:位示图、空闲链表、成组链接法的适用场景

  • 位示图(Bitmap):用1位表示1块是否空闲。优点:分配/回收O(1)定位,适合大磁盘;缺点:图本身占空间(1TB磁盘需125MB位图)。

  • 空闲链表:所有空闲块连成链表,头指针存超级块。优点:无额外空间开销;缺点:分配/回收需遍历,随机性差。

  • 成组链接法(UNIX):将空闲块分组(如100块/组),每组首块存下一组地址。超级块存当前组首块地址。优点:兼顾空间效率与速度,UNIX实证可靠。

笔记指出:成组链接法是考试重点,因其结合了链表与索引思想。分配时取当前组首块,若该组只剩1块,则读取其存的下一组地址;回收时若当前组未满,插入;若已满,新建一组并更新链接。

5.4 易错点:文件系统中3个被轻视的元数据一致性风险

  • 易漏点①:目录项(Directory Entry)不存文件内容,只存文件名与i-node号
    i-node才是文件元数据(大小、权限、时间戳、数据块地址)的载体。删除文件=删除目录项+i-node引用计数减1;仅当引用计数为0才真正释放数据块。考试若问“rm命令做了什么”,答“解除目录项与i-node的链接”,而非“删除文件内容”。

  • 易漏点②:软链接与硬链接的本质区别在于i-node引用方式
    硬链接:多个目录项指向同一i-node,共享数据块;软链接:新建文件,内容为路径字符串,有自己的i-node。故硬链接不能跨文件系统(i-node号全局唯一),软链接可以。

  • 易漏点③:文件系统挂载(mount)的本质是将设备的根目录接入主目录树
    挂载点目录(如/mnt/usb)的内容被隐藏,访问时重定向到被挂载设备的根。卸载(umount)前必须确保无进程在该目录下工作,否则“device busy”错误。考试若问“为什么挂载后原目录内容看不见”,答“VFS层将路径解析重定向至新设备的根i-node”。

6. 设备管理与复习清单:缓冲技术、虚拟设备、设备独立性的落地检查表

6.1 缓冲技术:单缓冲/双缓冲/循环缓冲的吞吐量瓶颈分析

I/O速度远低于CPU,缓冲是缓解鸿沟的核心手段:

  • 单缓冲:CPU向缓冲区写,设备从缓冲区读。CPU必须等设备读完才能写下一单元 →CPU与设备串行工作,吞吐量 = min(CPU处理速率, 设备传输速率)。

  • 双缓冲:设缓冲区A、B。CPU写A时,设备读B;完成后交换角色。CPU与设备可部分重叠,但仍有等待:CPU写完A需等设备读完B才能写B。

  • 循环缓冲(多缓冲):N个缓冲区组成环。CPU总可写空闲缓冲区,设备总可读满缓冲区。当N足够大,CPU与设备完全并行,吞吐量趋近两者较大者。

笔记用数据说话:设CPU处理1单元1ms,设备传输1单元2ms,单缓冲吞吐量=0.5单元/ms;双缓冲下,CPU写A(1ms)+设备读B(2ms)=3ms处理2单元 → 0.67单元/ms;循环缓冲N≥3时,可稳定在1单元/ms(CPU瓶颈)。

注意:考试中若问“双缓冲能否消除等待”,答“不能完全消除,仅减少等待时间”,因CPU与设备速率不匹配时,慢方总会拖累快方。

6.2 虚拟设备技术:SPOOLing如何将独占设备变为共享资源

SPOOLing(Simultaneous Peripheral Operations On-Line)是虚拟设备的典型实现,以打印机为例:

  • 输入井:磁盘上模拟输入设备的区域
  • 输出井:磁盘上模拟输出设备的区域
  • 输入进程:将用户作业从输入设备读入输入井
  • 输出进程:将输出井中作业送打印机

用户进程不再直接操作打印机,而是向输出井写数据(快),输出进程后台慢慢打印(慢)。本质是用磁盘空间换取设备并发性,将独占设备(打印机)虚拟为多个逻辑设备。

关键点:SPOOLing要求输入/输出井足够大,且输入/输出进程与用户进程异步协作。若输出井满,用户进程需阻塞,此时退化为假脱机。

6.3 设备独立性:逻辑设备名→物理设备号→驱动程序的三级映射

设备独立性指应用程序用逻辑名(如/dev/lp0)访问设备,无需关心物理细节。实现依赖三层映射:

  1. 逻辑设备表(LUT):进程私有,存(逻辑名, 物理设备号)对
  2. 系统设备表(SDT):全局,存(物理设备号, 控制器号, 驱动程序入口)
  3. 控制器表:存控制器状态、通道信息

当进程打开/dev/lp0:

  • 查LUT得物理设备号D1
  • 查SDT得D1对应控制器C1及驱动print_driver
  • 调用print_driver.open()初始化C1

好处:更换打印机型号只需更新SDT中D1对应的驱动入口,应用代码零修改。

6.4 复习清单:一份可打印、可勾选、可速查的考前72小时行动指南

别再泛泛而读。这份清单按真题出现频率和计算复杂度排序,每项对应笔记中明确标注的位置(如P12、P23),打印后逐条打钩:

序号复习任务检查方式预估耗时笔记页码
1默写三态模型转换图(含触发条件:时间片/IO/中断)闭眼画图,标注所有箭头条件8minP5
2手算SRTF调度:给定5进程AT/BT,画Gantt图,求平均T和W对照答案,误差≤0.115minP8
3银行家算法全流程:给Need/Allocation/Available,找安全序列写出每步Work向量变化20minP15
4分页地址转换:32位地址/4KB页,求页号/偏移,画两级页表寻址路径标出每级访问的物理地址12minP19
5Clock页面置换:给访问序列和R位初值,模拟3轮指针扫描标出每次R位变化和置换页18minP22
6多重索引寻址:计算1000000字节所在块号,指出该地址存于直接/间接哪一层写出“字节→块号→索引层级→地址位置”三步15minP27
7SPOOLing结构图:画输入井/输出井/输入进程/输出进程四要素及数据流箭头方向必须正确(输入进程→输入井→用户进程)10minP31
8设备独立性三级映射:默写LUT/SDT/控制器表各自存什么举例说明open()调用时的数据流向10minP32

血泪经验:我曾因没练熟第3项(银行家),考场上卡在Work向量更新,浪费22分钟。从那以后,我每次模拟考前必做3遍银行家手算,强制自己写出每一步Work值,哪怕超时也要写完。现在看到Need矩阵,手指会自动开始加法——肌肉记忆比理解更可靠。

最后检查三件事:

  • 所有计算题是否保留小数点后两位?(考试要求)
  • 所有“不考”标记的内容是否彻底划掉?(如线程、死锁检测)
  • 所有“☆”必考点是否至少演算过2次?(如页面置换、多重索引)

希望帮到你。

本文还有配套的精品资源,点击获取

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进