虚拟机器

虚拟机（virtual machine），在计算机科学中的体系结构里，是指一种特殊的软件，可以在计算机平台和终端用户之间建立一种环境，而终端用户则是基于虚拟机这个软件所建立的环境来操作其它软件。虚拟机（VM）是计算机系统的仿真器，通过软件模拟具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统，能提供物理计算机的功能。
有不同种类的虚拟机，每种虚拟机具有不同的功能：- 系统虚拟机（也称为全虚拟化虚拟机）可代替物理计算机。它提供了运行整个操作系统所需的功能。虚拟机监视器（hypervisor）共享和管理硬件，从而允许有相互隔离但存在于同一物理机器上的多个环境。现代虚拟机监视器使用虚拟化专用硬件（主要是主机CPU）来进行硬件辅助虚拟化。- 程序虚拟机 被设计用来在与平台无关的环境中执行计算机程序。

**定义**
虚拟机最初由波佩克NoteTag|Gerald J. Popek，美国计算机科学家，曾提出虚拟机的实现需求，通称波佩克与戈德堡虚拟化需求。与戈德堡定义为有效的、独立的真实机器的副本。当前包括跟任何真实机器无关的虚拟机。
例子：
用Java编写的程序可以通过对Java运行环境（JRE）软件发命令获得服务，取得期望的结果。透过提供这种服务，JRE起到了虚拟机的作用。程序不必为特定的操作系统或硬件编写。
虚拟机根据它们的运用和与直接机器的相关性分为两大类。「系统虚拟机」提供一个可以运行完整操作系统的完整系统平台。「程序虚拟机」则为运行单个计算机程序设计，这意味它支持单个进程。虚拟机的一个本质特点是运行在虚拟机上的软件被局限在虚拟机提供的资源里，也就是说它不能超出虚拟世界。「作业系统层虚拟化」不提供完整作业系统环境，将母机内核分给多个独立空间的应用程式，不同于系统虚拟机需要运行完整作业系统，也不像程序虚拟机运行特定程式语言。

**系统虚拟机**
VirtualBox
例如：VirtualBox、VMware Workstation

**程序虚拟机**
例如：Java虚拟机（JVM）

**作业系统层虚拟化**
例如：Docker

**技术（硬件的模拟）**
基于这种虚拟机，用户可以运行任何操作系统，比如可以在他们“个人的”虚拟电脑上运行两个不同的操作系统，这也被称为“访客”（guests）。这样的话，新版的实验性操作系统就可以与旧版的较稳定版本一同在单独的虚拟机上运行。这个过程甚至可以重复（recursive）；IBM就在运行于旧版的虚拟机上的虚拟机上调试它新版的虚拟机操作系统——VM。
这个概念的一个早期使用者就是IBM大型计算机上的「VM/CMS time-sharing」产品，该产品使用的交互式计算单用户操作系统——CMS（Conversational Monitor System），相对来说比较简单，运行于VM上。通过这种方式，CMS编写起来就比较简单，就好像只有它一个在运行一样，VM操作系统就在幕后提供多任务以及资源管理服务。
当然，不是每个VM用户都必须运行CMS；有些用户选择在一个或者多个虚拟机上运行某种「OS/360」（或者「MVS」），来提供传统上的批处理任务。今天，IBM大型机还在使用VM，许多虚拟机上运行的是Linux操作系统。
「VMware」、「TwoOStwo」、「SVISTA」软件包在现代电脑上都在处理类似截获硬件访问，模拟除了处理器以外的任何主板上的器件的事情。
「plex86」属于另外一种情况，它使用特定的打过补丁的内核，只能运行于「Linux」下，而且只能在其之上运行它。因此，它不是仿真处理器，它利用「bochs」来仿真主板设备。
现代电脑使用的「x86处理器架构」其实并不能满足Popek和Goldberg虚拟化要求。很明显，这种架构缺少所有特权机器指令都会产生异常的模式，而这种模式可以做到单指令的虚拟化。这导致「VMware」或类似的「x86虚拟软件」必须动态地重新编译特权模式代码。这种虚拟技术和运行于如「IBM System/370」、「Motorola MC68020」的原生态可虚拟架构上的「VM」相比，就会多出一些性能上的开销。Intel及AMD已经为自己的处理器/晶片组产品加入硬体虚拟化功能，Intel有Intel VT-x（CPU虚拟化）及Intel VT-d（IO虚拟化），AMD有AMD SVM（CPU虚拟化）及IOMMU（IO虚拟化）。

**虚拟机器列表**

**虚拟软体的更多描述**
下列的软体产品可以用来虚拟硬体，故可用于各种作业系统之上。- 是一种硬体抽象层。- KVM是一种Linux kernel模组，可以修正QEMU program使之可使用硬体虚拟实境（hardware virtualization）。- LLVM是一种新的动态编译平台。

**虚拟机器比较**
下面的表格比较了一些虚拟机软件的基本信息。请注意，这里说的是系统虚拟机。Java虚拟机之类的程序虚拟机不算在内。
}
太阳计算机系统公司
UltraSPARC T1，UltraSPARC T2
兼容
Solaris
Solaris，Linux，FreeBSD

OpenVZ
社区项目，SWsoft支持
Intel x86，x86-64，IA-64，PowerPC64，SPARC/64
Intel x86，x86-64，IA-64，PowerPC64，SPARC/64
Linux
各种Linux发行版
GPL
Oracle VM
甲骨文公司
Intel x86，x86-64，Intel VT-x
Intel x86，x86-64，Intel VT-x
无（裸机安装）
Microsoft Windows，Oracle Enterprise Linux，Red Hat Enterprise Linux
免费，商业
Parallels Desktop（曾用名：Parallels Workstation）
Parallels 公司
x86，x86-64，Intel VT-x
x86，x86-64
MacOS， Chrome OS
MacOS，Windows，Linux，FreeBSD，OS/2，eComStation，MS-DOS，Solaris，和其他大多数的操作系统
私有
PearPC
Sebastian Biallas
x86，x86-64，PowerPC
PowerPC
Windows，Linux，Mac OS X，NetBSD
Mac OS X，Darwin，Linux
GPL
QEMU
Fabrice Bellard（其他开发者帮助）
x86，x86-64，IA-64，PowerPC，Alpha，SPARC 32 and 64，ARM，S/390，M68k
x86，x86-64，ARM，SPARC 32 and 64，PowerPC，MIPS
Windows，Linux，Mac OS X，Solaris，FreeBSD，OpenBSD，BeOS
经常变化 date=20210302224557 
GPL/LGPL
QEMU（kqemu模块）
Fabrice Bellard
Intel x86，x86-64
Intel x86，x86-64
Linux，FreeBSD，OpenBSD，Solaris，Windows
经常变化 date=20210302224557 
GPL/LGPL
QEMU（qvm86模块）
Paul Brook
x86
x86
Linux， NetBSD date=20210513075243 ，Windows
经常变化
GPL
SimNow
AMD
x86-64
x86-64
Linux（64位），Windows（64位）
Linux，Windows（32位和64位）
AMD公司专有

太阳计算机系统公司
x86-64，SPARC
x86-64，SPARC
无：裸机执行
Windows XP & 2003 Server（仅x86-64），Linux，Solaris
GPL v3
Oracle VirtualBox
甲骨文公司
x86，x86-64，VT-x，AMD-V
x86，（x86-64仅在VirtualBox 2及x86-64主机上）
Windows，Linux，Mac OS X（Intel），Solaris, FreeBSD
DOS，Windows，Linux，OS/2，FreeBSD，Solaris
GPL v2；完整版本中的额外特性是专有的（免费供个人与教育机构使用和评价）

（其他开发者帮助）
x86，x86-64，PowerPC
x86，x86-64，PowerPC
Linux
Linux
GPL v2
Virtual Iron platform 3.1
Virtual Iron（已于2009年5月13日被甲骨文公司收购）
x86 VT-x，x86-64 AMD-V
x86，x86-64
无：裸机执行
Windows，Red Hat，SuSE
完整的产品是私有的 date=20070928061814 ；几个组成部分是GPL v2 date=20081121071908 
Virtual PC 2007
Microsoft
x86，x86-64
x86
Windows Vista（商业版，企业版，旗舰版），XP Pro，XP Tablet PC版
DOS，Windows，OS/2，Linux（Suse，Xubuntu），OpenSolaris（Belenix）
私有（从2006年7月起免费）
Virtual Server 2005 R2
Microsoft
Intel x86，x86-64
Intel x86
Windows 2003，XP
Windows NT，2000，2003，Linux（Red Hat and SUSE）
私有（免费）
SWsoft
x86，IA-64，x86-64
x86，IA-64，x86-64
Linux & Windows
各种Linux发行版；Windows
私有
VMware ESXi
VMware
x86，x86-64
x86，x86-64
无：裸机安装
Windows，Red Hat，SuSE，Ubuntu，Netware，Solaris，FreeBSD
私有
VMware Fusion
VMware
x86，Intel VT-x
x86，x86-64
Mac OS X（Intel）
Windows，Linux，Netware，Solaris
私有
VMware Server（不再维护）
VMware
x86，x86-64
x86，x86-64
Windows，Linux
DOS，Windows，Linux，FreeBSD，Netware，Solaris，虚拟设备
私有（免费）
VMware Workstation Pro
VMware
x86，x86-64
x86，x86-64
Windows，Linux
DOS，Windows，Linux，FreeBSD，Netware，Solaris，Darwin，虚拟设备
私有
VMware Workstation Player
VMware
x86，x86-64
x86，x86-64
Windows，Linux
DOS，Windows，Linux，FreeBSD，Netware，Solaris，Darwin，虚拟设备
私有（免费）
Xen
英国剑桥大学，Intel，AMD
x86，x86-64
x86，x86-64
NetBSD，Linux，Solaris
Linux，Solaris，Windows XP & 2003 Server（需要3.0版和Vanderpool或Pacifica），九号计划，FreeBSD
GPL
Proxmox VE
Proxmox date=20210514053053 
x86-64

无：裸机安装
Windows，Linux
免费、付费 都有
名称
作者
主CPU
目标CPU
主系统
目标系统
许可

**注释**

**参考文献**

**外部连结**
  The Reincarnation of Virtual Machines, Article on ACM Queue by Mendel Rosenblum, Co-Founder, VMware-  Xen

**参见**
 QEMU- VirtualBox- VMware- Xen- Virtual PC- Docker