切换:← → / 空格
复习演示
操作系统
Ch6–Ch10
同步 × 死锁 × 内存
用
PPT轮播
把关键概念“压缩到脑内地图”:
Ch6
同步工具、
Ch7
经典同步问题、
Ch8
死锁、
Ch9
主存、
Ch10
虚拟内存。
说明:图标统一用 Font Awesome(无 emoji),并针对 iPhone 做了可滚动与安全区适配。
Chapter 06 · Synchronization Tools
核心问题:并发访问共享数据会产生
race condition
。解决思路:把修改共享状态的代码段定义为
critical section
,并确保一次只允许一个执行流进入。
关键工具箱
Mutex
:最直接的互斥进入/退出
适合保护临界区;注意持锁时间与公平性
Semaphore
:二元/计数,控制资源数量
常见于 bounded-buffer、资源池等
Monitor
+ 条件变量:更高层封装
把互斥与条件等待组合起来,减少误用
CAS / Atomic
:硬件原子指令支持
在低到中等竞争下常更快;极高竞争未必占优
Liveness & 易错点
死锁 vs 饥饿:互卡 vs 一直轮不到
都是活性问题,但成因与对策不同
Priority inversion
:低优先级持锁,高优先级被“卡住”
常用对策:priority inheritance
Chapter 07 · Synchronization Examples
三大经典题是“同步机制压力测试”:你不需要背代码,但要能说清
共享状态
、
互斥点
、以及如何避免
死锁/饥饿
。
三题速记
Bounded-Buffer
empty/full + mutex(生产者/消费者共享缓冲区)
Readers–Writers
关注公平性:避免 writer starvation
Dining Philosophers
重点在打破 circular wait(限制并发或固定拿锁顺序)
其他思路(观念题)
Transactional Memory:把共享读写当“事务”
commit 成功就生效,失败则 rollback
OpenMP:
pragma omp critical
把代码块当成临界区,按原子方式执行
函数式:不可变数据降低 data race
从“避免共享可变状态”来解决并发复杂度
Chapter 08 · Deadlocks
判断死锁最稳的方法:记住
四个必要条件
。只要能破坏其中任意一个,就能从机制上避免死锁。
四条件(必背)
Mutual Exclusion
资源不可共享
Hold and Wait
拿着一个还要再等
No Preemption
资源不可强抢
Circular Wait
等待形成环
四种处理策略
Ignore(鸵鸟策略)
很多系统默认选择
Prevention(预防)
让四条件无法同时成立
Avoidance(避免)
Banker:保持 safe state
Detection + Recovery
允许发生,事后检测并恢复
Chapter 09 · Main Memory
主线:
地址翻译
与
内存分配
。理解碎片问题与 paging/TLB 的取舍。
地址翻译
MMU
负责翻译
paging:frame_number × page_size + offset
TLB:把常用页表项缓存起来
miss 会带来额外访问成本
分配方式
Contiguous
external fragmentation:空洞不连续
Paging
避免外部碎片;有页表开销
Swapping(现代多为 page-in/page-out)
整进程 swapping 成本高
Chapter 10 · Virtual Memory
关键机制:
demand paging
、
page replacement
,以及理解
thrashing
。
Page fault(4步)
缺页 → trap(page fault)
找 frame / 触发置换
磁盘 I/O 载入;更新页表/TLB
重启指令
Replacement & Thrashing
FIFO / OPT / LRU
FIFO 可能有 Belady anomaly;LRU 常用近似
Thrashing
working set 放不进 frames → fault 爆炸
TLB Reach = (TLB Size) × (Page Size)
扩大覆盖:更大/多种页大小
总结
并发让共享状态变危险 → 同步保证正确性 → 不当同步会引出死锁 → paging/virtual memory 把容量与性能问题工程化解决。
高频考点
critical section 与 race condition
mutex / semaphore / monitor
死锁四条件 + 四策略
paging + TLB + replacement + thrashing
iPhone浏览小技巧
内容放不下时可上下滚动(每页独立滚动)
底部按钮避开安全区(刘海/手势条)
蓝牙键盘可用 ← → / 空格翻页