記錄一下自己對虛擬化的理解。
CPU虛擬化:
全虛擬化:主要利用模擬仿真技術,優先級壓縮技術,二進制翻譯技術。Guest OS認爲自己是物理機,會發出ring0級別的指令產生權限異常,異常被vmm捕獲後,陷入模擬仿真。
優先級壓縮技術,使Guest OS運行在ring1下,VMM不能捕捉到敏感指令,所以二進制翻譯將其轉化爲其它架構的指令,使敏感指令和特權指令重合,VMM可以捕捉到異常。
半虛擬化:修改Guest OS內核,使Guest OS知道自己是虛擬機,避免虛擬化的執行衝突,通過Hypercall(超級調用)技術直接將指令發送給VMM,讓VMM處理。
全虛擬化
硬件輔助虛擬化:主要是Inter的VT-x 和 AMD-V 這兩種技術。讓VMM和Guest OS分別運行在root模式和非root模式下,讓Guest OS的一般指令可以直接發送到硬件,而特權指令會切換到VMM去執行。
優缺點:全虛擬化效率低,半虛擬化效率高,但需要修改內核。
內存虛擬化:
全虛擬化:主要是運用了影子頁表法。虛擬地址到物理地址的映射是先從VA到PA再到MA,然後通過影子頁表法,將VA和MA通過P2M頁表或者hash函數形成映射,可以減少一個查找的過程。在Guest OS的訪存操作都會發生缺頁中斷,VMM就會捕捉到缺頁異常,從而將其寫入影子頁表中,實現同步。
半虛擬化:修改操作系統的代碼,主要運用頁表寫入法,剝奪guest OS寫頁表的權利。當客戶機操作系統創建新頁表,VMM也創建相同的頁表,保存PV與MA的映射關係,當PV發生改變,VMM可直接從頁表裏讀取到MA。
硬件輔助虛擬化:MM維護了一個EPT(擴展頁表),通過硬件代替影子頁表,VMM把擴展頁表(EPT)設置到CPU中,客戶機修改客戶機頁表,CPU自動查找客戶機頁表和EPT,完成VA到MA轉換
優缺點:全虛擬化效率低,半虛擬化效率高,但需要修改代碼,硬件輔助虛擬化效率高。
IO虛擬化:
全虛擬化:通過軟件模擬的形式模擬IO設備。
半虛擬化:物理硬件資源統一由Hypervisor管理,由Hypervisor提供資源調用接口。虛擬子機通過特定的調用接口與Hypervisor通信,完整I/O資源控制操作。
硬件輔助虛擬化:Intel VT-d技術和Passthrough技術通過降低I/O操作中VMM的參與提升了虛擬機的I/O性能, SR-IOV標準在此基礎上支持虛擬機對I/O設備的原生共享。
但也增加了虛擬機的I/O延遲。
相關文檔資源請自行提取:
鏈接:https://pan.baidu.com/s/14iUZItb1qrqV5lNjRGFbpA
提取碼:g4oc