Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1379508
  • 博文数量: 370
  • 博客积分: 10654
  • 博客等级: 中将
  • 技术积分: 4396
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 15:44
文章分类

全部博文(370)

文章存档

2012年(36)

2011年(195)

2010年(139)

分类: 虚拟化

2011-07-23 20:28:37

       根据虚拟机工作在体系结构中的位置不同可以将虚拟机分为三类。

       基于运行库的虚拟机基于操作系统的虚拟机基于硬件的虚拟机

       基于运行库的虚拟机实现起来比较简单,但模拟的效果也比较简单,功用少,只能运行一个单独的虚拟机,典型的例子有Cygwin、Wine。

       基于操作系统的虚拟机有Linux-VServer、OpenVZ、Virtuozzo 等,这种方法实现的所有虚拟机共用同一个操作系统内核,虽然能支持更多数量的虚拟机,扩展性好,但无法实现故障隔离,一个虚拟机的崩溃会导致其他虚拟机的崩溃,系统整体的稳定性较差。而在硬件和操作系统之间引入中间层,可以实现功能更强大的基于硬件虚拟机。

       从实现虚拟机的级别来区分,虚拟机可分为进程级虚拟机和系统级虚拟机。基于API 和系统调用模拟的虚拟机为进程级虚拟机。在这类虚拟机上只可以运行应用软件。基于硬件抽象层的虚拟机也称为系统虚拟机。这类虚拟机模拟了完整的系统硬件资源,包括完整的CPU 指令集,以及I/O 设备。因此在系统虚拟机上可以安装、运行操作系统。系统虚拟机具有优异的性能和更加强大的功能,在实践中有着更广泛的用途。

        根据虚拟机架构的不同以及是否需要修改运行在虚拟机之上的Guest OS内核,可以将虚拟机分为全虚拟化和半虚拟化。

        采用全虚拟化技术的VMM 可以向虚拟机虚拟出和真实硬件完全相同的硬件环境,因此任何已有的操作系统都可以不经修改直接运行在全虚拟化的VMM上。

       全虚拟化技术的优点在于不需要修改Guest OS 的内核,所以兼容性较好,但是以牺牲性能为代价。这是因为操作系统不知道自己运行在虚拟机之上,所以要以纯软件方法弥补x86 固有的虚拟化漏洞,难度比较大,目前大多数全虚拟化VMM 采用“代码扫描”和“动态指令重写”的方法克服这个困难,这种方法最大的弊端就是运行开销较大。采用全虚拟化方法的系统有VMware和VIrtual PC.在有了硬件对虚拟化的支持之后,全虚拟化的实现变得简单,性能也得到了提高,所以硬件支持下的全虚拟化是虚拟化技术的主流方向。

       准虚拟化需要修改Guest OS 的内核,让操作系统知道自己运行在虚拟机中,因此操作系统可以和虚拟机进行配合,对有缺陷的指令进行替换,避免了如“动态指令重写”这种开销较大的方法,性能方面得到了很大提升。但是准虚拟化的兼容性不够好,由于需要修改操作系统内核,不开源的操作系统就无法移植到准虚拟化的VMM平台上。准虚拟化的主要例子就是Xen。

      

阅读(2658) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~