2
硬體虛擬機器
硬體虛擬機器支援在一台計算機上存在多個執行時環境,每個執行時環境可以支援乙個作業系統。硬體虛擬機器能夠使為某種作業系統編寫的程式在另外一種作業系統上執行,或者提供比單一作業系統上多程序之間更嚴格的執行時沙箱。硬體虛擬機器現在也被稱作虛擬化或者虛擬伺服器。
能提供硬體虛擬機器功能的宿主軟體也被稱作虛擬機器監控器或虛擬機器管理程式。
硬體虛擬機器軟體主要有三種實現方式:
**,整系統模擬,動態翻譯全虛擬化。虛擬機器模擬完整的硬體,使乙個未修改的作業系統可以再在一種完全不同的微處理器上執行。bochs、dosbox、
pearpc
、qemu
、quicktransit
、simics
、virtualpc
7 for mac。
半虛擬化。虛擬機器管理器提供乙個應用程式程式設計介面供修改後的作業系統使用,能讓乙個經過修改的作業系統在一種完全不同的微處理器上執行。這個應用程式程式設計介面是乙個抽象的整合硬體功能的介面。
denali
、logic domains、
trango
、view-os
、xen 。
本地虛擬化,全虛擬化。虛擬機器模擬部分硬體,使未修改的作業系統能夠在隔離狀態下執行,但需要該作業系統與底層硬體使用相同型別的微處理器。本地虛擬化用軟體方式模擬底層硬體不支援的指令,但最新的intel和adm的部分產品已經支援硬體輔助的本地虛擬化。這種虛擬機器的例項有vmware公司64位x86作業系統虛擬化和virtual iron公司的32位和64作業系統的虛擬化、
virtual iron
。2.1 **和動態二進位制翻譯
對硬體虛擬機器來說, 乙個具有挑戰的問題是支援與宿主機硬體上執行的指令集不同的指令集,比如在一種指令集硬體系統之上**另一種指令集。
最直接的**方法是解釋。解釋程式執行目標指令集的取指令來**每乙個源指令集中的指令。這是乙個相對較慢的過程,解釋一條源指令可能需要幾十條目標指令。
二進位制翻譯經常被用來提高效能。二進位制翻譯是把一段源指令轉換成一段目標指令並執行同等的功能。翻譯過程本身可能會有相當大的開銷,但是如果一段源指令被翻譯後的目標指令能夠被快取下來,以後重複執行該段源指令就會比解釋執行快。因為二進位制翻譯是程序級虛擬機器最重要的特性,所以有時程序級虛擬機器被稱為動態二進位制翻譯器。
解釋和二進位制翻譯有不同效能。解釋有著相對較低的啟動開銷,但指令的每一次模擬執行都要消耗一定的時間。二進位制翻譯有著較高的啟動開銷,但每次重複進行會比較快。因此,有些虛擬機器使用了經過變形的分段**策略,例如,根據程式的行為收集統計資訊。開始,一些指令是解釋執行的,同時記錄下那些經常被執行的指令序列。這些經常被執行的序列使用二進位制翻譯。一些系統可能會對執行頻率非常高的翻譯指令做額外的優化。在絕大多數虛擬機器執行一段**中,翻譯和二進位制翻譯都會使用到。
2.2 二進位制**優化器
大多數二進位制翻譯器不僅執行從源**到目標**的轉換,同時也能執行一些**優化。這就產生了宿主指令集和客戶指令集相同的虛擬機器,它的主要功能是二進位制**的優化。所以,相同指令集動態二進位制優化器的實現方式與虛擬機器非常相似,包括分段優化和優化**的快取。相同指令集動態二進位制優化器能夠在程式執行過程中收集統計資訊並利用這些統計資訊優化二進位制**。
2.3 系統級虛擬機器
系統虛擬機器為多個程序共存提供乙個完整的系統環境。這種虛擬機器在20世紀六十年代末七十年代初被開發出來,這些虛擬機器也是虛擬機器這個術語的**。使用系統級虛擬機器技術,能夠使乙個宿主硬體平台同時支援多種客戶作業系統。在20世紀六七十年代,大型機非常龐大並且**昂貴,計算機通常被大量的使用者共享。不同的使用者群可能希望在這個共享的硬體上執行不同的作業系統,而虛擬機器不剛好能滿足這個需求。但隨著工業的發展,硬體變得越來越便宜,桌上電腦也越來越普及,對於系統虛擬機器的需求也越來越少。
對系統虛擬機器來說,平台複製是虛擬機器管理器的重要功能,而關鍵問題是在多個客戶作業系統之間分配唯一的底層硬體資源。虛擬機器管理器管理著硬體資源,所有的客戶作業系統及其上的應用程式都需要經過虛擬機器管理器的控制。當執行某些指令,特別是涉及到的共享硬體資源的指令,會通過虛擬機器控制器解釋這些指令,檢查指令的正確性並執行相關操作,客戶軟體不會感覺到虛擬機器控制器的操作。
從使用者的觀點來看大多數系統虛擬機器都提供了幾乎相同的功能,不同的虛擬機器其不同之處在於他們是如何實現的。在圖2和圖3中,可以看到,計算機系統存在多個介面,這就導致系統虛擬機器軟體可以放置在不同的介面上。下面介紹兩種比較重要的實現方式。
系統虛擬機器的第一種實現方式,是虛擬機器管理器放在硬體上,虛擬機器放在虛擬機器管理器之上,如圖5所示。虛擬機器管理器以最高許可權模式執行,所以虛擬機器管理器能夠解釋並實現所有客戶作業系統的指令。從某些方面來說,這種虛擬機器架構是最有效的,它以幾乎相同的方式支援所有的客戶作業系統。而缺陷就是,至少對於桌上電腦使用者來說,安裝虛擬機器管理器之前必須完全擦除現有的系統,並且在安裝虛擬機器管理器之後安裝客戶作業系統。另乙個缺陷,是需要提供針對虛擬機器管理器的輸入輸出裝置驅動,因為虛擬機器管理器直接和輸入輸出裝置互動。
圖5 虛擬機器位於硬體層之上
另一種如圖6所示,虛擬機器管理器放在已存在的宿主作業系統之上,這個虛擬機器也被稱為宿主虛擬機器。這樣,安裝虛擬機器的過程就類似於安裝乙個典型的應用程式的過程。並且,虛擬軟體能夠利用宿主作業系統提供裝置驅動和其他基本服務。而缺陷就是,這樣會帶來一些效能的損失,因為作業系統的服務要通過更多的軟體層次來實現。宿主虛擬機器方式被使用在vmware的實現中,它是乙個現代的系統虛擬機器,執行於ia-32硬體平台之上。
圖6 虛擬機器位於作業系統之上
2.4 全系統虛擬機器與**
圖6描述了乙個系統虛擬機器,它建立在乙個擁有自己的作業系統和應用程式的傳統系統之上。這種虛擬機器的乙個例子是virtual pc,它能使windows作業系統執行在macintosh系統上。虛擬機器軟體是作為乙個應用程式執行在宿主作業系統上,它使用宿主系統的指令集操作。為了實現這種型別的虛擬機器,虛擬軟體需要**整個硬體環境。它必須控制所有指令的**,並且需要將客戶系統的指令集操作轉換成對應的宿主作業系統的系統呼叫。即使使用二進位制翻譯,也無法有效利用宿主系統指令集架構的特性,如虛擬記憶體管理和中斷管理。另外,如果客戶系統和宿主系統的硬體資源有顯著的差異,則會帶來實現上的一些問題, 而解決這些問題是實現完整系統虛擬機器面臨的主要挑戰。
2.5 協同設計虛擬機器
以上所討論的虛擬機器模型, 都是為了功能和移植,包括在同乙個平台上支援多種作業系統或者多種指令集架構。事實上, 這些虛擬機器都是基於已經存在的某種標準指令集或作業系統開發的。大體上來說,提高效能不是乙個目標, 反而降低效能損失常常是乙個需要考慮的問題。
協同設計虛擬機器則有不同的目標, 並且有著不同的實現方式。設計這些虛擬機器是為了使新的指令集架構或硬體實現能提高效能或提高效率。宿主指令集架構可能是全新的,也可能是基於某種存在的指令集架構增加或刪除了部分指令。協同設計虛擬機器沒有對應的指令集架構應用程式,它本身可以看成是硬體實現的一部分。
在某些方面,協同設計虛擬機器類似於在許多高效能超標量體系結構微處理器中用到的硬體虛擬方法。在這種設計中,將架構中的暫存器重新命名為物理上的真實的暫存器,將複雜的指令分解為較簡單的指令。
----劉黎明(
虛擬機器技術kvm,xen,vmware
在工作學習中使用過kvm xen vmware,平時只是環境搭建起來在上面用,並沒有真正去了解下它們到底是什麼東西,今天上網簡單了解下。首先,虛擬化好處是 能夠最大程度利用資源,為企業節約成本。其次,分別了解下kvm,xen,vmware到底是什麼東西。kvm是指基於linux核心 kernel b...
虛擬機器硬體的配置
在安裝完虛擬機器之後由於我們並沒有匯入映象檔案,所以呢我們需要進行linux映象的檔案的安裝 在這張上的東西被叫做我們的虛擬機器的硬體的管理,它是我們虛擬機器的模擬配置。然後我們就會彈出乙個如上圖所示的乙個介面,這個介面就是我們需要進行的裝置配置 在這之上呢我們看到了乙個建議記憶體和乙個虛擬機器記憶...
virtualbox虛擬機器 虛擬機器的網路
今天要測試ip多宿主 ip multihoming 即host和guest的兩個網絡卡分別接,host ping guest的ipv6不通。解決過程如下 命令輸出 ip addr 1 lo mtu 65536 qdisc noqueue state unknown link loopback 00 ...