该图取自here。

Q1。似乎EPT表保留了来宾页表的整个副本,使其成为4级页表。对吗?
Q2。这是不是有点浪费空间?
Q3。什么是EPT违规?这是否意味着:来宾正在尝试访问新的来宾虚拟地址( gVA ),EPT表还没有该地址的记录,因此它会陷入VMM,并将两个gVA和gPA条目添加到EPT表中。对吗?
发布于 2015-08-21 08:06:10
EPT将来宾物理地址映射到主机物理地址。
在引入EPT(硬件支持GPA<-->HPA)之前,虚拟机管理程序必须手动维护来宾页表映射条目的卷影副本。实际客户页表中的PTE条目将降低access permissions,即,如果它的实际权限是写入,它将被降低为读取。这将导致page fault被虚拟机管理程序截获。
管理程序将依次更新相应的影子页表项。整个过程都很慢。这就是为什么引入了EPT,以便GPA到HPA的转换是由硬件本身完成的,这要快得多。
现在回答你的第一个问题--它不是。
Q3--硬件通过遍历来宾操作系统中的页表来正常转换Guest Virtual Address(GVA),就像在本机硬件上运行的操作系统中所做的那样。一旦我们得到了这个翻译后的Guest Physical Address(GPA),EPT就进入了我们的视野。现在硬件将GPA转换为HPA,因为HPA是真正的CPU知道的地址。
当Ept没有guest physical address(GPA)到host physical address(HPA)的现有映射时,就会发生EPT violation VMExit。这会产生一个vmExit到VMM,然后会创建一个新的映射。( Ept违规与正常操作系统中的页面错误相同,唯一的区别是创建的映射类型不同。)
发布于 2015-05-05 13:36:41
我的2美分,如果我记错了,请纠正我。
Q1:不是,EPT存储GPA到HPA的映射。使用EPT,来宾页表只在guest中维护。
Q2:如果没有EPT,VMM应该改为维护影子页表。所以我不认为EPT浪费空间。
Q3: EPT存储GPA到HPA的映射。在这种情况下,GPA到GVA的映射是在来宾中维护的。
发布于 2016-05-23 22:59:15
我的小小贡献,晚了一年...
问题1:是的,EPT类似于mmu转换树(4级或更低),但它将GPA转换为HPA (来宾物理地址到主机物理地址)。
Q2:对于虚拟化,转换树(卷影或EPT)是必要的,所以它不会浪费空间。硬件转换比影子转换(软件)更快,并防止vmexit减慢进程。
Q3:是的,EPT冲突就像页面错误一样发生,但它也发生在访问冲突中。EPT允许对页面访问(读、写、执行)进行精细控制。
https://stackoverflow.com/questions/29651740
复制相似问题