虚拟机

/ 计算机 / 0 条评论 / 70浏览

虚拟机(英语:virtual machine),在计算机科学中的体系结构里,是指一种特殊的软件,可以在计算机平台和终端用户之间创建一种环境,而终端用户则是基于虚拟机这个软件所创建的环境来操作其它软件。虚拟机(VM)是计算机系统的仿真器,通过软件模拟具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,能提供物理计算机的功能。

有不同种类的虚拟机,每种虚拟机具有不同的功能:

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

目录 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、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虚拟化)。

虚拟机列表 虚拟软件的更多描述 下列的软件产品可以用来虚拟硬件,故可用于各种操作系统之上。

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 微软 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,Linux Windows 7,Windows 8 Windows 8.1,Windows 10,Windows Server 私有(免费) 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 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 经常变化[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 platform 3.1 Virtual Iron(已于2009年5月13日被甲骨文公司收购) 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 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 主系统 目标系统 许可 注释 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 (英语). 外部链接 The Reincarnation of Virtual Machines, Article on ACM Queue by Mendel Rosenblum, Co-Founder, VMware(英文) Xen(英文) 参见 icon 软件主题 计算机科学主题 QEMU VirtualBox VMware Xen Virtual PC Docker