虛擬機器

虚拟机（），在计算机科学中的体系结构裡，是指一种特殊的软件，可以在计算机平台和終端用戶之间建立一种环境，而終端用戶则是基于虚拟机这个软件所建立的环境来操作其它软件。虚拟机（VM）是计算机系统的仿真器，通过软件模拟具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统，能提供物理计算机的功能。

有不同种类的虚拟机，每种虚拟机具有不同的功能：

 系统虚拟机（也称为全虚拟化虚拟机）可代替物理计算机。它提供了运行整个操作系统所需的功能。虚拟机监视器（hypervisor）共享和管理硬件，从而允许有相互隔离但存在于同一物理机器上的多个环境。现代虚拟机监视器使用虚拟化专用硬件（主要是主机CPU）来进行硬件辅助虚拟化。
 程序虚拟机 被设计用来在与平台无关的环境中执行计算机程序。

 定义 
虚拟机最初由波佩克与戈德堡定义为有效的、独立的真实机器的副本。当前包括跟任何真实机器无关的虚拟机。

例子：
用Java编写的程序可以通过对Java运行环境（JRE）软件发命令获得服务，取得期望的结果。透过提供这种服务，JRE起到了虚拟机的作用。程序不必为特定的操作系统或硬件编写。

虚拟机根据它们的运用和与直接机器的相关性分为两大类。「系統虚拟机」提供一个可以运行完整操作系统的完整系统平台。「程序虚拟机」則为运行单个计算机程序设计，这意味它支持单个进程。虚拟机的一个本质特点是运行在虚拟机上的软件被局限在虚拟机提供的资源里，也就是說它不能超出虚拟世界。「作業系統層虛擬化」不提供完整作業系統環境，將母機內核分給多個獨立空間的應用程式，不同於系統虛擬機需要運行完整作業系統，也不像程序虚拟机運行特定程式語言。

 系统虚拟机 
300px|thumb|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处理器架构」其实并不能满足波佩克與戈德堡虛擬化需求。很明显，这种架构缺少所有特权机器指令都会产生异常的模式，而这种模式可以做到单指令的虚拟化。这导致「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虚拟机之类的程序虚拟机不算在内。

 名称 作者 主CPU 目标CPU 主系统 目标系统 许可 CHARON Stromasys x86，x86-64 DEC PDP11，Alpha, VAX, SUN SPARC,HP3000 Windows，Linux, Solaris Solaris/SunOS，Tru64，OpenVMS，Ultrix 私有 Bochs Kevin Lawton 任何 x86，x86-64 Windows，Windows Mobile，Linux，IRIX，AIX，FreeBSD，OpenBSD，BeOS，Mac OS X，Android DOS，Windows，xBSD，Linux LGPL DOSBox Peter Veenstra和Sjoerd与社区帮助 任何 x86 Linux，Windows，Mac OS Classic，Mac OS X，BeOS，FreeBSD，OpenBSD，Solaris，QNX，IRIX，MorphOS，AmigaOS DOS GPL DOSEMU 社区项目 x86，x86-64 x86 Linux DOS GPL v2 Hercules Roger Bowler 任何 z（IBM大型計算機） Linux，Mac OS X，Solaris，Windows OS/360，OS/390，z/OS，z/Linux QPL Hyper-V 微软 x86-64+硬件辅助虚拟（AMD-V或Intel VT） x86-64，x86 Windows Server, Windows 8, Windows 8.1, Windows 10 Windows 2000，Windows 2003，Windows XP，Windows Vista，LinuxWindows 7，Windows 8Windows 8.1，Windows 10，Windows Server 私有（免费） KVM Red Hat Intel/AMD处理器与x86虚拟化 x86/x86-64 Linux Linux，Windows GPL v2  太阳计算机系统公司 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 经常变化  GPL/LGPL QEMU（kqemu模块） Fabrice Bellard Intel x86，x86-64 Intel x86，x86-64 Linux，FreeBSD，OpenBSD，Solaris，Windows 经常变化  GPL/LGPL QEMU（qvm86模块） Paul Brook x86 x86 Linux，NetBSD ，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 （已於2009年5月13日被甲骨文公司收购） x86 VT-x，x86-64 AMD-V x86，x86-64 无：裸机执行 Windows，Red Hat，SuSE 完整的产品是私有的 ；几个组成部分是GPL v2  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月起免费）  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  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

Category:虛擬化軟體
Category:操作系统技术
Category:需要计算机科学专家关注的页面