虛擬機器

虛擬機（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