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

我想在用户空间进程中将一系列内存设置为不可缓存( Linux,x86-86). This question接近,但只提到了与物理内存一起工作的MTRR寄存器.我想使用PAT表来实现这一点,因为它们提供了更细粒度的控制,它们允许虚拟内存在逐页的基础上设置为不可缓存.

Linux文档,Documentation/x86/pat.txt,建议应该有mmap和SYNC标志,但我在实践中找不到如何做到这一点.理想情况下,我想使用诸如mprotect(地址,范围,O_UNCACHABLE)之类的调用.

解决方法

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

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

相关文章

/etc/sysctl.conf这个目录主要是配置一些系统信息,/etc/sys...
1.作用 useradd或adduser命令用来建立用户帐号和创建用户的起...
它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅...
不管是我们在安装软件还是监测软件的使用性能,我们都要随时...
装好Tomcat7后,发现除了本机能访问外界访问不了,岂有此理。...
修改防火墙配置需要修改 /etc/sysconfig/iptables 这个文件,...