加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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来控制页面属性.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读