为什么不能在32位系统上原子访问64位值?

时间:2014-04-27 13:13:53

标签: linux atomicity

从" https://www.cs.columbia.edu/~smb/classes/s06-4118/l13.pdf"读取Linux Scheduler 我发现了一个声明:

  

"在32位计算机上无法以原子方式访问64位值"

我的问题是,为什么会如此?

我们可以使用锁来使其成为原子,如同一篇文章的下一篇文章中所述。如果那是真的,那么引用的是什么意思。

1 个答案:

答案 0 :(得分:4)

根据我的评论,它们可能意味着来自内存的负载不是原子的。

32位机器上的64位字可能需要两次内存访问才能获得完整的字。在两次读取期间,可能发生上下文切换,或者可能被DMA设备覆盖。因此,您得到一半正确的值。