`
lucid820
  • 浏览: 38784 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

虚拟机介绍(二)

阅读更多

三、虚拟化技术

虚拟化技术是虚拟机得以实现的根本,服务器虚拟化技术逐渐成为人们关注的热点技术。

1、不同途径的虚拟化技术

根据两种常见的软件仿真虚拟化途径,可将虚拟化技术分为以下两种:完全虚拟化FVFull-Vritralization)和半虚拟化PVPara-Vritralization),这两种虚拟化技术主要以guest OS的硬件仿真程度做区分。

1)、完全虚拟化

FV是一般较常看到的作法,所有的guest OS完全不会看到实际的硬件为何,只能使用由Supervisor所提供的所有虚拟硬件

FV的安装上,因为FV模式是以完全仿真的方式进行,所以CPU必须要特别将此功能加入到CPU的核心中,因此,CPU是有特殊需求的。在IntelAMD中针对Virtual Machine所加入的功能名称不同,分别为Intel VTAMD-V

2)、半虚拟化

通过局部仿真的方式,让操作系统可以直接使用到硬件中的CPU、内存等,而不需要通过其他任何虚拟技术软件做仿真的操作虚拟机操作的时候,直接使用到底层的硬件,而不是每个OS都要通过

Hypervisor的接口,通过这种,性能上就可大为提高。

PV的安装,对CPU来说,没有特殊的要求,基本上都可以使用。

2、不同层次的虚拟化技术

根据不同层次的虚拟化方式,其中有ISA层次、硬件抽象层、操作系统层、Library API层,以及编程语言层的虚拟化技术。

1)、ISA层的虚拟化技术

该技术通常采用软件模拟指令集的方式实现。一个典型的计算机系统由处理器、内存、总线、硬盘控制器、时钟、各种I/O设备组成。ISA层的虚拟化软件的实现方式是截获客户操作系统发出的指令,并把它们翻译Host平台上的可用指令进行执行(包括处理器内部指令和IO指令)。由于这种指令的模拟方式,ISA层的虚拟化技术可以完全模拟一台真实机器所能做的一切。这种实现方式的好处在于,分离了操作系统和硬件平台的紧绑定关系。

这种虚拟化技术存在一定的性能问题,很难有广泛的应用,但它也在某些方面有着重要的应用,如在非x86平台上运行Windows系统,进行新开发的操作系统的debug工作,进行老式x86系统的兼容性测试等。

这种技术的代表性系统有:BochsQEMU

2)、硬件抽象层的虚拟化技术

这种技术利用客户系统环境和Host平台的相似性来减少理解客户系统指令的延迟。虚拟化软件进行从虚拟资源到物理资源的映射,并利用本地物理平台进行实际的计算。当虚拟系统访问关键的系统资源时,虚拟化软件接管其请求,并进行相应的处理。为了使这种机制能够有效地工作,虚拟机必须能够trap每条特权指令,并使得VMMVirtual Machine Monitor)接管进行相关的处理。这是因为,在同一个物理平台上有多个客户系统存在,这些客户系统发出特权指令希望CPU进行处理。这时把这些指令trapVMM进行处理,以免系统发生异常或冲突。此时,VMM模拟特权指令的执行,并返回处理结果给指定的客户虚拟系统,保证了各个客户虚拟系统的有效隔离。然而,x86平台并不是完全支持虚拟化的,因为某些x86特权指令在特权级不够的情况下执行,并不能方便地产生trap。对这一问题的解决方案有:一种是指令扫描结合动态指令修改的软件技术,有许多商业的虚拟化产品采用了这种方案;另一种方案是修改x86 CPU,使它支持虚拟化,也就是IntelVanderpool技术和AMDPacifica技术的目标。

硬件抽象层的虚拟化技术有着高度的客户虚拟系统的隔离性(包括客户虚拟系统之间,客户虚拟系统和Host系统之间)。这种隔离性使得在同一个物理平台上,可以同时运行不同类型的操作系统,而且它们的重启等操作不会互相影响。在用户看来,隔离性使得物理平台被划分成不同虚拟机器。由于

用户面对的是虚拟机器,用户需要更多的系统安装和配置工作。如果用户希望客户虚拟系统有和Host相同的操作系统,并只是想把多个应用系统进行分离,那么可以考虑采用操作系统层的虚拟化技术。

目前,大多数的商业服务器虚拟化产品,都是通过使用这种技术来实现高效、实用的虚拟化系统。此种虚拟化技术的代表产品是EMC公司的VMware,其他比较有影响力的产品还有:MicrosoftVirtual Server系列产品、由剑桥大学计算机实验室发起的开源虚拟机项目Xen、开源项目UMLUser Mode Linux)等。

3)、操作系统层虚拟化技术

典型的应用程序环境包括:操作系统、用户函数库、文件系统、环境设置等。如果应用系统的这些周边环境保持不变,应用程序自身是无法区分是运行在物理系统内,还是运行在虚拟系统外。操作系统层的虚拟化技术的主要思想在于,在Host操作系统上动态复制操作系统环境,以此来创建虚拟系统环境。

4)、API层虚拟化技术

API层虚拟机的典型代表是开源项目Wine,它构造了一个Windows用户态应用程序和其它操作系统之间的适配层(Adapter Layer),当这些应用程序需要在其他操作系统下调用一个Win32 API函数时,Wine将把该调用转换成相应操作系统下对该函数的模拟实现。

Wine系统在整个运行环境中起到的作用可以从三个角度理解。

a、从Windows应用程序的角度看,Wine为其提供了Windows软件运行环境的模拟,不过这并不是对处理器指令的模拟,而是对Win32 API函数的模拟。

b、从Linux及其内核的角度看,Wine形成Linux内核与Windows应用程序之间的一个中间层。它一方面为Windows应用程序提供了一套完整的动态链接库(Dynamic Link LibraryDLL),一方面将应用程序和动态链接库中对Windows的系统调用转换成具有相似语义的Linux的系统调用。

c、从Windows的动态连接库和服务进程的角度来看,WineWindows关键组件以模拟方式在Linux上实现的移植。

5)、编程语言级别的虚拟化技术

对于这个技术,我们最熟悉的就是Java虚拟机——JVMJava程序被编译成由JVM可以识别的指令形式,称为Java Bytes Code。当代码被执行时,由JVM进行解释或利用Just-In-TimeJIT)编译器在本地机器上执行。类似的编程语言级别的虚拟化技术还有Microsoft .NET CLIPerl 6Parrot

虽然有着多种层次的虚拟化技术,但目前各企业和厂商最为关注的是硬件抽象层的虚拟化技术,它也是目前最有应用潜力的虚拟化技术。

3、服务器虚拟化的硬件支持

2006年初,英特尔宣布了其初步完成的Vanderpool技术外部架构规范(EAS),并称该技术可以帮助改进未来的虚拟化解决方案。英特尔表示,将在今年把Vanderpool应用于安腾架构平台,同时还计划在台式机处理器和芯片组产品中采用该技术。

Vanderpool的核心思想是给x86 CPU的各种特权指令的执行,都增加可以进行trap的可能。Vanderpool技术使得CPU运行在两种不同的模式下,即VMX-rootVMX-non-root。这两种模式都支持0-34个特权级。客户虚拟系统运行在VMX-non-root模式,VMM运行在VMX-root模式。Vanderpool新定义了从VMX-rootVMX-non-rootVMentry和从VMX-non-root返回VMX-rootVMexit的操作。VMentryVMexit都会重新load CR3,以便VMMGuest OS有不同的地址空间。CPUVMX-non-root下执行,而执行CPUIDmov CR3RDMSRWDMSR等指令会无条件地触发VMexit;而其他的指令、中断和异常是否触发Vmexit,则根据VMCS的内容进行判断。

VMentry会先加载客户系统状态区域的VMCS,然后进入VMX-non-root,并且立即引发中断。这样,VMM就可以通过对IDT的修改,在系统进入VMX-non-root的第一时间触发事件,以便模拟事件的传递。

VMexit会保存CPU状态到客户系统状态区域,并且加载Host状态区域的信息,然后返回VMM。所有的VMexit使用公共的进入VMMEntry Point,并且每次VMexit都会提供引发VMexit的详细原因,以便VMM进行相应的处理。

AMD在虚拟化技术方面的Pacifica技术规范,是AMD计划用于其64位产品中的虚拟化技术。该技术将用于基于x86架构的服务器、台式机和笔记本电脑等系列产品。AMD表示,通过将Pacifica技术预先展示给虚拟化ISV和分析师团队,并通过持续的协作,最终可以在托管基于系统管理程序(hypervisor)的虚拟解决方案方面,向Pacifica用户提供更丰富的功能集和更高性能模型。

从技术角度看,不论是Vanderpool技术外部架构规范,还是Pacifica技术规范,它们强调的核心功能都是RISC处理器早就实现了分区功能,即基于该技术平台实现在独立分区中高效运行多个操作系统和应用程序,使一个计算机系统像多个虚拟系统一样运行。

 

 

 

分享到:
评论

相关推荐

    深入java虚拟机第二版

    深入java虚拟机第二版 不是很清晰 但还能看 第1-4章介绍了java虚拟机的体系结构,包栈、堆,方法区、执行引擎等; 第5-20章深入介绍了java的内部细节,垃圾回收、java安全模型、java的连接模型和动态扩张机制,...

    虚拟机桥接及虚拟机存储-第二版

    详细介绍了虚拟机桥接的方法。 主机硬件要求 硬盘至少两块:每块300G以上,采用raid1方式做镜像 网卡两块:eth0和虚拟机进行桥接,eth1作为主机网卡使用 虚拟主机空间:为虚拟机分配100G空间

    实战Java虚拟机.pdf_java_

    随着越来越多的第三方语言(Groovy、Scala、JRuby等)在Java虚拟机上运行,Java...《实战Java虚拟机——JVM故障诊断与性能优化》将通过200余示例详细介绍Java虚拟机中的各种参数配置、故障排查、性能监控以及性能优化。

    深入JAVA虚拟机第二版.pdf 目录

    第1章 Java体系结构介绍 第2章 平台无关 第3章 安全 第4章 网络移动性 第5章 Java虚拟机 第6章 Java class文件 第7章 类型的生命周期 第8章 连接模型 第9章 垃圾收集 第10章 栈和局部变量操作 第11章 类型转换 第12...

    java虚拟机规范高清中文版本(java SE 8版本)

    第1章 :简单地介绍了Java虚拟机的历史并吹捧了←_← 一下Java的平台无关性(一次编译,到处运行); 第2章:概览Java虚拟机整体架构; 第3章:介绍如何将Java语言编写的程序转换为虚拟机指令集; 第4章:定义...

    Java虚拟机规范中文版

     从1999年4月出版的《Java虚拟机规范(第二版)》至今,已经超过12年,虽然此规范在JDK 5发布的时候作了较大的更新,但却始终没有发布完整的规范。在今年6月28日,最新的《Java虚拟机规范(Java SE 7版)》终于完成...

    android dalvik虚拟机结构及机制剖析 第二卷

    android dalvik虚拟机结构及机制剖析 第二版,详细介绍Android虚拟机值得阅览

    jvm虚拟机规范 pdf 经典

    详细介绍了jvm虚拟机规范,很好 第一章引言 第二章 java概念 第三章 java虚拟机结构 第四章 class文件格式 第五章 常熟池解析 第六章 java虚拟机指令集 第七章 为java虚拟机编译 第八章 线程和锁 第九章 优化 第十章...

    Lua虚拟机指令集介绍

    Lua虚拟机指令集介绍: Lua指令基础,lua二进制程序块,指令记法,加载常量,Upvalue和全局变量,表指令,算术和字符串指令,跳转和调用,关系和逻辑指令,循环指令,表创建,创建和结束闭包等

    深入JAVA虚拟机第二版(中文版)

    本书深入详细的介绍了Java体系结构及其内部细节,了解这些内容才能更快速的编写更高效的程序!理解了Java虚拟机,深入细致的了解了Java技术底层,才能使自己的程序发挥Java技术的优势。 本书详细解释了JVM的体系结构...

    飞信虚拟机(支持使用Access数据库的C#程序)

    二、飞信虚拟机的引导程序 也可以自己写个启动文件来启动你编写的C#程序。由于启动文件要在win32上运行,所以就用了VC++6来进行写程序了,使用该启动程序来进行启动外部程序(我们的.net程序)。这里包含了源代码。...

    深入Java虚拟机(原书第2版).pdf【附光盘内容】

    第1章 java体系结构介绍 1.1 为什么使用java 1.2 网络带来的挑战和机遇 1.3 体系结构 1.3.1 java虚拟机 1.3.2 类装载器的体系结构 1.3.3 java class文件 1.3.4 java api 1.3.5 java程序设计...

    企业级虚拟机应用实战:玩转VMware+VI、Hyp (第二部分)

    分卷下载的第二部分。 企业级虚拟机产品,包括了VMware VI/vSphere、微软Hyper-V R2及Citrix Xen的介绍,安装,配置等入门级别知识

    【带书签】Java虚拟机规范(Java SE 7).pdf

    《Java虚拟机规范(Java SE 7版)》共7章,第1章从宏观的角度介绍了Java虚拟机与Java的关系与发展历程。第2章概览 了Java虚拟机整体架构,包括class文件格式、数据类型、原始类型、引用类型、运行时数据区、栈帧、浮点...

    实战JAVA虚拟机++JVM故障诊断与性能优化.pdf

    《实战Java虚拟机——JVM故障诊断与性能优化》将通过200余示例详细介绍Java虚拟机中的各种参数配置、故障排查、性能监控以及性能优化。 《实战Java虚拟机——JVM故障诊断与性能优化》共11章。第1~3章介绍了Java...

    深入Java虚拟机

    第1章 Java体系结构介绍 1.1 为什么使用Java 1.2 网络带来的挑战和机遇 1.3 体系结构 1.3.1 Java虚拟机 1.3.2 类装载器的体系结构 1.3.3 Java class文件 1.3.4 Java API 1.3.5 Java程序设计...

    深入Java虚拟机(原书第二版)Bill Venners 著

    本书深入详细地介绍了Java体系结构及其内部细节,了解这些内容才能更快速地编写更高效的程序。

Global site tag (gtag.js) - Google Analytics