【问题标题】:setting of intel EPT Accessed and dirty FLags for guest page tables为访客页表设置英特尔 EPT 访问和脏标志
【发布时间】:2015-08-19 10:33:57
【问题描述】:

我正在阅读英特尔虚拟化手册,其中手册说如果设置了 EPTP(VM 执行控制字段)的第 6 位,处理器将根据一些规则在相关 EPT 条目中设置访问位和脏位。

我试图了解,如果处理器在 EPT 中设置 A/D 位以访问和修改相关页面,guest Operating 将如何从此设置中受益,因为 guest Os 无法访问 EPT。据我了解,操作系统的内存管理器使用 A/D 位进行优化和交换算法,并且这些位在页面遍历器中没有任何作用。

我(作为 VMM 的程序员)必须在 VMM 中添加代码来搜索 GPA 空间中的相关条目并相应地标记位? 如果是这种情况,那么我们怎么能说这些位是在没有 VMM 知识的情况下设置的? kvm 处理这个问题的方式也将是一个很好的答案

【问题讨论】:

    标签: intel virtualization kvm


    【解决方案1】:

    一般来说,客户操作系统不会从设置的 EPT 中的访问和脏位中受益。正如您所说,客人通常无法访问 EPT。这纯粹是针对管理程序/VMM 的。它类似于进程页表中的脏访问位,进程不使用它,只有操作系统。

    关于你的第二个问题,有点不清楚,所以我不确定你在问什么。但是,硬件会在设置正确的情况下标记访问位和脏位,您不必手动进行。

    【讨论】:

    • 这意味着我的理解是“客户操作系统也需要A/D位......所以英特尔引入了EPT A/D位”是完全错误的。请告诉我客户操作系统如何在没有 A/D 位的情况下执行交换和其他内存优化。
    • @shami 客户操作系统仍然有自己的页表(客户物理到客户虚拟)和自己的 A/D 位,因此它可以在客人。一个或多个客人的交换将由管理程序执行。
    • 谁来设置guest中的A/D位并且guest中发生的交换将向下移动到物理页面?
    • A/D 位通过 MMU 在来宾中设置,就像没有虚拟化一样。是的,一切最终都归结为一个物理帧,但是客户操作系统不需要知道主机物理地址是什么来执行它自己的客户物理内存的交换,它只会使用客户物理地址并将该页面写入(模拟的)访客硬盘。
    • 是的,在虚拟化中,客户无法访问物理 RAM,但它可以访问客户物理内存,对于大多数意图和目的,它可以将其视为物理内存,这就是虚拟化的重点。您刚才提到的所有优化都将在 guest 物理内存中完成,guest OS 尝试在主机物理内存中进行这些优化是没有意义的。正如我所说,MMU 仍被用于进行 guest 物理到来宾虚拟地址的转换,并将在 guest 页表数据结构中设置适当的脏/访问位。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    • 2021-11-07
    • 2015-09-14
    相关资源
    最近更新 更多