切换:← → / 空格
复习演示
操作系统 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-Bufferempty/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 会带来额外访问成本

分配方式

Contiguousexternal fragmentation:空洞不连续
Paging避免外部碎片;有页表开销
Swapping(现代多为 page-in/page-out)整进程 swapping 成本高
Chapter 10 · Virtual Memory
关键机制:demand pagingpage replacement,以及理解 thrashing

Page fault(4步)

缺页 → trap(page fault)
找 frame / 触发置换
磁盘 I/O 载入;更新页表/TLB
重启指令

Replacement & Thrashing

FIFO / OPT / LRUFIFO 可能有 Belady anomaly;LRU 常用近似
Thrashingworking set 放不进 frames → fault 爆炸
TLB Reach = (TLB Size) × (Page Size)扩大覆盖:更大/多种页大小
总结
并发让共享状态变危险 → 同步保证正确性 → 不当同步会引出死锁 → paging/virtual memory 把容量与性能问题工程化解决。

高频考点

critical section 与 race condition
mutex / semaphore / monitor
死锁四条件 + 四策略
paging + TLB + replacement + thrashing

iPhone浏览小技巧

内容放不下时可上下滚动(每页独立滚动)
底部按钮避开安全区(刘海/手势条)
蓝牙键盘可用 ← → / 空格翻页