🐧 内核并发控制 · 锁机制
深度解析 30 章
⭐ 风格 · 专业内核
01
并发与竞态
SMP、中断、抢占 · 临界区与竞态条件 · 内核并发控制层次与原则
02
原子操作
整型/位原子操作 · 原子变量API · 内存屏障 · 驱动实战
03
自旋锁 (Spinlock)
原理与适用 · spin_lock/spin_unlock · 中断变体 · 死锁注意
04
信号量 (Semaphore)
计数特性 · down/up · 与自旋锁对比 · 阻塞上下文应用
05
互斥锁 (Mutex)
设计哲学 · mutex_lock/unlock · 与信号量区别 · 死锁检测
06
读写锁 (RWLock)
自旋读写锁 · 信号量读写锁 · 性能权衡
07
RCU 机制
无锁读取 · rcu_read_lock/assign · 宽限期 · 链表实战
08
完成量 (Completion)
一次性同步 · wait_for_completion/complete · 内核线程同步
09
顺序锁 (Seqlock)
写优先 · write_seqlock/read_seqbegin · 时间戳读取
10
Per-CPU 变量
无锁访问 · 静态/动态定义 · 统计计数实战
11
互斥机制对比与选型
锁对比表格 · 场景选锁 · 锁嵌套 · lockdep工具
12
中断上下文并发控制
中断锁规则 · Softirq/Tasklet · 中断屏蔽与自旋锁
13
内核抢占与并发
抢占原理 · preempt_disable/enable · 锁交互
14
SMP 系统锁优化
MESI协议 · NUMA亲和性 · 读写锁性能 · RCU优势
15
死锁预防与检测
四个必要条件 · 锁顺序/分级 · lockdep · 经典案例
16
内核内存屏障
编译器屏障 · CPU屏障(mb/rmb/wmb) · DMA · 驱动实战
17
等待队列 (Wait Queue)
阻塞机制 · wait_event/wake_up · 事件驱动应用
18
内核线程与并发
kthread_create/stop · 锁使用 · 与用户进程同步
19
文件系统并发控制
inode锁/dentry锁 · 事务日志 · VFS · ext4实例
20
网络子系统并发控制
协议栈锁层次 · socket锁 · NAPI并发
21
设备驱动并发控制
字符设备并发 · 中断/进程共享数据 · DMA同步
22
内核并发调试技术
printk/动态调试 · ftrace · kprobe · crash分析
23
RT-Preempt 锁机制
spinlock→rt_mutex · 优先级继承 · 延迟优化
24
用户态与内核态锁交互
futex原理 · 用户/内核锁协作 · 异步IO并发
25
内核锁性能分析
锁竞争瓶颈 · perf工具 · 粒度优化 · 无锁数据结构
26
原子操作与内存排序深入
ARM/x86内存模型 · Load-Acquire/Store-Release · C11原子 · 自旋锁底层
27
同步机制综合案例
多核网卡驱动 · 块设备IO · 内存管理 · 进程调度并发
28
内核锁机制演进
BKL消亡 · RCU演进 · 调试基础设施 · 未来并发模型
29
内核并发编程最佳实践
命名规范 · Sparse/Coccinelle · 代码审查 · 社区约定
30
课程总结与实战考核
知识体系回顾 · 经典面试题 · 并发安全字符设备 · 学习路径