首页
›
Linux内核与驱动
›
108-xv6内核
›
《xv6内核spinlock多核环境竞争条件调试》
VIP10
本课程属于:108-xv6内核
Linux内核与驱动 · 共 10 门相关课程,组合学习更完整。
查看所属VIP全部课程 →
← 返回所属目录
咨询 / 购买
xv6内核spinlock多核环境竞争条件调试
共计 30 章节
点击此处阅读海量试读课程:100+行业、1000+细分领域
01
课程导论
为什么需要spinlock?多核竞争…
课程导论
spinlock
02
xv6内核架构概览
进程调度 · 中断处理与并发基础
xv6
内核架构概览
03
spinlock数据结构
struct spinlock的字段… · name · cpu等)
spinlock
数据结构
04
acquire函数实现
关中断 · 自旋等待 · 内存屏障(__sync_synchr…
acquire
函数实现
05
release函数实现
内存屏障 · 解锁 · 恢复中断状态
release
函数实现
06
push_off与pop_off
中断嵌套计数与恢复机制
push
off
07
临界区与原子性
为什么spinlock能保证互斥
临界区
原子性
08
多核环境下的缓存一致性
MESI协议与spinlock性能
多核环境下的缓存…
MESI
09
死锁场景1
自旋锁重入(同一CPU再次acqui…
死锁场景1
CPU
10
死锁场景2
锁顺序不一致(ABBA死锁)
死锁场景2
ABBA
11
死锁场景3
中断处理程序与普通代码争夺锁
死锁场景3
断处理程序
12
调试工具1
panic与backtrace定位死…
调试工具1
panic
13
调试工具2
spinlock统计信息(holdi… · ncli · intena)
调试工具2
spinlock
14
调试工具3
QEMU + GDB多核调试环境搭建
调试工具3
QEMU
15
调试工具4
watchpoint与条件断点检测竞…
调试工具4
watchpoint
16
常见竞争条件1
丢失的唤醒(lost wakeup)…
常见竞争条件1
lost
17
常见竞争条件2
共享变量未加锁访问(data rac…
常见竞争条件2
data
18
常见竞争条件3
中断与普通代码共享数据
常见竞争条件3
普通代码共享数据
19
xv6中的典型锁使用案例
kalloc · kfree · proc
xv6
典型锁使用案例
20
锁粒度优化
从大内核锁到细粒度锁的演进
锁粒度优化
从大内核锁到细粒…
21
读写锁与spinlock的对比
xv6为什么只用spinlock
spinlock
读写锁
22
自旋锁与睡眠锁的区别
何时用sleep lock
自旋锁
睡眠锁的区别
23
原子操作与spinlock
__sync_fetch_and_a…
spinlock
原子操作
24
内存序与屏障
acquire语义与release语…
内存序
屏障
25
多核调试实战1
模拟死锁并分析backtrace
多核调试实战1
backtrace
26
多核调试实战2
使用GDB查看每个CPU的锁状态
多核调试实战2
GDB
27
多核调试实战3
添加自定义断言检测锁违规
多核调试实战3
添加自定义断言检…
28
性能分析
spinlock的争用开销与测量方法
性能分析
spinlock
29
xv6 spinlock的局限性
不可睡眠 · 不可递归
xv6
spinlock
30
课程总结
编写健壮并发代码的黄金法则
课程总结
编写健壮并发代码…
所属VIP或分类
同VIP:xv6内核console驱动字符输入输出缓冲区设计
同VIP:xv6内核console驱动轮询模式与中断模式切换设计
同VIP:xv6内核exec与fork协同创建进程实战