2012-07-02 199 views

回答

2

内核的总锁定是这里的问题。当执行中断处理程序时,内核处于中断上下文中,即中断处理程序不与任何进程关联(当前宏不能使用)。

如果你能睡觉,你将永远无法要回被中断的代码,因为调度程序将不知道如何取回它。

保持在中断处理程序锁,然后睡觉,让另一个进程来运行,然后再次进入中断处理程序,并试图重新获取锁会死锁内核。

如果试图了解更多关于内核调度是如何工作的,你很快就会明白为什么睡觉是在某些情况下一个没有去。