虛擬機器

虛擬機器

程序执行(英语:Execution (computing))

基础概念

代码

翻译器

編譯器

优化编译器

中間語言

程序执行(英语:Execution (computing))

运行时系统

執行期

執行檔

解释器

虛擬機器

代码类型

源代码

目标代码

字节码

机器代码

微程序

编译策略

即時編譯(JIT)

跟踪即时编译(英语:Tracing just-in-time compilation)

提前编译(英语:Ahead-of-time compilation)(AOT)

源代码至源代码编译器

动态重编译

知名运行环境

Android Runtime(ART)

通用語言運行庫(CLR)

crt0

Java虚拟机(JVM)

V8

Node.js

PyPy

Zend引擎

著名编译器及工具链

GNU编译器套裝(GCC)

LLVM

Clang

查论编

此條目需要精通或熟悉计算机科学的编者参与及协助编辑。 (2010年10月29日)請邀請適合的人士改善本条目。更多的細節與詳情請參见討論頁。另見其他需要计算机科学專家關注的頁面。

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

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

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

程序虚拟机 被设计用来在与平台无关的环境中执行计算机程序。

定义[编辑]

虚拟机最初由波佩克[註 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(英语: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,LinuxWindows 7,Windows 8Windows 8.1,Windows 10,Windows Server

私有(免费)

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 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(英语: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 platform 3.1

Virtual Iron(英语: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(英语: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 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 (英语). 引文使用过时参数coauthors (帮助)

外部連結[编辑]

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

Xen(英文)

参见[编辑]

软件主题

计算机科学主题

QEMU

VirtualBox

VMware

Xen

Virtual PC

Docker

查论编虛擬化技術平台虛擬化軟體比較(英语:Comparison of platform virtualization software)硬體虛擬化(Hypervisor)原生虛擬化

Adeos(英语:Adaptive Domain Environment for Operating Systems)

CP/CMS(英语:CP/CMS)

Hyper-V

KVM

Red Hat Enterprise Virtualization(英语:Red Hat Enterprise Virtualization)

LDoms / Oracle VM Server for SPARC(英语:Oracle VM Server for SPARC)

LynxSecure(英语:LynxSecure)

SIMMON(英语:SIMMON)

VMware ESX(英语:VMware ESX/ESXi)

VMware vSphere(英语:VMware vSphere)

VCloud Air

VMware Infrastructure(英语:VMware Infrastructure)

Xen

Oracle VM

XenClient(英语:XenClient)

XtratuM(英语:XtratuM)

z/VM(英语:z/VM)

需要宿主作業系統專用

Basilisk II(英语:Basilisk II)

bhyve(英语:bhyve)

Bochs

Cooperative Linux

DOSBox

DOSEMU(英语:DOSEMU)

L4Linux(英语:L4Linux)

Mac-on-Linux(英语:Mac-on-Linux)

Mac-on-Mac(英语:Mac-on-Mac)

PCem(英语:PCem)

SheepShaver

SIMH(英语:SIMH)

Windows on Windows

DOS虚拟机(英语:Virtual DOS machine)

Win4Lin(英语:Win4Lin)

獨立

Microsoft Virtual Server(英语:Microsoft Virtual Server)

Parallels Workstation(英语:Parallels Workstation)

Parallels Desktop

Parallels Server(英语:Parallels Server for Mac)

PearPC

QEMU

VirtualBox

Virtual Iron(英语:Virtual Iron)

VMware Fusion

VMware Workstation Player

VMware Server

VMware Workstation

Windows Virtual PC

工具

Ganeti(英语:Ganeti)

oVirt(英语:oVirt)

Virtual Machine Manager

作業系統層虛擬化

基於Cgroups

Container Linux

lmctfy(英语:lmctfy)

Linux-VServer(英语:Linux-VServer)

LXC

Docker

OpenVZ

Virtuozzo(英语:Virtuozzo)

Podman

FreeBSD jail

iCore Virtual Accounts(英语:iCore Virtual Accounts)

Kubernetes

Linux namespaces(英语:Linux namespaces)

Solaris Containers

Workload Partitions(英语:Workload Partitions)

桌面虛擬化

Citrix XenApp(英语:Citrix XenApp)

思杰系统

遠端桌面

VMware Horizon

Ulteo

應用程式虛擬化(英语:Application virtualization)(沙盒)

Ceedo(英语:Ceedo)

Citrix XenApp(英语:Citrix XenApp)

Dalvik

InstallFree(英语:InstallFree)

微軟App-V(英语:Microsoft App-V)

遠端桌面

Spoon(英语:Spoon (software))

Symantec Workspace Virtualization(英语:Symantec Workspace Virtualization)

VMware ThinApp(英语:VMware ThinApp)

ZeroVM(英语:ZeroVM)

网络虚拟化(英语:Network virtualization)

DOVE(英语:Distributed Overlay Virtual Ethernet)

Network Virtualization using Generic Routing Encapsulation‎(英语:Network Virtualization using Generic Routing Encapsulation‎)

Open vSwitch(英语:Open vSwitch)

Virtual security switch(英语:Virtual security switch)

虛擬局域網擴展 (VXLAN)

參見: 模擬器軟體列表(英语:List of emulators)

查论编计算机科学的主要领域注:该模板大致遵循ACM 电脑分类系统。计算机硬件

印刷电路板

外部设备

集成电路

超大规模集成电路

单片系统

绿色计算

電子設計自動化

硬件加速

处理器

系统架构管理

電腦系統架構

嵌入式系统

实时计算

网络

网络传输协议

路由

网络拓扑

网络服务

软件管理

直譯器

中间件

虛擬機器

操作系统

软件质量

软件符号和工具

编程范型

编程语言

編譯器

领域特定语言

軟體框架

集成开发环境

软件配置管理

函式庫

软件开发

软件开发过程

需求分析

软件设计

软件部署

軟體維護

开源模式

计算理论

自动机

可计算性理论

計算複雜性理論

量子计算

数值计算方法

计算机逻辑

形式语义学

算法

算法分析

算法设计

算法效率

随机化算法

计算几何

计算数学

离散数学

信息与计算科学

统计学

数学软件

数理逻辑

集合论

数论

图论

类型论

范畴论

信息论

数值分析

数学分析

信息系统

数据库管理系统

数据库

存储器

企业信息系统(英语:Enterprise information system)

社会性软件

地理信息系统

决策支持系统

过程控制

数据挖掘

數位圖書館

系统平台

數位行銷

万维网

信息檢索

安全

密码学

形式化方法

入侵检测系统

网络安全

信息安全

人机交互

计算机辅助功能

用户界面

可穿戴计算机

普适计算

虚拟现实

聊天機器人

并发性

并发计算

并行计算

分布式计算

多线程

多元處理

人工智能

自动推理

计算语言学

计算机视觉

进化计算

专家系统

自然语言处理

机器人学

机器学习

監督式學習

無監督學習

强化学习

交叉驗證

计算机图形学

计算机动画

可视化

渲染

修飾照片

圖形處理器

扩展现实

增强现实

混合现实

虚拟现实

图像处理

图像压缩

实体造型

应用计算

量子计算

电子商务

企业级软件

计算数学

计算物理学

计算化学

计算生物学

計算社會科學

医学信息学

数字艺术

電子出版

網絡戰

电子游戏

文字处理器

運籌學

教育技术学

生物信息学

认知科学

文档管理系统(英语:Document management system)

分类

主题

专题

维基共享

相关推荐

長時間打字導致手指關節疼痛的解決方法-復健科
365登录次数限制

長時間打字導致手指關節疼痛的解決方法-復健科

📅 07-31 👁️ 1851
世界杯历史最强32队(26-24)
bet3365.com

世界杯历史最强32队(26-24)

📅 07-20 👁️ 6784
英雄联盟梦魇符文搭配攻略,s13魔腾天赋配置推荐
日博365登录网址

英雄联盟梦魇符文搭配攻略,s13魔腾天赋配置推荐

📅 07-15 👁️ 3128