---恢復內容開始---
1 虛擬化技術的實質是一樣的:將底層資源進行分區,並向上層提供特定的和多樣化的執行環境。
虛擬化系統分類:
a)指令級虛擬化
指令級虛擬化又稱為指令集架構級虛擬化(ISA虛擬化)。它通過純軟件方法,模擬出與實際運行的應用程序(或操作系統)不同的指令集去執行,采用這種方法構造的虛擬機一般稱為模擬器。模擬器可將客戶機發出的所有指令翻譯成本地指令集,然后在真實的硬件上執行。
b)硬件級虛擬化
硬件抽象層虛擬化實際上與指令集架構級虛擬化非常相似,其不同之處在於,這種類型的虛擬化所考慮的是一種特殊情況:客戶執行環境和主機具有相同指令集的情況,並充分利用這一特點,讓絕大多數客戶指令在主機上直接執行,從而大大提高了執行的速度。
這種虛擬化技術要能夠正確工作,所構造的虛擬機就必須對其中的一些特權指令進行處理,執行時產生Trap(陷入)並將它傳遞給下層VMM執行。這是因為在虛擬機中運行的未加修改的操作系統會利用特權指令得到CPU和內存資源。當某特權指令執行時產生一個Trap,便馬上將指令發送給VMM使得VMM可以完全控制虛擬機並保持每個虛擬機間的隔離。然后,該VMM在處理器中執行該指令,並將模擬結構及特權指令返回給虛擬機。
2 三種虛擬化技術簡介
CPU:
1)全虛擬化
在全虛擬化下,VMM可以向虛擬機虛擬出和真實硬件完全相同的硬件環境,為每個虛擬機提供完整的硬件支持服務,包括虛擬BIOS、虛擬設備和虛擬內存管理等。這個過程並不需要硬件或操作系統的協助,因而不需要修改Guest OS的內核,Guest OS完全感知不到是否發生了虛擬化。
2)半虛擬化
在半虛擬化下,VMM需要操作系統的協助才能夠完成對x86敏感指令的虛擬化。因而需要對Guest OS的內核進行修改,以便操作系統能夠自行對有缺陷的指令進行替換。半虛擬化也可以成為操作系統協助虛擬化OS。在這種情況下,Guest OS是知道自己運行在虛擬機中的。
3)硬件虛擬化
硬件虛擬化又稱為硬件輔助虛擬化,就是說VMM需要硬件的協助才能完成對硬件資源的虛擬。硬件虛擬化始於CPU廠商Intel和AMD分別提出的Intel-VT和AMD-V技術,其基本思想是引入新的指令和處理器運行模式,使VMM和Guest OS 運行在不同的模式下。Guest OS只能在受控的模式下運行,當需要由VMM進行監控和模擬時,由硬件支持模式切換。
內存虛擬化:
1)MMU半虛擬化
2)影子頁表
I/O設備虛擬化
在全虛擬化、半虛擬化以及硬件虛擬化中,I/O設備虛擬化都不盡相同,其核心在於I/O設備原生驅動的存放位置以及VMM對I/O設備的處理方式。
1)全虛擬化
在全虛擬化下,由於不需要修改Guest OS內核,I/O設備的原生驅動存放在Guest OS中,但是VMM處理設備的方式會根據VMM的位置不同而有所不同。例如,VMM采用獨立監控模式,即VMM直接運行在物理硬件上,直接操作硬件設備,而Guest OS看到的則是一組統一的虛擬I/O設備。Guest OS對這些虛擬設備的每一個I/O操作都會陷入VMM中,由VMM對I/O指令進行解析並映射到實際物理設備,然后直接控制硬件完成;VMM運行在一個傳統操作系統之上,那么VMM無法獲得對硬件資源的完全控制,因此通常用軟件模擬的方法來虛擬I/O設備。Guest OS的I/O操作會被VMM捕獲,並轉交給宿主操作系統的一個用戶進程,該進程通過對宿主操作系統調用來模擬設備的行為。
模擬I/O虛擬化方法的最大開銷在於處理器模式的切換:包括從Guest OS到VMM的切換,以及從內核態的VMM到用戶態的I/O模擬進程之間的切換。因此,對於采用模擬方法進行虛擬化的I/O設備,優化I/O性能的主要策略就是盡量減少模式切換。
2)半虛擬化
在半虛擬化下,修改Guest OS內核,將原生設備驅動從Guest OS中移出,放在一個經過VMM授權的設備虛擬機中,其余虛擬機中Guest OS的I/O請求都交由設備虛擬機處理。而每個Guest OS內部,系統為每個虛擬I/O設備安裝一個特殊的驅動程序(半虛擬化驅動程序),由該驅動程序負責I/O請求的傳遞。設備虛擬機在經過VMM授權后,解析收到的I/O請求並映射到實際物理設備,最后交給它的原生設備驅動程序控制硬件完成。
---恢復內容結束---