Can you summarize the following document?
        
  虛擬機器最初由波佩克與戈德堡定義為"有效的、獨立的真實機器的副本"。當前包括跟任何真實機器無關的虛擬機器。  例子: 用Java編寫的程式可以通過對Java執行環境(JRE)軟體發命令獲得服務,取得期望的結果。透過提供這種服務,JRE起到了虛擬機器的作用。程式不必為特定的作業系統或硬體編寫。  虛擬機器根據它們的運用和與直接機器的相關性分為兩大類。「系統虛擬機器」提供一個可以執行完整作業系統的完整系統平臺。「程式虛擬機器」則為執行單個計算機程式設計,這意味它支援單個程序。虛擬機器的一個本質特點是執行在虛擬機器上的軟體被侷限在虛擬機器提供的資源裡,也就是說它不能超出虛擬世界。「作業系統層虛擬化」不提供完整作業系統環境,將母機核心分給多個獨立空間的應用程式,不同於系統虛擬機器需要執行完整作業系統,也不像程式虛擬機器執行特定程式語言。

  例如:VirtualBox、VMware

  例如: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虛擬機器之類的程式虛擬機器不算在內。
虛擬機器(英語:virtual machine),在電腦科學中的體系結構裡,是指一種特殊的軟體,可以在計算機平臺和終端使用者之間建立一種環境,而終端使用者則是基於虛擬機器這個軟體所建立的環境來操作其它軟體。虛擬機器(VM)是計算機系統的模擬器,通過軟體模擬具有完整硬體系統功能的、執行在一個完全隔離環境中的完整計算機系統,能提供物理計算機的功能。