虛擬機器





























虚拟机英语:virtual machine),在计算机科学中的体系结构裏,是指一种特殊的软件,可以在计算机平台和終端用戶之间建立一种环境,而終端用戶则是基于这个軟體所建立的环境来操作软件。




目录






  • 1 定义


    • 1.1 系统虚拟机


    • 1.2 程序虚拟机


    • 1.3 作業系統層虛擬化




  • 2 技术(硬件的仿真)


  • 3 虛擬機器列表


    • 3.1 虛擬軟體的更多描述


    • 3.2 虛擬機器比較




  • 4 注釋


  • 5 参考文献


  • 6 外部連結


  • 7 参见





定义


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


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


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



系统虚拟机





VirtualBox


例如:VirtualBox



程序虚拟机


例如: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虛擬化)。



虛擬機器列表



虛擬軟體的更多描述


下列的軟體產品可以用來虛擬硬體,故可用於各種作業系統之上。




  • Adeos英语Adeos是一種硬體抽象層。


  • 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英语Hyper-V

微软

x86-64+硬件辅助虚拟(AMD-V或Intel VT)

x86-64,x86

Windows Server 2008, Windows Server 2012, Windows 8

Windows 2000,Windows 2003,
Windows 2008,Windows XP,
Windows Vista,Linux
私有(免费)

KVM

Red Hat
Intel/AMD处理器与x86虚拟化
x86/x86-64
Linux
Linux,Windows
GPL v2

Logical Domains英语Logical Domains

太阳计算机系统公司

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 Workstation英语Parallels Workstation
Parallels公司
x86,Intel VT-x
x86
Windows,Linux
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
经常变化[1]
GPL/LGPL

QEMU(kqemu模块)

Fabrice Bellard
Intel x86,x86-64
Intel x86,x86-64
Linux,FreeBSD,OpenBSD,Solaris,Windows
经常变化[2]
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公司专有

Sun xVM Server英语Sun xVM Server

太阳计算机系统公司
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;完整版本中的额外特性是专有的(免费供个人与教育机构使用和评价)

User Mode Linux英语User Mode Linux

Jeff Dike英语Jeff Dike(其他开发者帮助)
x86,x86-64,PowerPC
x86,x86-64,PowerPC
Linux
Linux
GPL v2

Virtual Iron英语Virtual Iron Virtual Iron 3.1
Virtual Iron软件公司(已被Oracle收购May 13, 2009)
x86 VT-x,x86-64 AMD-V
x86,x86-64
无:裸机执行
Windows,Red Hat,SuSE
完整的产品是私有的[3];几个组成部分是GPL v2[4]

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英语Microsoft Virtual Server 2005 R2

Microsoft
Intel x86,x86-64
Intel x86
Windows 2003,XP
Windows NT,2000,2003,
Linux(Red Hat and SUSE)
私有(免费)

Virtuozzo英语Virtuozzo

SWsoft
x86,IA-64,x86-64
x86,IA-64,x86-64
Linux & Windows
各种Linux发行版;Windows
私有

VMware ESX Server英语VMware ESX Server

VMware
x86, x86-64
x86, x86-64
无:裸机安装
Windows,Red Hat,SuSE,Ubuntu,
Netware,Solaris,FreeBSD
私有
VMware ESXi Server

VMware
x86,x86-64
x86,x86-64
无:裸机安装(嵌入式)
Windows,Red Hat,SuSE,Ubuntu,
Netware,Solaris,FreeBSD
私有

VMware Fusion英语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 6.0

VMware
x86,x86-64
x86,x86-64
Windows,Linux
DOS,Windows,Linux,FreeBSD,
Netware,Solaris,Darwin,虚拟设备
私有

VMware Player 2.0

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
主系统
目标系统
许可


注釋




  1. ^ Gerald J. Popek,美国计算机科学家,曾提出虚拟机的实现需求,通称波佩克与戈德堡虚拟化需求。



参考文献





  1. ^ Smith, Daniel E.; Nair, Ravi. The Architecture of Virtual Machines. Computer (IEEE Computer Society): 32–38. doi:10.1109/MC.2005.173 (英语).  引文使用过时参数coauthors (帮助)




外部連結




  • The Reincarnation of Virtual Machines, Article on ACM Queue by Mendel Rosenblum, Co-Founder, VMware(英文)


  • Xen(英文)



参见




  • QEMU

  • VirtualBox

  • VMware

  • Xen

  • Virtual PC

  • Docker




Popular posts from this blog

How did Captain America manage to do this?

迪纳利

南乌拉尔铁路局