虛擬機器
|
|
本条目需要精通或熟悉本主题的專業人士参与及協助编辑。 |
虚拟机(Virtual Machine),在计算机科学中的体系结构裏,是指一种特殊的软件,他可以在计算机平台和終端用戶之间建立一种环境,而終端用戶则是基于这个軟體所建立的环境来操作软件。在计算机科学中,虚拟机是指可以像真实机器一样运行程序的计算机的软件实现。
目录 |
定义 [编辑]
虚拟机最初由波佩克[1]与戈德堡定义为 有效的、孤立的真实机器的副本 。当前包括跟任何真实机器无关的虚拟机。[2]
例子: 用Java编写的程序可以通过对Java运行环境(JRE)软件发命令获得服务,取得期望的结果。透过提供这种服务,JRE起到了虚拟机的作用。程序不必为特定的操作系统或硬件编写。
虚拟机根据它们的运用和与直接机器的相关性分为两大类。系统虚拟机提供一个可以运行完整操作系统的完整系统平台。相反,程序虚拟机为运行单个计算机程序设计,这意謂它支持单个进程。虚拟机的一个本质特点是运行在虚拟机上的软件被局限在虚拟机提供的资源里——它不能超出虚拟世界。
系统虚拟机 [编辑]
程序虚拟机 [编辑]
例如:Java虛擬機(JVM)
技术 [编辑]
硬件的仿真 [编辑]
基于这种虚拟机,用户可以运行任何操作系统,比如可以在他们“个人的”虚拟电脑上运行兩個不同的操作系统(也被称为“访客(guests)”)。这样的话,新版的实验性操作系统就可以与旧版的较稳定版本一同在单独的虚拟机上运行。这个过程甚至可以重复(recursive);IBM就在运行于旧版的虚拟机上的虚拟机上调试它新版的虚拟机操作系统,VM。
这个概念的一个早期使用者就是IBM大型计算机上的VM/CMS time-sharing产品,该产品使用的交互式计算单用户操作系统,CMS,相对来说比较简单,运行于VM上。通过这种方式,CMS编写起来就比较简单,就好像只有它一个在运行一样,VM操作系统就在幕后提供多任务以及资源管理服务。
当然,不是每个VM用户都必须运行CMS;有些用户选择在一个或者多个虚拟机上运行某种OS/360(或者MVS),来提供传统上的批处理任务。今天,IBM大型机还在使用VM,许多虚拟机上运行的是Linux操作系统。
VMware、twoOStwo以及SVISTA软件包在现代電腦上都在处理类似截获硬件访问,模拟除了处理器以外的任何主板上的器件的事情。
plex86属于另外一种情况,它使用特定的打过补丁的内核,只能运行于Linux下,而且只能在其之上运行Linux。因此,它不是仿真处理器,它利用bochs来仿真主板设备。
现代電腦使用的x86处理器架构其实并不能满足Popek和Goldberg虚拟化要求。很明显,这种架构缺少所有特权机器指令都会产生异常的模式,而这种模式可以做到单指令的虚拟化。这导致VMware或类似的x86虚拟软件必须动态地重新编译特权模式代码。这种虚拟技术和运行于如IBM System/370、Motorola MC68020的原生态可虚拟架构上的VM相比,就会多出一些性能上的开销。Intel和AMD都声称计划给未来的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 | 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 | 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-V或Intel VT) | x64,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 | 太阳计算机系统公司 | 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公司 | 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 | 太阳计算机系统公司 | 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 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 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 | 英国剑桥大学,Intel,AMD | x86,x86-64 | x86,x86-64 | NetBSD,Linux,Solaris | Linux, Solaris, Windows XP & 2003 Server(需要3.0版和Vanderpool 或Pacifica), 九號計畫, FreeBSD | GPL |
| 名称 | 作者 | 主CPU | 客户CPU | 主系统 | 客户系统 | 许可 |
相關條目 [编辑]
來源與注釋 [编辑]
- ^ Gerald J. Popek,美国计算机科学家,曾提出虚拟机的实现需求,通称波佩克与戈德堡虚拟化需求。
- ^ Smith, Daniel E.; Nair, Ravi. The Architecture of Virtual Machines. Computer (IEEE Computer Society): 32–38. doi:10.1109/MC.2005.173.