虚拟机技术综述-1 引言

原创 2007年10月05日 03:08:00

 

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

相关文章推荐

Java虚拟机:引言

对于java程序员来说,了解JVM的一些原理和执行过程还是挺有用的,通过JVM的学习,我们对java中的反射机制、多线程等就会有更清楚的认识。同时有利于调bug和优化代码。首先我们要明白,不管什么语言...

联想Y470 非虚拟机安装苹果Mac OS X Mavericks 10.9.1教程详解(文字+图片),通俗易懂亲自动手——序列一之综述简介,硬盘分区

最近小编更新Linux系统后发现无法启动,于是乎就重新

虚拟机监控系统的设计与实现 (一) 综述

最近有个云计算IaaS平台虚拟机状态监控的需求。此平台基于OpenStack,各项需求的定制和开发已经基本完成,现在需要一套系统来完成此平台中各虚拟机状态的监控。包括虚拟机信息的采集、信息的存储以及虚...

Dalvik技术揭秘之二Dalvik虚拟机的入口点

要分析Dalvik虚拟机的代码,到底从那里开始比较好呢?从事软件开发人员都知道,每个程序都有生命周期,都有出生点,也就是程序的进入位置。像C语言里控制台程序是使用main函数作为入口点的,java程序...

linux容器技术-lxc创建虚拟机的执行过程分析

1. lxc介绍     容器是一种轻量级的虚拟化技术,与qemu/kvm、VMware、Xen等完全的虚拟化方案相比,LXC更像是加强的“chroot”,因为LXC不但没有没有对硬件设...

java虚拟机以及JIT技术简要笔记

本文来自《Thinking in java 3th》 在虚拟机JVM准备清除一个对象所占用的内存之前,总是先调用finalize()方法,在下次虚拟机进行内存清理的时...

动态调试与静态反汇编合一,运用虚拟机技术创建可逆向运行的调试器

标 题: 【原创】动态调试与静态反汇编合一,运用虚拟机技术创建可逆向运行的调试器 作 者: hjonline 时 间: 2010-08-22,21:00:53 链 接: http://bbs.p...
  • lionzl
  • lionzl
  • 2012-09-26 09:42
  • 1376

国航OA项目技术总结(二)关于JVM虚拟机中对象的创建,手机端提速的重要优化

由于JVM虚拟机对对象的销毁,程序员是不知道的;而且手机的配置肯定不如PC机,就算PC机里程序运行得多顺畅,手机里的运行速率还是不敢保证。 针对对象的问题,尽量将一次能创建的对象只创建一次:...

虚拟机检测技术剖析

来自:http://hi.baidu.com/pythond/blog/item/ad2e441714ec9316962b4344.html 虚拟机检测技术剖析 2010-09-08 9:...

【读书小结】—— 基于虚拟机的启发式扫描反病毒技术

既然谈得是虚拟机的启发式扫描反病毒技术,那么就该介绍下虚拟机、启发式扫描的概念。 虚拟机(VM),在反病毒界被称为通用解密器。具体做法是:用程序代码虚拟一个CPU来,同样也虚拟CPU的各个寄存器,甚...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)