我想在用户空间进程中将一系列内存设置为不可缓存(Linux,x86-86).这个问题很接近,但只提到了与物理内存一起工作的MTRR寄存器.我想使用PAT表来实现这一点,因为它们提供了更细粒度的控制,它们允许虚拟内存在逐页的基础上设置为不可缓存.
Linux文档,Documentation/x86/pat.txt,表明应该有一些东西mmap和一个SYNC标志,但我在实践中找不到如何做到这一点.理想情况下,我想使用诸如此类的电话mprotect(address, range, O_UNCACHABLE).
我建议编写一个内核模块来为 user\xe2\x80\x93 级别的进程提供必要的接口。在内核模块内,您可以使用set_memory_uc来控制页面属性。
\n\n关于模拟器:它应该慢大约十到千倍\xe2\x80\x94而不是一百万倍\xe2\x80\x94,除非你在门级进行模拟。不要忘记考虑编写内核模块所需的时间。如果您需要花费几周的时间来编写和调试模块,那么您最好使用模拟器进行一次性实验。
\n| 归档时间: |
|
| 查看次数: |
2050 次 |
| 最近记录: |