Intel提供3個層面的虛擬化技術(Intel Virtualization Technology)
1.基於處理器的虛擬化技術(Intel VT-X) 全稱為 Virtualization Technology for x86
2.基於PCI總線域設備實現的I/O虛擬化技術(Intel VT-D) 全稱為Virtualization Technology for Directed I/O
3.基於網絡的虛擬化技術(Intel VT-C) 全稱為Virtualization Technology for Connectify
VT 是對資源的虛擬化管理的結果
在CPU端的虛擬化里 實現了VMX(Virtual-Machine Extensions,虛擬機擴展)架構
包含兩種角色環境 VMM(Virtual Machine Monitor,虛擬機監管者)host
VM(Virtual Machine,虛擬機)guest
guest端軟件訪問的資源受到VMM的監管
VMM通過EPT(Extend Page Table,擴展頁表)來實現“guest端物理地址到Host端物理地址”的轉化
使得Guest訪問到其他的物理區域
在開啟EPT機制下 會產生兩個地址概念:GPA(Guest Physical Address) 和 HPA(Host Physical Address)
HPA 真正的物理地址
在VMX架構下 至少需要實現一個“VMXON region” 以及 “VMCS region”的物理區域
VMXON區域對應於VMM VMM使用VMXON區域對一些數據進行記錄和維護
每個VM需要對應自己的VMCS(VIrtual Machine Structure 虛擬機控制結構)
VMM使用VMCS來配置VM的運行環境 以及控制VM的運行
檢測VMX支持
VMX支持 檢測CPUID.01H:ECX[5].VMX位來確定是否支持VMX架構 1表示支持
開啟VMX進入允許
要開啟VMX operation模式 必須先開啟CR4.VMXE控制位 1表示開啟
VMX root operation模式處理器的CPL(Current Privilege Level) 必須為0 VMM運行的環境
VMX non-root operation VM運行的環境
root ----------> non root VM-entry
non-root ---------> root VM-exit
導致VM exit發生的三大類途徑如下。
1) 執行無條件引發VM exit的指令。包括CPUID,GETSEC,INVD與XSETBV指令以及所有的VMX指令(除了VMFUNC指令)
2) 遇到無條件引發VM exit的未被阻塞的事件。例如,INT信號,SIPI消息等。
3) 遇到VMM設置引發VM exit的條件,包括執行某些指令或者遇到某些事件發生。