我在https://en.wikipedia.org/wiki/Compare-and-swap中读到了CAS,并有些疑惑:
<Linux Kernel Development> 3rd
第168页看到了以下句子。因为进程一次只能在一个处理器上执行
我对此表示怀疑,不确定这是否意味着它的字面意思。如果进程有多个线程,它们一次可以在多个处理器上运行怎么办?
有人帮忙解释这些疑惑吗?感谢。
答案 0 :(得分:2)
cpu具有内存缓存,通常为每个所谓的缓存行64字节大小。它会对那个大小的块做一些事情。特别是,在执行锁定cmpxchg或类似操作时,执行此操作的硬件线程将协商对其他线程的64字节内存部分的独占访问。这就是它起作用的原因。
一般来说,您想阅读本书:https://www.kernel.org/pub/linux/kernel/people/paulmck/perfbook/perfbook.html
第21页解释了这一特定位。
关于LKD报价,没有提供上下文。可以安全地假设它们意味着线程并且正在更新线程本地计数器。