1. 處理器虛擬化
vmm陷入
方式:1) 基於處理器保護機制觸發的異常,處理器會在執行敏感指令前,檢查其執行條件是否滿足,不滿足就會陷入vmm進行處理。
2) 虛擬機器主動觸發異常,虛擬機器通過陷阱指令主動陷入到vmm中。
3) 非同步中斷,一旦中斷訊號到達處理器,處理器會強行中斷當前指令,然後跳轉到vmm註冊的中斷服務程式。
vm-exit:cpu自動從非跟模式切換到根模式
vm-entry:vmm排程某個客戶機執行時,cpu從根模式切換到非根模式。
vcpu:vcpu描述符,包括虛擬暫存器(vmcs內)和vcpu標識、狀態資訊(vmcs外)等
2. 中斷虛擬化
事件注入機制
3. 記憶體虛擬化
1) 引入客戶機實體地址空間
由於引入客戶機實體地址空間,記憶體虛擬化需要通過兩次位址轉換來支援位址空間的虛擬化,即
客戶機虛擬位址(gva)-》客戶機實體地址(gpa)-》宿主機實體地址(hpa)
其中從gva到gpa的轉換是由客戶機軟體決定,通常是客戶機作業系統通過vmcs中的guest狀態域cr3指向的頁表決定。gpa到hpa的轉換是由vmm決定(客戶機實體地址與宿主機物理位址對映表)。
2) 影子頁表(客戶機頁表的虛擬tlb)
乙份影子頁表與乙份客戶機作業系統的頁表對應,將客戶機虛擬位址直接對映到宿主機實體地址。客戶機作業系統維護的頁表只能被客戶機作業系統載入到虛擬mmu中,不能被物理mmu使用,vmm在物理mmu中載入的是影子頁表。
v 影子頁表的建立與維護貫穿於:
vmm對客戶機作業系統修改客戶機cr3暫存器的截獲與處理;
vmm對客戶機作業系統invlpg指令的截獲與處理;
vmm對因客戶機頁表和影子頁表不一致而觸發的缺頁異常的截獲與處理;
v 缺頁異常的分類:
影子頁表初始化時的缺頁異常;
vmm將宿主機物理頁換出到硬碟上引發的缺頁異常;
客戶機上的缺頁異常;
v 影子缺頁異常的處理:
客戶機頁幀號-》宿主機物理頁幀號-》影子宿主機頁幀號
① vmm根據客戶機頁表項建立起相應的影子頁目錄和頁表結構
② vmm根據發生缺頁異常的客戶虛擬位址,在客戶機頁表的相應頁表項中得到與之對應的客戶機實體地址
③ 根據客戶機實體地址,在客戶機實體地址與宿主機物理位址對映表中得到相應的宿主機實體地址,vmm再把這個宿主機實體地址填充到影子頁表中,需要填充的內容還包括頁表項的訪問位和修改位
v 影子頁表的缺點:
① 頁表同步,實現複雜
② 為每個客戶機程序都維護乙個對應的影子頁表,記憶體開銷大
3) intelept(擴充套件頁表)
cpu首先查詢客戶機cr3暫存器指向的頁表,cr3暫存器給出的是gpa,然後cpu查詢ept tlb將客戶機cr3中的gpa轉換為hpa,若ept tlb沒有相應的記錄,就進一步查詢ept頁表,如果還沒有,cpu丟擲ept violation異常交給vmm處理。ept硬體通過增大ept tlb來儘量減少記憶體訪問。
頁池;4. i/o裝置虛擬化
vt-x技術允許客戶機直接訪問物理的i/o空間,實現了讓客戶機直接訪問裝置真實的i/o位址空間(包括埠i/o和mmio記憶體對映i/o)
vt-d技術提供了dma重對映技術,讓裝置的dma操作直接訪問到客戶機的記憶體空間
v intel vt-d
裝置所有的dma傳輸都會被dma重對映硬體截獲。
v dma重對映
dma:直接記憶體訪問,包括同步dma,即由裝置驅動在設定好需要被dma訪問的記憶體位址後,寫某個暫存器來通知裝置發起dma,裝置會直接從該記憶體位址讀取內容並操作。非同步dma,即裝置將資料直接複製到乙個事先設定好的記憶體位址,再通過乙個中斷通知驅動程式。
pci匯流排:裝置識別符號、pci配置空間、pci裝置列舉
① bdf:裝置識別符號,用來索引任何一條匯流排上的任何乙個裝置。
② 根條目:用於描述pci匯流排,每條匯流排對應乙個根條目,共256個。
③ 上下文條目:用於描述某個具體的pci裝置,共256個。
v dma重對映過程
當dma
重對映硬體捕獲到乙個
dma傳輸時,通過其中的
bdf的
bus欄位索引根條目表,得到產生此
dma傳輸的匯流排對應的根條目,由此根條目的
ctp欄位索引上下文條目表,用
bdf中的
字段索引該錶得到產生此
dma傳輸的裝置對應的上下文條目。由上下午條目的
asr欄位,可以定址到該裝置對應的
i/o頁表,通過
i/o頁表中
gpa到
mpa的對映,
dma重對映硬體就可以做位址轉換了,從而使裝置能夠直接訪問指定客戶機的記憶體區域。
虛擬化技術架構
雲計算和虛擬化技術息息相關,其執行架構僅有兩種 宿主結構,裸金屬結構 宿主結構 hosted archieture 寄居結構 實驗 測試環境 在作業系統上安裝和執行虛擬化程式 依賴於主機作業系統對裝置的支援和物理資源的管理 a 虛擬化作為應用軟體安裝在作業系統上 b 可以在此應用軟體上安裝多個作業系...
虛擬化技術學習筆記
ecs 用的kvm。任何計算機的問題都可以通過另一層的重定向解決。虛擬技術 xen,kvm,hyper v,vmware esx server,vmware workstation,virtualbox binary translation 因為一開始x86不支援虛擬化,實現複雜,效能損失 硬體輔助...
intel歷代架構演進10 虛擬化技術
英特爾虛擬化技術為英特爾64和ia 32架構提供了虛擬的擴充套件性。這個擴充套件被稱為虛擬機器擴充套件 vmx 乙個帶有vmx的英特爾64或ia 32平台可以扮演多個虛擬系統 或虛擬機器 每個虛擬機器可以在單獨的分割槽上跑作業系統和應用。vmx還為乙個新的系統軟體層提供了程式設計介面來管理虛擬機器的...