您的位置:首页 > 运维架构 > Linux

linux kernel source code ABC #2 spinlock与preemption, interrupt

2015-07-14 16:15 645 查看
hold住spinlock之后,会置一个状态(进程描述符中的?),导致当前处理器处于不抢占(non-preemptive)状态。

如果hold spinlock之后,可以抢占,则可能会被调试到另外的程序,而另外的程序需要获取这个spinlock的时候,就白白浪费处理器了。

如果spinlock需要与中断进行同步,则需要在获取spinlock的时候,同时禁止当前处理器中断,这就是spinlock_irq_save之类函数的用武之地。

如果在中断处理程序中需要去拿一个spinlock而这个spinlock相同处理器上的进程拿到,就会形成死锁。SMP可能会稍稍好点,也许还能将进程调度到别的处理器,还能够活过来。

# LDD3 读书笔记
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息