我了解我们在中断处理程序中获取interrupts
时会禁用spinlocks
。
我对将spinlock
保留在process context
中并且在那一刻发生中断会发生什么感到怀疑?
这种情况会发生吗?
根据我的理解,如果碰巧处理程序也尝试获取在进程上下文中保存的相同lock
,它将继续旋转以获取该锁。
那么我们在获取spinlock
时是否总是禁用中断吗?
最佳答案
旋转是自旋锁的作用。
当该中断发生在另一个CPU上时,它将仅旋转直到解锁过程上下文锁为止。
当中断发生在同一CPU上时,它将永远旋转。这就是为什么在进程上下文中使用自旋锁以及中断处理程序也使用相同的锁时应禁用中断的原因。
(通常不需要在中断上下文中禁用自旋锁时中断,因为中断处理程序无法自行中断。)
关于linux - 中断和自旋锁,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27151445/