扩展页表/嵌套分页:防止来宾 PTE 更新的陷阱

Extended Page Tables / Nested Paging : prevention of traps on a guest PTE update

所以我研究了英特尔虚拟化扩展中的 EPT。我知道对于影子页面 tables,VMM 必须对硬件可访问的影子 PT 进行写保护,这样每当来宾试图写入 PT 时,它就会陷入 VMM。这种基于软件的页面 table 管理是一个巨大的开销,应该由 EPTs / Nested Paging 来解决。

但是嵌套分页是如何解决这个问题的呢?在这种情况下,我们有 2 个单独的翻译:Guest VA 到 Guest PA(即主机 VA),以及 Host VA 到主机(机器)PA。据称,来宾管理页面 table 的来宾更新不需要陷阱。这是不连贯的:如果来宾更改 GVA->GPA 映射,新的 GPA 映射不应该也反映在 HVA 中吗?换句话说,来宾管理页面 table 中的每个更改不应该也反映在 VMM 管理页面 table 中吗?我们似乎有同样的问题。 EPT的引入解决了什么问题?

谢谢。

所以我不得不为我的带回家考试弄清楚这个问题。事实证明这真的是一个非常小的细节:当一个新的VM被实例化时,Host CR3指针指向的页面table被加载了一整套Guest Physical -> Host Physical地址映射;也就是说,由于这些映射是静止的/静态的,因此当虚拟机为 运行.

时,无需动态更新它们

i.e, since these mappings are stationary / static, there would be no need to update them on the fly when the VMs are running.

不确定但是:可能会发生 GP 页面不存在 EPT 映射(从 GPA -> HPA)。在这种情况下,VMM 将触发并处理 EPT violation/misconfiguration VM 退出。负责VMM分配主机物理页,并为映射设置关联的EPT条目