内核同步原语
来源:互联网 发布:淘宝待揽件是什么意思 编辑:程序博客网 时间:2024/05/19 12:11
最好的内核同步手段是不需要同步。
对于SMP系统,如果数据结构可以设计为每cpu变量,将最有效的避免cpu间的同步。
原子锁要求一些寄存器读写动作采用automic_t型变量,并在单条指令内完成,并对该指令加automic锁,提供了对单一寄存器的访问保护。
自旋锁用在保护SMP下各cpu间的同步,等待锁的进程会空转直到获取到锁,对系统效率会造成一定的影响。
读写锁可以保护一段临界区的数据,其原理是允许并发的读,但是只能有一个进程在写,并且写期间不允许其它进程读。
顺序锁是对读写锁的改进,允许并发的读和写,不过为了确保读的有效性,读的操作完成后,读进程要再次确认数据是否发生更新,如果有更新,则不得不丢弃改数据重读。
RCU机制允许并发的读写操作而不使用锁,其原理对内存的访问采用指针,改写数据就是改写指针指向的地址,在读进程访问旧数据时,写进程建立一份新数据的内存并将指针指向改内存,在确信读进程已经读完的情况下,释放掉旧数据,后面的读访问都将引用新内存。
信号量类似于自旋锁,区别在于等待的进程会挂起而不是空转。信号量的等待队列严格遵从FIFO调度。
通过禁止本地中断和禁止可延迟函数,可以有效保护包含这类内核控制路径的数据结构。这类禁止加上自旋锁便可以同时保护好多cpu内核控制路径访问的数据结构。
内核如果使用了锁原语来保护数据,就应该同时禁止内核抢占。
在访问每cpu变量时,也需要禁止内核抢占。
阅读全文
0 0
- 内核同步原语
- 内核中常用的同步原语使用说明
- MAC内核编程指南-同步原语
- Linux内核同步原语之原子操作
- Linux内核同步原语之per-cpu变量
- Linux内核同步原语之原子操作
- Linux内核同步原语之per-cpu变量
- Linux内核同步原语之原子操作
- Linux内核同步原语之原子操作
- 同步原语
- 同步原语
- 同步原语
- linux同步原语
- 进程同步:问题的解决,原语
- 进(线)程同步原语
- eCos中的同步原语简要
- eCos中的同步原语简要
- Windows Vista 新增的同步原语
- C#基础-015 简单循环goto-start
- bzoj3224普通平衡树splay
- 八大排序之插入排序
- 脚本和物理系统的结合使用
- JS实现进度条
- 内核同步原语
- zzuli 2182 不是签到题XD【数论定理】
- 浅析Linux命令之head和tail
- 最长上升子序列
- 实现strcpy得分点
- SpringBoot项目技术点一
- 暑假训练总结
- 手动构造固定平台下语义编译器(LL(1)文法)
- iOS学习笔记-091.彩票06——我的彩票