我知道我们在中断处理程序中获取interrupts时禁用了spinlocks。
我怀疑当spinlock被保存在process context中时会发生什么,这时会发生中断吗?
这种情况会发生吗?
根据我的理解,如果处理程序也试图获取进程上下文中持有的相同lock,它将继续为该锁旋转。
那么,在获取spinlock时,我们总是禁用中断吗?
发布于 2014-11-28 12:09:13
旋转是旋转锁的用途。
当中断发生在另一个CPU上时,它只会旋转,直到进程上下文锁被解锁为止。
当中断发生在同一个CPU上时,它将永远旋转。这就是为什么在进程上下文中使用自旋锁时应该禁用中断,如果中断处理程序也使用相同的锁。
(在中断上下文中使用自旋锁时,通常不需要禁用中断,因为中断处理程序本身不能中断。)
https://stackoverflow.com/questions/27151445
复制相似问题