虛擬機器
虚拟机(英語:virtual machine),在计算机科学中的体系结构裡,是指一种特殊的软件,可以在计算机平台和終端用戶之间建立一种环境,而終端用戶则是基于虚拟机这个软件所建立的环境来操作其它软件。虚拟机(VM)是计算机系统的仿真器,通过软件模拟具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,能提供物理计算机的功能。 有不同种类的虚拟机,每种虚拟机具有不同的功能:
定义虚拟机最初由波佩克[註 1]与戈德堡定义为有效的、独立的真实机器的副本。当前包括跟任何真实机器无关的虚拟机[1]。 例子: 用Java编写的程序可以通过对Java运行环境(JRE)软件发命令获得服务,取得期望的结果。透过提供这种服务,JRE起到了虚拟机的作用。程序不必为特定的操作系统或硬件编写。 虚拟机根据它们的运用和与直接机器的相关性分为两大类。「系統虚拟机」提供一个可以运行完整操作系统的完整系统平台。「程序虚拟机」則为运行单个计算机程序设计,这意味它支持单个进程。虚拟机的一个本质特点是运行在虚拟机上的软件被局限在虚拟机提供的资源里,也就是說它不能超出虚拟世界。「作業系統層虛擬化」不提供完整作業系統環境,將母機內核分給多個獨立空間的應用程式,不同於系統虛擬機需要運行完整作業系統,也不像程序虚拟机運行特定程式語言。 系统虚拟机例如: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虛擬化)。 虛擬機器列表虛擬軟體的更多描述下列的軟體產品可以用來虛擬硬體,故可用於各種作業系統之上。
虛擬機器比較下面的表格比较了一些虚拟机软件的基本信息。请注意,这里说的是系统虚拟机。Java虚拟机之类的程序虚拟机不算在内。
注釋
参考文献
外部連結
参见 |