linux – 通过x86 PAT表将内存设置为不可缓存
发布时间:2020-12-13 16:57:58 所属栏目:Linux 来源:网络整理
导读:我想在用户空间进程中将一系列内存设置为不可缓存( Linux,x86-86). This question接近,但只提到了与物理内存一起工作的MTRR寄存器.我想使用PAT表来实现这一点,因为它们提供了更细粒度的控制,它们允许虚拟内存在逐页的基础上设置为不可缓存. Linux文档,Docume
我想在用户空间进程中将一系列内存设置为不可缓存(
Linux,x86-86).
This question接近,但只提到了与物理内存一起工作的MTRR寄存器.我想使用PAT表来实现这一点,因为它们提供了更细粒度的控制,它们允许虚拟内存在逐页的基础上设置为不可缓存.
Linux文档,Documentation/x86/pat.txt,建议应该有mmap和SYNC标志,但我在实践中找不到如何做到这一点.理想情况下,我想使用诸如mprotect(地址,范围,O_UNCACHABLE)之类的调用. 解决方法
我建议编写内核模块,为用户级进程提供必要的接口.在内核模块中,您可以使用
set_memory_uc来控制页面属性.
关于模拟器:除非你在门级进行模拟,否则它应该慢一到几千倍 – 不是一百万倍.不要忘记考虑编写内核模块所花费的时间.如果您花费几周的时间来编写和调试模块,那么最好使用模拟器进行一次性实验. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |