关闭

虚拟机技术综述-1 引言

标签: 虚拟机平台服务器编译器优化语言
1547人阅读 评论(0) 收藏 举报

 

     综 述
----刘黎明(liuliming2008@126.com
 
1 引言
   现代的计算机系统是极其复杂的机器系统,管理计算机系统复杂性的关键技术之一是用良好的界面将其划分成若干抽象层。这些抽象层的存在可以使底层的细节被忽略或者简化,这样可以使高层的设计带来简化。一个简单的计算机抽象层次如图1 所示。这些抽象层组成一个层状结构,底层使用硬件,高层使用软件实现。在硬件层,所有的部件都是物质的,有着真实的属性。这些组件之间定义了接口,以便他们能够在物理上互相连接。在物理之上的各层中,部件是逻辑上的,它们没有物理属性。广义上说,计算机硬件之上的每一层对于其上层来说都是虚拟机。
图1 计算机抽象层次图
计算机上的软件是由一个机器系统来执行的。从操作系统角度看,如图2,整个机器系统是由底层来支撑的,系统可见的是指令集系统,底层的硬件可能包括一个或多个处理器、内存、输入输出设备等。这个系统是一个完整的执行环境,这个环境可以支持若干个进程,这些进程共享一个文件系统以及其他的输入输出设备。这个系统申请物理内存和输入输出这一进程使用,并且允许进程通过操作系统与这些资源交互。所以从系统观点看,机器就是由底层硬件构成的,指令集系统提供了该系统和机器之间的接口。但是机器这个词语不只是可以用来描述计算机的硬件结构。从进程的角度看,如图3 ,进程可见的是应用程序二进制接口,机器由内存地址空间和用户级指令构成。IO设备是通过操作系统来访问的,并且进程访问输入输出设备的唯一方式是通过操作系统调用。所以从进程的角度看,机器就是操作系统和用户可见的硬件。应用程序二进制接口提供了进程和机器之间的接口,它包括操作系统调用和访问硬件的部分指令。
 
图2 指令集
 
图3 应用程序二进制接口
 
  虚拟机是在真实机器之上的一个软件实现,该实现能够支持被虚拟的机器的体系结构。虚拟机技术广泛地被操作系统开发者、程序语言设计者、编译器设计者和硬件设计者所采用。虚拟机能够像被它虚拟的机器一样执行软件,这个软件可能是一个进程或者一个完整的系统,这取决于虚拟机的类型。虚拟机可以拥有底层真实机器不同的资源,这种不同可以在数量或者类型上不同。例如,虚拟机器可能比底层真实机器拥有数目不一样的处理器并且这些处理器能够执行不同的指令集。通常,构造虚拟机的过程需要首先考虑两个方面:1虚拟资源或者状态到真实资源的映射2用底层的机器指令或系统调用实现虚拟机的指令或者系统调用。
在一个完整的虚拟机系统中,底层的平台称作宿主平台,运行在操作系统级虚拟机之上的软件称为客户,虚拟机本身模拟的平台称为目标平台。如图4所示,对客户来说,底层的虚拟机软件在宿主平台上模拟了目标平台,这样原来只能在目标平台上运行的客户就能间接在宿主平台上运行。
图4 虚拟机系统
 
从虚拟机在计算机系统中所处的位置和设计目的看,可以把虚拟机分为硬件虚拟机、应用程序虚拟机和操作系统级虚拟机。硬件虚拟机主要提供模拟真实的硬件的能力。应用程序虚拟机提供支持单独的进程的能力,位于应用程序二进制接口层,在操作系统和硬件混合层之上,模拟用户层指令和操作系统调用。
  操作系统级虚拟机提供执行用户级程序的能力,一般由能实现操作系统级虚拟机的软件来构建。操作系统级虚拟机能够将一个真实的服务器划分成若干个虚拟的服务器,每个服务器看起来都是一个功能基本完整的服务器,能运行独立的操作系统,并且能够独立地重新启动,所有的虚拟机共享同一个操作系统核心。
----刘黎明(liuliming2008@126.com
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:156313次
    • 积分:2530
    • 等级:
    • 排名:第14572名
    • 原创:94篇
    • 转载:4篇
    • 译文:1篇
    • 评论:19条
    最新评论