欧美一区2区三区4区公司二百,国产精品婷婷午夜在线观看,自拍偷拍亚洲精品,国产美女诱惑一区二区

歡迎來到云服務(wù)器

交換存儲

內(nèi)存虛擬化到底是咋整的?

1. 一句話總結(jié) 

內(nèi)存虛擬化解決虛擬機里面的進程如何訪問物理機上的內(nèi)存這一問題。

GuestOS本身有虛擬地址空間,用GVA表示。虛擬機認為自己獨占整個內(nèi)存空間,用GPA表示。

HostOS本身有虛擬機地址空間,用HVA表示。宿主機本身有物理內(nèi)存空間,用HPA表示。

好,內(nèi)存虛擬化的問題變成了GVA->HPA的映射問題。

內(nèi)存虛擬化到底是咋整的?

GVA->GPA通過GuestOS頁表映射。HVA->HPA通過HostOS頁表映射。因此,只要建立GPA->HVA的映射關(guān)系,即可解決內(nèi)存虛擬化的問題。但,這樣三段逐次映射,效率低下。

引入軟件模擬的影子頁表和硬件輔助的EPT頁表。

影子頁表:GuestOS創(chuàng)建GVA->GPA頁表的時候,kvm知道GVA對應(yīng)的HPA,并偷偷記錄下映射關(guān)系GVA->HPA。后續(xù)需要GVA到GPA映射的時候,根據(jù)影子頁表就能查到HPA。

EPT頁表:硬件層面引入EPTP寄存器。直接將Guest的CR3加載到宿主機的MMU中。同時EPT頁表被載入專門的EPT頁表指針寄存器 EPTP。也就是說GVA->GPA->HPA兩次地址轉(zhuǎn)換都由硬件實現(xiàn)。

2. 概述 

我們知道80386引入了保護模式后,內(nèi)存空間分為虛擬地址空間和物理地址空間。后續(xù)引入頁表機制,把虛擬機地址送往mmu,mmu查TLB不中的情況下,依次查頁表就可以找到對應(yīng)的物理地址。

在虛擬化場景下情況略微復(fù)雜,分為以下幾種:

①GuestOS 虛擬地址(guestOS virtual Adress,GVA)

說白了guestos中進程使用的虛擬地址就是GVA,也就是程序訪問邏輯存儲器的地址。

②guestOS 物理地址(GuestOS Physical Address,GPA)

Guestos認為的物理地址,也是虛擬機mmu查頁表得出的地址但是他本質(zhì)是一個邏輯上的地址,是引入虛化后產(chǎn)生的一個邏輯概念。它必須借助于內(nèi)存虛擬化映射到宿主機的物理地址上才能訪問內(nèi)存

③主機虛擬機地址(Host virtul Address,HVA)

宿主機中的虛擬地址,宿主機進程使用的虛擬地址空間。

④主機物理地址(Host Physical Address,HPA)

宿主機真實內(nèi)存地址,真實可以訪問的物理內(nèi)存空間。

至此,在虛擬機場景下,如何由GVA->HPA就是內(nèi)存虛擬化的工作。其中,Qemu負責(zé)管理虛擬機內(nèi)存大小,記錄內(nèi)存對應(yīng)的HVA地址(因為Qemu是用戶態(tài)的進程,無法管理HPA)想要轉(zhuǎn)化為HPA需要借助于KVM內(nèi)核也就是影子頁表SPT(Shadow Page Table)和EPT(Extent Page Table)

2.1 影子頁表

在Guestos建立頁表的時候,KVM偷偷的建立了一套指向宿主機物理地址的頁表。客戶機中的每一個頁表項都有一個影子頁表項與之相對應(yīng),就像其影子一樣。

在客戶機訪問內(nèi)存時,真正被裝入宿主機 MMU 的是客戶機當(dāng)前頁表所對應(yīng)的影子頁表這樣通過影子頁表就可以實現(xiàn)真正的內(nèi)存訪問虛擬機頁表和影子頁表通過一個哈希表建立關(guān)聯(lián)這樣通過頁目錄/頁表的客戶機物理地址就可以在哈希鏈表中快速地找到對應(yīng)的影子頁目錄/頁表當(dāng)客戶機切換進程時,客戶機操作系統(tǒng)會把待切換進程的頁表基址載入 CR3而 KVM 將會截獲這一特權(quán)指令,進行新的處理,也即在哈希表中找到與此頁表基址對應(yīng)的影子頁表基址,載入客戶機 CR3使客戶機在恢復(fù)運行時 CR3 實際指向的是新切換進程對應(yīng)的影子頁表。

內(nèi)存虛擬化到底是咋整的?

2.2 EPT

內(nèi)存虛擬化到底是咋整的?

EPT 技術(shù)在原有客戶機頁表對客戶機虛擬地址到客戶機物理地址映射的基礎(chǔ)上引入了 EPT頁表來實現(xiàn)客戶機物理地址到宿主機物理地址的另一次映射,這兩次地址映射都是由硬件自動完成。客戶機運行時,客戶機頁表被載入 CR3,而 EPT 頁表被載入專門的EPT 頁表指針寄存器 EPTP。

在客戶機物理地址到宿主機物理地址轉(zhuǎn)換的過程中,由于缺頁、寫權(quán)限不足等原因也會導(dǎo)致客戶機退出,產(chǎn)生 EPT異常。對于 EPT 缺頁異常,KVM首先根據(jù)引起異常的客戶機物理地址,映射到對應(yīng)的宿主機虛擬地址,然后為此虛擬地址分配新的物理頁最后 KVM 再更新 EPT 頁表,建立起引起異常的客戶機物理地址到宿主機物理地址之間的映射。對 EPT 寫權(quán)限引起的異常,KVM 則通過更新相應(yīng)的 EPT 頁表來解決。

由此可以看出,EPT 頁表相對于前述的影子頁表,其實現(xiàn)方式大大簡化。而且,由于客戶機內(nèi)部的缺頁異常也不會致使客戶機退出,因此提高了客戶機運行的性能。此外,KVM 只需為每個客戶機維護一套 EPT 頁表,也大大減少了內(nèi)存的額外開銷。

3. Qemu到KVM內(nèi)存管理 

3.1 設(shè)置鉤子 

騰訊云代理

Copyright © 2003-2021 MFISP.COM. 國外vps服務(wù)器租用 夢飛云服務(wù)器租用 版權(quán)所有 ? 粵ICP備11019662號

主站蜘蛛池模板: 应城市| 德保县| 洛隆县| 河北区| 永川市| 华容县| 犍为县| 仁化县| 湟中县| 甘肃省| 周口市| 罗山县| 顺平县| 孟连| 巴南区| 澳门| 延长县| 日土县| 五指山市| 大英县| 富川| 栖霞市| 桃园市| 五河县| 贺州市| 洪湖市| 从江县| 海晏县| 巴楚县| 卓尼县| 万荣县| 浮梁县| 湘潭县| 莱芜市| 金溪县| 古蔺县| 康保县| 西峡县| 大竹县| 武汉市| 通城县|