码迷,mamicode.com
首页 > 其他好文 > 详细

内核同步

时间:2015-05-11 08:51:21      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:内核   kernel   同步   并发   linux   

1、内核如何为不同的请求提供服务
(1)内核抢占:如果一个进程还在处理一个异常的时候,分配给它的时间片到期了,会发生什么事情呢?这取决于有没有启用内核抢占(Kernel Preemption),如果没有启用,进程就继续处理异常,如果启用了,进程可能会立即被抢占,异常的处理也就暂停了,直到schedule()再度选择原先那个进程(注意:内核处理中断的时候,必然会禁用内核抢占,所以这里才说是异常)。
     内核抢占的目的是减少用户态进程的分派延迟。
技术分享
技术分享
2、同步原语

技术分享
3、每CPU变量:

技术分享
4、原子操作

技术分享
技术分享
5、优化和内存屏障

技术分享
6、自旋锁

技术分享
7、顺序锁
8、读-拷贝-更新(RCU)
     RCU只保护被动态分配并通过指针引用的数据结构
     在被RCU保护的临界区中,任何内核控制路径都不能睡眠。
9、信号量
     Linux提供两种信号量:
     内核信号量,由内核控制路径使用
     System V IPC信号量,由用户态进程使用
(1)读/写信号量
(2)补充原语
(3)禁止本地中断
(4)禁止和激活可延迟函数
10、对内核数据结构的同步访问
(1)内核开发者才去下述由经验得到的法则:把系统中的并发度保持在尽可能高的程度。
     系统中的并发度主要取决于两个因素:同时运转的I/O设备数和进行有效工作的CPU数。
(2)为了有效地利用CPU,应该尽可能避免使用基于自旋锁的同步原语
11、在自旋锁、信号量及中断禁止之间选择
(1)保护异常所访问的数据结构
(2)保护中断访问的数据结构
(3)保护可被延迟函数所访问的数据结构
(4)保护由异常和中断访问的数据结构
(5)保护由异常和可延迟函数访问的数据结构
(6)保护由中断和可延迟函数访问的数据结构
(7)保护由异常、中断和可延迟函数访问的数据结构
12、避免竞争条件的实例
(1)引用计数器
(2)大内核锁
(3)内存描述符读/写信号量
(4)slab高速缓存链表的信号量
(5)索引节点的信号量

内核同步

标签:内核   kernel   同步   并发   linux   

原文地址:http://blog.csdn.net/ucan23/article/details/45640159

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!