EPT:
先说EPT的优势吧:可以由CPU自动的完成两级页表转换,即不用影子页表也可以迅速的从GVA ---> HPA。
然后既然是影子页表的补充:那我们分析下影子页表的劣势。第一,影子页表实现比较复杂,导致其维护,调试等都比较困难;第二:影子页表的开销也挺大,因为需要为每个客户机都维护一个影子页表。
下面详细分析下EPT原理:
CR3将客户机程序所见的客户机虚拟地址转化成客户机物理地址,然后通过EPT将客户机物理地址转换成宿主机物理地址,而这两次都是通过CPU硬件自动完成的。EPT是在原有的CR3的页表地址映射的基础上引入了另一次映射,这样就可以直接两次转换了。
在使用EPT情况下,客户机内部的Page Fault,INVLPG指令以及CR3寄存器的访问都不会引起VM_Exit,因此大大减少了VM_Exit的数量,减少了上下文的切换。另外EPT只需要维护一张EPT页表,从而减少了内存的开销。