【发布时间】:2015-09-29 01:07:46
【问题描述】:
我们能否检测每次内存被 Xen 中的来宾操作系统给出的指令访问的情况? 或者如果这不可能,有没有办法知道在 Linux 中运行的指令所进行的内存访问?
【问题讨论】:
-
您需要只检测对特定内存区域的访问还是只检测所有访问?如果您只对特定的内存区域感兴趣,硬件断点可能会有所帮助(如果您的硬件支持它们),以及 Kmemcheck 工具使用的技术:“隐藏”/“取消隐藏”内存页面并处理访问时的页面错误.这一切都取决于你想完成什么。
-
另一方面,如果您需要获取内核的给定组件进行的所有内存访问,您可以使用相对较新的 GCC ( 4.9.x 或者更好的是 5.x),看看 KAsan 的实现,它是 Linux 内核的 AddressSanitizer 工具。
-
非常感谢您的反馈,@Eugene - 我对所有内存访问感兴趣,并想知道操作系统上运行的任何组件正在访问内存的哪个物理地址(在运行时 - 我每次访问物理内存时都想调用一个特定的函数)。如果这不可能,那么可能解决我的问题的另一件事是知道任何虚拟地址何时被转换为其相应的物理内存地址。
标签: linux memory memory-management kernel xen