程序执行(英语: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)
分类
主题
专题
维基共享