注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

xu3stones的技术博客

OS >> Virtualization >> Cloud

 
 
 

日志

 
 

虚拟化技术 概要  

2013-03-14 15:59:32|  分类: 虚拟化入门 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
1. 什么是CPU虚拟化?
CPU虚拟化的作用是使那些非特权指令的敏感指令在执行时能够陷入到VMM中,从而由VMM来模拟执行返回结果。而对于Guest OS的普通指令,则直接由CPU执行。

实现该目的,有两个思路:(1)全虚拟化,Guest OS像没事似的如在物理机上执行每条代码,所有的处理工作由VMM来完成。方法有:二进制翻译(VMware),动态扫描修补(Virtualbox),CPU硬件辅助(KVM);(2)类虚拟化,修改Guest OS的源代码,让它意识到自己运行于虚拟化环境下,当要执行非特权敏感代码时,主动通过heypercall,交由VMM来处理。(Xen)

2. 什么是内存虚拟化?
内存虚拟化的作用是使Guest OS中的虚拟地址能够正确映射到宿主机的物理地址上。
Guest OS维护着一套页表机制,负责将Guset Virutal Address映射到Guest Physical Address;
VMM维护着另一套也表机制,负责将所有虚拟机的Guest Physical Address映射到Machine Physical Address;
用户程序需要内存取数据时,需要Guest 页表来计算GPA= f(GVA),然后VMM页表来计算MPA=g (GPA),这样就好了。可是这个计算过程是由硬件MMU来完成的,而MMU只知道计算一次。

实现该目的 思路是:由VMM来计算两次映射f()和g(),并把由复合映射fg()生成的页表写入到MMU中,这样就ok;
解决方法有:(1)MMU类虚拟化(xen),当Guest OS需要申请一个新页面时,VMM为其申请,并将该页面设置为只读,此后G OS每次需要修改页表时,就被VMM截获,VMM根据自己维护的g(),将该页表项中的GPA替换成MPA,并将其写入MMU中,这样MMU就能够直接从GVA映射到MPA了。(2)影子页表(KVM)。类虚拟化中,VMM直接将fg()的结果写入到G os页表中,而影子页表,则是VMM为每个G os页表创建一个影子页表,G os页表和其在物理机上一样读写和修改,而影子页表中则是把对应的物理地址换成机器地址。并把影子页表绑定给MMU。(3)EPT。

3. 什么是I/O虚拟化?
I/O虚拟化的作用是在G os要进行I/O操作时,不能让其直接使用真实设备。需要由VMM来统一管理各个G os的使用情况。
解决方法有:(1)设备完全模拟(QEMU);(2)前端/后端(xen);(3)直接划分(Intel-VTd,IOMMU)
  评论这张
 
阅读(170)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017