免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 844 | 回复: 0
打印 上一主题 下一主题

虚拟化技术 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-14 23:03 |只看该作者 |倒序浏览

   

什么是虚拟化: 虚拟化是指将一台物理计算机虚拟化为一台或多台虚拟化计算机,每台虚拟计算机都拥有自己的虚拟硬件,来提供一个独立的虚拟机执行环境。

现有的虚拟机技术分类:
   指令集虚拟     如Bochs和QEMU
   硬件抽象级虚拟    如VMware、xen、Denali
   操作系统级虚拟     linux VServer
   库程序或者应用程序级虚拟   java 虚拟机

基于VMM的虚拟化分类:
完全虚拟化(full virtualization):
   和物理平台完全同质,OS感知不到运行在,无需对OS内核作任何改动
   软件辅助的完全虚拟化:基于优先级压缩和二进制代码翻译
    硬件辅助的完全虚拟化:intel VT-x技术
半虚拟化(paravirtualization):
      通过在源代码级别上修改指令以回避虚拟化漏洞,可以实现更高的性能

CPU虚拟化:
物理地址:由硬件总线地址决定的地址空间
线性地址:进程使用的地址空间,一般包含内核占用,用户占用,共享段,
          代码段,数据段等
逻辑地址:程序直接使用的地址
逻辑地址--->(分段) -->线性地址 -->(分页)->物理地址

分段和分页中的权限保护:

  段保护:
  当前权限级别(CPL):CPL描述当前代码的权限,通过CS寄存器的0,1两个bit记录,通过这两位,将CS指向的代码分为4个特权级ring0--ring3
  描述符权限级别(DPL):DPL表示段和门所具有的权限,表示该段如果被访问,CPL必须小于DPL的值
  当CPL
  
  页保护:
  页表项,页目录表项中存在一个user/supervisor位,该位为0时,对应的CPL为0,1,2时,为特权页面,对应CPL=3时为用户页面

大多数系统都存在一些指令,这些指令只能在最高特权级执行,如果在非对应特权级上运行,就会引发一个异常,处理器会陷入最高特权级,交由相关代码处理。这种指令叫做特权指令。
存在一些指令,能够访问敏感资源,(CR FLAG TLB, IDT, GDT, LDT),这些指令叫做敏感指令,显然,特权指令全部属于敏感指令。
存不存在一些敏感指令,不需要最高级特权就可以执行,是决定该体系结构能否进行虚拟化的关键,X86平台存在这样的指令,所以不属于可虚拟化架构。

陷入再模拟:能够处理所有可虚拟化架构
解释执行:逐条翻译,性能很差
扫描与修补:将即将执行的代码段进行扫描,将不可虚拟化指令用JMP指令提前置换
二进制代码翻译:开辟很大的缓冲区,将客户代码全部翻译好后再逐条执行
在X86平台上实现虚拟化的最好方法:
      陷入再模拟+扫描与修补
对于半虚拟化更简单,直接修改GUEST OS的产生敏感指令的代码,主动陷入到最高特权级hypervisor

IO虚拟化方式:
  设备接口完全模拟
  FE/BE模型,XEN将驱动分为前端驱动和后端驱动,前端驱动属于guest OS,后端属于driver domain
     




本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/99036/showart_1996285.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP