linux - 中断和自旋锁

标签 linux linux-kernel operating-system spinlock

据我所知,我们在中断处理程序中获取自旋锁时会禁用中断

我怀疑当自旋锁被保存在进程上下文中并且在那一刻发生中断时会发生什么?

这种情况会发生吗?

根据我的理解,如果处理程序也尝试获取进程上下文中持有的相同,它将继续旋转该锁。

那么我们在获取spinlock时总是禁用中断吗?

最佳答案

自旋是自旋锁的用途。

当中断发生在另一个CPU上时,它只会旋转,直到进程上下文锁被解锁。

当中断发生在同一个CPU上时,它会永远旋转。这就是为什么在进程上下文中获取自旋锁时以及中断处理程序也使用相同的锁时应禁用中断的原因。

(在中断上下文中获取自旋锁时通常不需要禁用中断,因为中断处理程序本身无法中断。)

关于linux - 中断和自旋锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27151445/

相关文章:

Linux 内核 - 如何获取特定版本(直到 SUBLEVEL)

linux - Linux 内核源代码中 _PAGE_OFFSET 值定义的位置

gcc - 夹板与 gcc : are external static code analysis tools worth the effort for C codebases?

linux - 系统崩溃时需要提醒

memory-management - 运行时内存地址绑定(bind)的必要性

Java 函数仅适用于一个文本文件

linux - 如何终止 pthread 中的休眠线程?

linux - rsync 命令只复制 1kb 的系统文件;缺失数据

linux - su 命令上的 "basename: missing operand"

c - 在 Linux 中使用文件时,哪些内核模块负责?