首页
›
Linux内核与驱动
›
108-xv6内核
›
《xv6内核sleep wakeup同步机制与工程实践》
VIP10
本课程属于:108-xv6内核
Linux内核与驱动 · 共 10 门相关课程,组合学习更完整。
查看所属VIP全部课程 →
← 返回所属目录
咨询 / 购买
xv6内核sleep wakeup同步机制与工程实践
共计 30 章节
点击此处阅读海量试读课程:100+行业、1000+细分领域
01
课程导论
为什么需要sleep/wakeup?…
课程导论
sleep/wakeup
02
xv6内核架构概览
进程状态机 · 调度器与锁的初步认识
xv6
内核架构概览
03
自旋锁回顾
spinlock的实现原理 · acquire与release的原子…
自旋锁回顾
spinlock
04
自旋锁的局限性
忙等待 · 优先级反转 · 无法用于长时间等待
自旋锁的局限性
忙等待
05
sleep/wakeup设计哲学
让出CPU · 条件等待 · 唤醒通知
sleep/wakeup
设计哲学
06
核心数据结构
struct proc中的chan字…
核心数据结构
struct
07
sleep系统调用(用户态)
用户程序如何发起睡眠等待
sleep
系统调用
08
wakeup系统调用(用户态)
用户程序如何唤醒等待进程
wakeup
系统调用
09
内核态sleep函数
实现原理 · 参数chan的含义 · 关中断与加锁
sleep
内核态
10
内核态wakeup函数
遍历进程表 · 匹配chan · 修改状态为RUNNABLE
wakeup
内核态
11
sleep与wakeup的配对机制
如何保证不会丢失唤醒信号
sleep
wakeup
12
lost wakeup问题
经典竞态条件及其产生原因
lost
wakeup
13
解决lost wakeup
在sleep中释放锁 · 重新获取锁的原子操作
lost
wakeup
14
条件变量与sleep/wakeup的关系
对比pthread_cond_wai…
sleep/wakeup
条件变量
15
管道(pipe)的同步实现
pipewrite与piperead…
pipe
管道
16
控制台(console)的同步实现
consolewrite与conso…
console
控制台
17
exit与wait的同步
父进程等待子进程退出时的sleep/…
exit
wait
18
kill系统调用与sleep的交互
如何唤醒被kill的进程
kill
sleep
19
sleep/wakeup与调度器(scheduler)的协作
yield与sched函数
sleep/wakeup
scheduler
20
多核环境下的sleep/wakeup
跨CPU唤醒的原子性保证
sleep/wakeup
多核环境下的
21
调试sleep/wakeup
使用printf与backtrace…
sleep/wakeup
调试
22
工程实践1
使用sleep/wakeup实现一个…
工程实践1
sleep/wakeup
23
工程实践2
使用sleep/wakeup实现一个…
工程实践2
sleep/wakeup
24
工程实践3
使用sleep/wakeup实现一个…
工程实践3
sleep/wakeup
25
性能分析
sleep/wakeup的开销 · 上下文切换次数 · 锁竞争
性能分析
sleep/wakeup
26
与Linux内核的对比
Linux中的wait_queue与…
Linux
内核的对比
27
与MIT xv6实验的结合
Lab
MIT
xv6
28
常见错误与陷阱
忘记在循环中检查条件 · 错误使用chan值
常见错误
陷阱
29
扩展思考
如何将sleep/wakeup用于用…
扩展思考
sleep/wakeup
30
课程总结
sleep/wakeup的设计模式 · 适用场景与未来展望
课程总结
sleep/wakeup
所属VIP或分类
同VIP:xv6内核console驱动字符输入输出缓冲区设计
同VIP:xv6内核console驱动轮询模式与中断模式切换设计
同VIP:xv6内核exec与fork协同创建进程实战