虛擬機器

维基百科,自由的百科全书
跳转至: 导航搜索

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

定义[编辑]

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

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

虚拟机根据它们的运用和与直接机器的相关性分为两大类。系统虚拟机提供一个可以运行完整操作系统的完整系统平台。相反,程序虚拟机为运行单个计算机程序设计,这意謂它支持单个进程。虚拟机的一个本质特点是运行在虚拟机上的软件被局限在虚拟机提供的资源里——它不能超出虚拟世界。

系统虚拟机[编辑]

例如:VirtualBox

程序虚拟机[编辑]

例如:Java虛擬機(JVM)

技术[编辑]

硬件的仿真[编辑]

基于这种虚拟机,用户可以运行任何操作系统,比如可以在他们“个人的”虚拟电脑上运行兩個不同的操作系统(也被称为“访客(guests)”)。这样的话,新版的实验性操作系统就可以与旧版的较稳定版本一同在单独的虚拟机上运行。这个过程甚至可以重复(recursive);IBM就在运行于旧版的虚拟机上的虚拟机上调试它新版的虚拟机操作系统,VM

这个概念的一个早期使用者就是IBM大型计算机上的VM/CMS time-sharing产品,该产品使用的交互式计算单用户操作系统,CMS,相对来说比较简单,运行于VM上。通过这种方式,CMS编写起来就比较简单,就好像只有它一个在运行一样,VM操作系统就在幕后提供多任务以及资源管理服务。

当然,不是每个VM用户都必须运行CMS;有些用户选择在一个或者多个虚拟机上运行某种OS/360(或者MVS),来提供传统上的批处理任务。今天,IBM大型机还在使用VM,许多虚拟机上运行的是Linux操作系统。

VMwaretwoOStwo以及SVISTA软件包在现代電腦上都在处理类似截获硬件访问,模拟除了处理器以外的任何主板上的器件的事情。

plex86属于另外一种情况,它使用特定的打过补丁的内核,只能运行于Linux下,而且只能在其之上运行Linux。因此,它不是仿真处理器,它利用bochs来仿真主板设备。

现代電腦使用的x86处理器架构其实并不能满足Popek和Goldberg虚拟化要求。很明显,这种架构缺少所有特权机器指令都会产生异常的模式,而这种模式可以做到单指令的虚拟化。这导致VMware或类似的x86虚拟软件必须动态地重新编译特权模式代码。这种虚拟技术和运行于如IBM System/370、Motorola MC68020的原生态可虚拟架构上的VM相比,就会多出一些性能上的开销。IntelAMD都声称计划给未来的x86处理器加入x86虚拟化能力。

非原生系統的模擬[编辑]

虛擬機器列表[编辑]

虛擬軟體的更多描述[编辑]

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

  • Adeos是一種硬體抽象層
  • KVM是一種Linux kernel模組,可以修正QEMU program使之可使用硬體虛擬實境(hardware virtualization)。
  • LLVM是一種新的動態編譯平台。

虛擬機器比較[编辑]

下面的表格比较了一些虚拟机软件的基本信息。请注意,这里说的是系统虚拟机Java虚拟机之类的程序虚拟机不算在内。

名称 作者 主CPU 客户CPU 主系统 客户系统 许可
CHARON Stromasys x86,x86-64 DEC PDP11,Alpha, VAX, SUN SPARC,HP3000 WindowsLinux, Solaris Solaris/SunOS,Tru64,OpenVMS,Ultrix 私有
Bochs Kevin Lawton 任何 x86x86-64 WindowsWindows MobileLinuxIRIXAIXFreeBSDOpenBSDBeOSMac OS X 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 微软 x64+硬件辅助虚拟(AMD-VIntel VT x64x86 Windows Server 2008, Windows Server 2012, Windows 8 Windows 2000Windows 2003Windows 2008Windows XPWindows VistaLinux 私有(免费)
KVM Red Hat Intel/AMD处理器与x86虚拟化 x86/x86-64 Linux Linux,Windows GPL v2
Logical Domains 太阳计算机系统公司 UltraSPARC T1UltraSPARC 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 WindowsOracle Enterprise LinuxRed Hat Enterprise Linux 免费,商业
Parallels Workstation Parallels公司 x86,Intel VT-x x86 Windows,Linux Windows,Linux,FreeBSD,OS/2eComStation,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
QEMUkqemu模块) Fabrice Bellard Intel x86,x86-64 Intel x86,x86-64 Linux,FreeBSD,OpenBSD,Solaris,Windows 经常变化[2] GPL/LGPL
QEMUqvm86模块) 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 太阳计算机系统公司 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 Jeff Dike(其他开发者帮助) x86,x86-64,PowerPC x86,x86-64,PowerPC Linux Linux GPL v2
Virtual Iron Virtual Iron 3.1 Virtual Iron软件公司(已被Oracle收购May 13, 2009) x86 VT-x,x86-64 AMD-V x86,x86-64 无:裸机执行 Windows,Red HatSuSE 完整的产品是私有的[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 2005 R2 Microsoft Intel x86,x86-64 Intel x86 Windows 2003,XP Windows NT,2000,2003,Linux(Red Hat and SUSE) 私有(免费)
Virtuozzo SWsoft x86,IA-64,x86-64 x86,IA-64,x86-64 Linux & Windows 各种Linux发行版;Windows 私有
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 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 英国剑桥大学IntelAMD x86,x86-64 x86,x86-64 NetBSD,Linux,Solaris Linux, Solaris, Windows XP & 2003 Server(需要3.0版和VanderpoolPacifica),九號計畫, FreeBSD GPL
名称 作者 主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. 

外部連結[编辑]