瀏覽單個文章
carejollg
Regular Member
 

加入日期: Feb 2008
文章: 51
(接上一頁)

◎Hosted VM的效率問題
從圖2可以看到,VMMonitor與Host OS在同一個特權階層(Privileged-mode),都可以直接與硬體溝通。在x86虛擬化上,VMM(例如VMware GSX Server)與Host OS(例如Linux、Windows)是由兩家不同廠商各別開發的產品,以致於兩者有可能相互競爭底層硬體資源,並且缺乏衝突協調功能,造成運作效率低落。這也就是文章開頭提到,兩個作業系統都在作相同的事,卻沒有仲裁者,可能的例子像是暫存器因為Host OS與虛擬機器而不斷地改寫,或用於記錄虛擬機器狀態的分頁(Page)持續地產生分頁錯誤(Page Fault),處理器將會花更多時間在重新配置記憶體分頁。此外,如果VMM與OS兩個產品未經過資訊安全上的整合,則VMM可能變成Host OS上的一個資安漏洞。

◎結論:虛擬化其實是分時(time-sharing)作業系統所展現的一種用途,讓應用程式/虛擬機器可以短暫地擁有硬體資源,達到多工的錯覺。只是現在將應用程式換成是虛擬機器而已,彷彿各部虛擬機器可以擁有獨立的硬體一樣。然而,從文章內容所談論的技術,虛擬機器不必為了這個目的而模擬完整的硬體,只需要呼叫Host OS所提供的介面服務即可,同時也解決硬體相容性問題。雖然從使用者角度來看,好像在虛擬機器中操作真實的硬體(例如硬碟讀、寫)一樣,但這些硬體可能連「模擬」都稱不上。

化解硬體相容性之後,虛擬機器可以任意地在各種IA-32相容性平臺上遷移,這是虛擬化用於伺服器集中管理的重要實作方法,例如微軟已經不支援的Windows 98/95,但還有部份應用程式限制用在Win98/95,而硬體驅動程式則決定應用程式是否能延續其生命週期的關鍵。虛擬化並不是提供驅動程式的解決方案,而是呼叫抽象化介面所需的服務,以致於Win98/95從實體到虛擬化遷移過程中,我們不用擔心硬體驅動程式的問題。

從文章中描述的原理,似乎指出虛擬機器比較有效率的方式,是在IA-32架構中模擬IA-32架構的平臺,雖然現在虛擬化軟體可以模擬其他平臺的系統,可是效率可能不如IA-32架構。(不知道這是不是Apple決定使用Intel處理器的原因之一?)此外,在硬體支援下(64位元處理器與晶片組等),則可以在32位元的作業系統下模擬64位元的虛擬機器,只不過我無法確認是不是所有作業系統都適用這個原則,除非大量測試。

◎補充:特權階層的別名
分時作業系統設計時,為了讓各個應用程式在共用資源時,並避免相互干擾,所以運作時至少需要2種模式,也就是使用者模式(User-mode)與特權模式(Privileged-mode),後者也稱為系統模式(System-mode)、監督模式(Monitor-mode)、Supervisor-mode。為了與這些名稱比較,所以虛擬機器在特權階層運作的部份稱為VMMonitor或Hypervisor。
圖9中所使用的Ring 0/1/2/3也稱為Privilege 0/1/2/3。
 
舊 2008-04-06, 10:29 PM #2
回應時引用此文章
carejollg離線中