Chinaunix首页 | 论坛 | 博客
  • 博客访问: 527208
  • 博文数量: 118
  • 博客积分: 2575
  • 博客等级: 大尉
  • 技术积分: 1263
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-27 09:37
文章分类

全部博文(118)

文章存档

2017年(11)

2016年(8)

2015年(1)

2014年(9)

2013年(7)

2012年(38)

2011年(14)

2010年(18)

2009年(12)

分类: LINUX

2016-01-25 18:24:24

一般spin_lock的表示锁住自旋锁,那么在代码中经常看到了spin_lock_bh与spin_lock_irq或者spin_lock_irqsave是什么意思呢。

一般我们都了解spin_lock是什么意思,就是自旋呗,如果在开中断的情况下自旋,则可能被打断。如果在中断处理程序或者关闭中断的情况下运行,则不能被抢占,只有其它CPU中的运行代码才可以释放这个锁。

spin_lock_irq不仅同步进程,还能够在进程与中断之间进行同步,也就是获取自旋锁的时候,还要对本CPU关中断(当然关闭中断之后,softirq也不能运行了。spin_lock_irqsave原理上与spin_lock相同,只是能够恢复原先的中断开关的状态。

spin_lock_bh只关闭softirq,这样中断还是能够响应的,相对spin_lock_irq来说,条件就相对宽容一些。

那么问题来了:spin_lock住一个自旋锁的内核进程(如果它没有关中断的话),能够被其它内核进程抢占吗?
阅读(4849) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~