5         spin_acquire(&lock->dep_map, 0, 0, _RET_IP_);  

6         LOCK_CONTENDED(lock, do_raw_spin_trylock, do_raw_spin_lock);  

7 }  

复制代码

1. 禁止内核抢占,且关闭本地中断

 

2. 那么在spin_lock中关闭了内核抢占,不关闭中断会出现什么情况呢?假如中断中也想获得这个锁,会出现和spin_lock中举得例子相同。所以这个时候,在进程A获取lock之后,使用spin_lock_irq将中断禁止,就不会出现死锁的情况

 

3. 在任何情况下使用spin_lock_irq都是安全的。因为它既禁止本地中断,又禁止内核抢占。论文网

 

4. spin_lock比spin_lock_irq速度快,但是它并不是任何情况下都是安全的。

 

spin_lock_irqsave

  spin_lock_irqsave------>__raw_spin_lock_irqsave

 

 

 1 static inline unsigned long __raw_spin_lock_irqsave(raw_spinlock_t *lock)

 2 {

 3     unsigned long flags;

 4 

 5     local_irq_save(flags);

 6     preempt_disable();

 7     spin_acquire(&lock->dep_map, 0, 0, _RET_IP_);

 8     /*

 9      * On lockdep we dont want the hand-coded irq-enable of

10      * do_raw_spin_lock_flags() code, because lockdep assumes

11      * that interrupts are not re-enabled during lock-acquire:

12      */

13 #ifdef CONFIG_LOCKDEP

14     LOCK_CONTENDED(lock, do_raw_spin_trylock, do_raw_spin_lock);

15 #else

16     do_raw_spin_lock_flags(lock, &flags);

17 #endif

18     return flags;

19 }

1. 禁止内核抢占,关闭中断,保存中断状态寄存器的标志位

 

2. spin_lock_irqsave在锁返回时,之前开的中断,之后也是开的;之前关,之后也是关。但是spin_lock_irq则不管之前的开还是关,返回时都是开的(?)。

 

3. spin_lock_irq在自旋的时候,不会保存当前的中断标志寄存器,只会在自旋结束后,将之前的中断打开。

 

1. spin_lock/spin_unlock:

 

进程A中调用了spin_lock(&lock)然后进入临界区,此时来了一个中断(interrupt),该中断也运行在和进程A相同的CPU上,并且在该中断处理程序中恰巧也会spin_lock(&lock), 试图获取同一个锁。由于是在同一个CPU上被中断,进程A会被设置为TASK_INTERRUPT状态,中断处理程序无法获得锁,会不停的忙等,由于进程A被设置为中断状态,schedule()进程调度就无法再调度进程A运行,这样就导致了死锁!

 

但是如果该中断处理程序运行在不同的CPU上就不会触发死锁。 因为在不同的CPU上出现中断不会导致进程A的状态被设为TASK_INTERRUPT,只是换出。当中断处理程序忙等被换出后,进程A还是有机会获得CPU,执行并退出临界区。所以在使用spin_lock时要明确知道该锁不会在中断处理程序中使用。

 

2. spin_lock_irq/spin_unlock_irq

spin_lock_irq----->raw_spin_lock_irq

 

spin_lock_irq 和 spin_unlock_irq, 如果你确定在获取锁之前本地中断是开启的,那么就不需要保存中断状态,解锁的时候直接将本地中断启用就可以啦

 

3. spin_lock_irqsave/spin_unlock_irqrestore

上一篇:校园网络设备选型方案
下一篇:telnet towel.blinkenlights.nl

青少年亲子沟通障碍的调查问卷和访谈提纲

安阳县农村体育资源开发...

申通快递服务质量感知和评价调查问卷表

某量具的重复性和再现性分析

城市居民体育行为调查问卷和访谈提纲

员工包括当地员工和外来...

企业员工人格特征和工作收入问卷调查表

湖南长沙市生育津贴政策...

旅游英语推进邢台市旅游...

浅议体态律动在小学音乐课堂教学中的运用

浅谈岗位廉洁教育的方法与途径【3858字】

摩羯座运势2022,摩羯座...

试析多元智能理论茬体育...

基于中频信号的家用治疗...

PF--1415反击式破碎机箱体设计开题报告

信息技术茬旅游专业教學...

羟肟类萃取剂对嗜酸氧化...