内核同步

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)索引节点的信号量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值