linux自旋锁的理解

自己看了半天LDD3关于自旋锁的部分,开始很是迷惑,慢慢想明白了,分享一下自己的理解.

 

1.自旋锁为什么要禁止抢占?

加入进程A拥有自旋锁的过程中被B抢占,而B企图获取同一个自旋锁,理想情况下B也要白白耗尽自己的时间片,等待A释放自旋锁。糟糕的情况是系统死锁或者崩溃。

 

2.使用自旋锁前为什么要禁止中断?

首先,并不是所有情况下需要这么做。只有当进程上下文和中断上下文中都会使用同一个自旋锁时才需要禁止中断。

假如进程A获取自旋锁之后,中断B发生,如果B企图获取A拥有的自旋锁,B就会一直自旋下去,非中断代码没有机会获得这个CPU.因为中断程序运行期间无法进行进程切换。

 

3.获得自旋锁之后为什么不能阻塞?

进程阻塞将会导致内核抢占,另一个进程被调用。另一个进程可能企图获取同一个自旋锁。这会引起第一条上所说的问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值