我是 Linux 内核编程的新手。我对GUARANTEES章节中的内存障碍文档感到困惑。
特定 CPU 中的重叠加载和存储似乎在该 CPU 中是有序的。
*X = c; d = *X;CPU只会发出:
STORE *X = c, d = LOAD *X
然后是另一个例子:
必须假设可以合并或丢弃重叠的内存访问。
*A = X; Y = *A;我们可能会得到:
STORE *A = X; Y = LOAD *A; STORE *A = Y = X;
它们看起来一样,这两个例子有什么区别?
我是 Linux 内核编程的新手。我对GUARANTEES章节中的内存障碍文档感到困惑。
特定 CPU 中的重叠加载和存储似乎在该 CPU 中是有序的。
*X = c; d = *X;CPU只会发出:
STORE *X = c, d = LOAD *X
然后是另一个例子:
必须假设可以合并或丢弃重叠的内存访问。
*A = X; Y = *A;我们可能会得到:
STORE *A = X; Y = LOAD *A; STORE *A = Y = X;
它们看起来一样,这两个例子有什么区别?
你是对的,文档不正确。实际上您的文件版本不是最新的。3.8-rc3 中有一个提交修复了该问题: http ://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commitdiff;h=f191eec58803e1e16c3421638cdcc9195c425851
希望有帮助。马蒂亚斯