【问题标题】:Can we detect memory accesses by a guest OS in Xen?我们可以在 Xen 中检测来宾操作系统的内存访问吗?
【发布时间】: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


【解决方案1】:

你可以。最小的例子是xen-access.c。还有libvmilibbdvmi。基本思想是将您感兴趣的页面设置为只读,这将在第一次尝试写入时导致页面错误,进而导致您可以在 dom0(或类似特权域)用户空间应用程序。但是,如果您想对 所有 访客的页面和 所有 写入执行此操作,您将减慢访客的速度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 2015-06-20
    • 1970-01-01
    • 2021-09-07
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多