文章目录
- 互斥算法
-
- Peterson 算法
- 并发控制 :互斥(自选锁、互斥锁、futex)
-
-
- 互斥 (mutual exclusion),“互相排斥”
- 问题的思考
- 自旋锁的实现
-
- x86 原子操作:LOCK 指令前缀
- 用 xchg 实现互斥 (自旋锁)
- 旧的x86原子操作
- MESI(缓存一致性)
- RISC
- Compare-and-Swap 的 LR/SC 实现
- 互斥锁的实现
-
- 自旋锁的缺陷
- Scalability
- 使用场景
- 互斥锁 (Mutex Lock)
- Futex = Spin + Mutex
-
- Spin VS Mutex
- Futex: Fast Userspace muTexes
- 总结
-
前言
我目前正在学jyy的操作系统,该文章为我的笔记。
学习链接 : 链接点击跳转
这也证明了为什么 要贴上对方的名字 +
- 如果把 内敛汇编的 去掉的话 , 则会出错
自旋锁的实现
x86 原子操作:LOCK 指令前缀
- 例子:[sum-atomic.c](http://jyywiki.cn/pages/OS/2022/demos/sum-atom
- Atomic exchange (load + store)
用 xchg 实现互斥 (自旋锁)
-
例子 : 每次去厕所门口都需要exchange 只有在在上厕所的人身上才有钥匙
旧的x86原子操作
- 当俩个cpu处理共享一个内存
- 上锁 加上汇编指令前缀
- 但是存在负担 代价大
MESI(缓存一致性)
- 但现在有 共享缓存锁 : 保证缓存的一致性
Compare-and-Swap 的 LR/SC 实现
使用场景
Futex: Fast Userspace muTexes
- gdb 调试 (待完成 ,暂时功底不够)
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览93765 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!