gpt4 book ai didi

linux - 通过 x86 PAT 表将内存设置为不可缓存

转载 作者:IT王子 更新时间:2023-10-29 00:14:45 30 4
gpt4 key购买 nike

我想在用户空间进程中将一段内存设置为不可缓存(Linux,x86-86)。 This question接近,但只提到与物理内存一起工作的 MTRR 寄存器。我想使用 PAT 表来执行此操作,因为它们提供更细粒度的控制,它们允许逐页将虚拟内存设置为不可缓存。

Linux 文档,Documentation/x86/pat.txt ,建议应该有一些带有 mmapSYNC 标志的东西,但我无法在实践中找到如何做到这一点。理想情况下,我想使用诸如 mprotect(address, range, O_UNCACHABLE) 之类的调用。

最佳答案

我建议编写一个内核模块来为用户级进程提供必要的接口(interface)。在内核模块中,您可以使用 set_memory_uc控制页面属性。

关于模拟器:它应该慢大约十到一千倍——而不是一百万倍——除非你在门级模拟。不要忘记考虑编写内核模块所花费的时间。如果您需要几周时间来编写和调试模块,您最好使用模拟器进行一次性实验。

关于linux - 通过 x86 PAT 表将内存设置为不可缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9209641/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com