简介:本资源是桂林电子科技大学《操作系统》课程期末复习专用手写笔记,面向计算机及相关专业本科生,聚焦核心考点梳理与应试提分。笔记内容覆盖操作系统基本概念、进程管理(三态模型、调度算法、同步与死锁)、存储管理(分区/分页/分段、页面置换算法)、文件管理(目录结构、物理组织、索引方式)及设备管理(缓冲、虚拟设备)等全模块重点,特别标注高频考点(如银行家算法、快表命中计算、多重索引地址转换)与避坑提示(如‘不考’‘偏轻’类说明),便于高效冲刺。资源为单个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)。算法步骤如下:
- 初始化Work = Available(当前空闲资源向量)
- 找进程Pi满足:Need[i] ≤ Work(Pi能被满足)
- 假设Pi完成:Work = Work + Allocation[i](归还资源)
- 重复2–3,直到所有进程被标记,或找不到满足条件的Pi
- 若全部标记,则存在安全序列;否则系统不安全
例:系统有3类资源(A,B,C),Available=[3,3,2],4个进程:
| 进程 | Max | Allocation | Need |
|---|---|---|---|
| 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页)。地址转换流程:
- CPU给出逻辑地址,MMU提取页号
- 查页表:页号作索引,得物理页框号(Frame Number)
- 物理地址 = 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)访问设备,无需关心物理细节。实现依赖三层映射:
- 逻辑设备表(LUT):进程私有,存(逻辑名, 物理设备号)对
- 系统设备表(SDT):全局,存(物理设备号, 控制器号, 驱动程序入口)
- 控制器表:存控制器状态、通道信息
当进程打开/dev/lp0:
- 查LUT得物理设备号D1
- 查SDT得D1对应控制器C1及驱动
print_driver - 调用
print_driver.open()初始化C1
好处:更换打印机型号只需更新SDT中D1对应的驱动入口,应用代码零修改。
6.4 复习清单:一份可打印、可勾选、可速查的考前72小时行动指南
别再泛泛而读。这份清单按真题出现频率和计算复杂度排序,每项对应笔记中明确标注的位置(如P12、P23),打印后逐条打钩:
| 序号 | 复习任务 | 检查方式 | 预估耗时 | 笔记页码 |
|---|---|---|---|---|
| 1 | 默写三态模型转换图(含触发条件:时间片/IO/中断) | 闭眼画图,标注所有箭头条件 | 8min | P5 |
| 2 | 手算SRTF调度:给定5进程AT/BT,画Gantt图,求平均T和W | 对照答案,误差≤0.1 | 15min | P8 |
| 3 | 银行家算法全流程:给Need/Allocation/Available,找安全序列 | 写出每步Work向量变化 | 20min | P15 |
| 4 | 分页地址转换:32位地址/4KB页,求页号/偏移,画两级页表寻址路径 | 标出每级访问的物理地址 | 12min | P19 |
| 5 | Clock页面置换:给访问序列和R位初值,模拟3轮指针扫描 | 标出每次R位变化和置换页 | 18min | P22 |
| 6 | 多重索引寻址:计算1000000字节所在块号,指出该地址存于直接/间接哪一层 | 写出“字节→块号→索引层级→地址位置”三步 | 15min | P27 |
| 7 | SPOOLing结构图:画输入井/输出井/输入进程/输出进程四要素及数据流 | 箭头方向必须正确(输入进程→输入井→用户进程) | 10min | P31 |
| 8 | 设备独立性三级映射:默写LUT/SDT/控制器表各自存什么 | 举例说明open()调用时的数据流向 | 10min | P32 |
血泪经验:我曾因没练熟第3项(银行家),考场上卡在Work向量更新,浪费22分钟。从那以后,我每次模拟考前必做3遍银行家手算,强制自己写出每一步Work值,哪怕超时也要写完。现在看到Need矩阵,手指会自动开始加法——肌肉记忆比理解更可靠。
最后检查三件事:
- 所有计算题是否保留小数点后两位?(考试要求)
- 所有“不考”标记的内容是否彻底划掉?(如线程、死锁检测)
- 所有“☆”必考点是否至少演算过2次?(如页面置换、多重索引)
希望帮到你。
本文还有配套的精品资源,点击获取