云与虚拟化云计算模式( 二 )


文章图片

文章图片
由于影子页表管理的是GVA到HPA的直接映射 , SPT地址转换路径与物理机路径相当 , 直接查询一层页表就可以完成地址转换 。在使用4级页表时 , 转换过程如下图所示 。
云与虚拟化云计算模式
文章图片

文章图片
云与虚拟化云计算模式
文章图片

文章图片
优势:SPT地址转换过程的开销低 , 与物理机相当 。
劣势:
1)地址转换关系的建立开销很大 , 为保证地址转换的合法性 , 所有的转换关系建立 , 即虚拟机进程的页表修改 , 都会被拦截之后陷出到特权的VMM中代为执行;
2)影子页表本身需要占用内存 , 且一个影子页表只对应虚拟机内一个进程 , 整体会占用较多内存资源 。
EPT:后来的硬件针对虚拟化增加了嵌套页表的支持 , 使得硬件可以自动完成两层页表转换 。EPT即是基于硬件支持的方案 , 在管理GVA到GPA的虚拟机页表基础上 , 新增扩展页表管理GPA到HPA的映射 , 如下图所示 。这两层页表相互独立 , 两层映射关系转换都由硬件自动完成 。
云与虚拟化云计算模式
文章图片

文章图片
由于虚拟机内各级页表(gL4,gL3,gL2,gL1)内容只是GPA , 查询下一级时必须先经扩展页表(nL4,nL3,nL2,nL1)转换为HPA , 使得整个转换路径很长 。在两层页表均为4级时 , 转换过程如下图所示 。
云与虚拟化云计算模式
文章图片

文章图片
优势:地址转换关系的建立开销低 , 独立的EPT页表的存在保证了地址转换的合法性 , 因此虚拟机的页表可以自行修改而无需VMM的干预 。
劣势:转换过程的开销很大 , 最坏情况下需要24(4+4+4*4)次硬件查表转换 。
两种经典的方案在安全上都有坚实的保证 , 但在性能上各有缺陷 。SPT为保证地址转换的合法性在建立转换关系时付出了很大代价 , 而EPT虽然消除了建立转换关系的开销 , 转换路径却更长了 。其他探索
业界和学术界关于内存虚拟化还有很多的探索 , 基本思想与SPT或EPT类似 , 可以据此分为三类来看:
1)一层页表方案 。与SPT类似 , 使用一层页表直接管理GVA到HPA的映射;
【云与虚拟化云计算模式】2)两层页表方案 。与EPT类似 , 使用两层独立页表分别管理GVA到GPA以及GPA到HPA的映射;
3)混合方案 。结合前两类方案 , 进行动态的选择 。
DirectPaging:一层页表方案 , 这是Xen在早期硬件仅支持一层页表时的半虚拟化方案 。相比于SPT最大的区别是 , 没有单独维护GVA到GPA的虚拟机页表 , 虚拟机知道自己处于虚拟化环境 , 即知道自己的页表内容是HPA 。虚拟机修改页表也需要陷出 , 但是采用主动陷出的方式 , 可以batch化 , 而SPT则是被动拦截陷出;读取页表时只能拿到HPA , 需要查一张M2P(MachinetoPhysical)表才能得到GPA 。
云与虚拟化云计算模式
文章图片

文章图片
DirectPaging同样使用一层页表管理GVA到HPA映射 , 地址转换的路径与SPT是相同的 。在使用4级页表时 , 最坏只需4次查表 。
优势:地址转换过程的开销低 , 与物理机相当 。
劣势:
1)地址转换关系的建立开销很大 , 所有页表修改都需要主动陷出;
2)需要虚拟机做半虚拟化的适配 , 虚拟机需要感知自己的页表管理的是GVA到HPA的映射 。