memory-management - 扩展页表/嵌套分页 : prevention of traps on a guest PTE update

标签 memory-management virtualization page-tables

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

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

谢谢。

最佳答案

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

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

关于memory-management - 扩展页表/嵌套分页 : prevention of traps on a guest PTE update,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35780844/

相关文章:

c - 第二次机会页面替换

linux - 属于已打开文件的内存页是否作为 vm_area_struct 进行管理?

java - 我们可以做我们自己的内存管理吗?

iPhone Objective-C 自动发布泄露

.net - 数据集和内存泄漏

java - Apache Mesos 实际上做了什么?

php - 解析 php 中的 localhost,以便可以在虚拟机外部查看

virtualization - 我可以使用带有 QEMU 后端的 libvirt Python 模块注册事件回调吗?

linux - Linux内核建立映射虚拟物理地址的src代码点在哪里?

javascript - 如何避免在 Firefox 中造成内存泄漏?