我正在考虑如何在 Linux 中为自旋锁实现“防止上下文切换”功能。大图片/伪代码是可以接受的,因为我只知道它背后的逻辑。
答案1
自旋锁不是 Linux 功能,它是一个非常简单的 CPU 功能,至少在大多数 CPU 上是这样。
自旋锁不会阻止上下文切换。禁用上下文切换也会禁用多任务处理,这在大多数情况下在 Linux 上是不需要的。
然而,自旋锁受到上下文切换的保护。自旋锁的本质是锁定尝试发生在单个 CPU 命令中。上下文切换不会破坏进程CPU命令内部,只有在那之后。
实现不是特定于操作系统的,而是特定于 CPU 的:它需要一个可以原子地交换寄存器内容和内存地址的助记符。在 x86 上,可以通过以下方式发生西格。