分享

kvm 影子页表和EPT的区别?

云学生 发表于 2016-5-7 18:18:02 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 6 21199
     今天学习了一下kvm,在看内存虚拟化的时候看到了影子页表和EPT,看了一些别人的博客,不是很通俗,没有很理解,希望有大牛指点一下~
     大概的疑惑:
     1.影子页表,EPT和MMU的关系,看别人说影子页表的时候说是因为MMU只能实现一次转换所以才出现影子页表这个东西,但是说到EPT的时候好像就没有人说起MMU了,那难道EPT和MMU没有关系吗?
     2.影子页表是一张GVA到HPA映射转换的表吗?
     3.EPT中文是扩展的页表,那这个扩展表现在哪呢,是指多了一个VPID吗?
     4.EPT维护的一张页表也应该是包括所有GUEST OS 上应用程序的虚地址到机器地址的映射吧,那想比影子页表的对每一个GUEST OS维护一张页表好像也没有节省什么空间吧?

已有(7)人评论

跳转到指定楼层
hyj 发表于 2016-5-7 20:09:33
这个问题太专业了,属于专业运维。

点评

这样啊,好吧~还是谢谢回答~  发表于 2016-5-7 20:41
回复

使用道具 举报

25451182 发表于 2016-5-11 12:55:15
1,原则:在X86架构下,原本只支持内存地址的一次转换(GPA-HPA),由物理机操作系统映射
2,引入虚拟化后,那就多了一层GVA-GPA-HPA,其中GVA-GPA由客户机操作系统映射,GPA-HPA由VMM(也就是虚拟化操作系统)来映射,这里就需要转换2次,与1中的原则冲突,所以引入影子页表。影子页表里面记录了2次映射的一个关系表,影藏了2次映射过程,所以对于虚拟化来说就相当于还是一次映射。但是影子页表比较复杂,而且开销太大,所以引入ept
3,ept是代替影子页表,将那2次映射过程直接通过硬件来处理,减少复杂度和开销
回复

使用道具 举报

云学生 发表于 2016-5-11 15:19:40
25451182 发表于 2016-5-11 12:55
1,原则:在X86架构下,原本只支持内存地址的一次转换(GPA-HPA),由物理机操作系统映射
2,引入虚拟化后 ...

能不能说一下影子页表和ept跟MMU的关系?就是影子页表和ept是什么时候需要MMU的?
回复

使用道具 举报

25451182 发表于 2016-7-22 13:59:52
云学生 发表于 2016-5-11 15:19
能不能说一下影子页表和ept跟MMU的关系?就是影子页表和ept是什么时候需要MMU的?

MMU早就存在,即内存管理单元,在非虚拟换环境中,通过MMU实现物理内存跟操作系统内存映射关系。

在虚拟化环境中也需要MMU。
回复

使用道具 举报

doscho 发表于 2016-9-3 13:43:05
25451182 发表于 2016-5-11 12:55
1,原则:在X86架构下,原本只支持内存地址的一次转换(GPA-HPA),由物理机操作系统映射
2,引入虚拟化后 ...

分析的很好,就是还有点迷糊。如何实践一下,跟踪 。理论上不如实践明白。
回复

使用道具 举报

doscho 发表于 2016-9-3 13:43:48
现在在看虚拟化的东西,这些概念也是很模糊。找点实践一下,就认识清楚了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条