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