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

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

交換存儲

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

1. 一句話總結(jié) 

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

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

HostOS本身有虛擬機(jī)地址空間,用HVA表示。宿主機(jī)本身有物理內(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頁表的時(shí)候,kvm知道GVA對應(yīng)的HPA,并偷偷記錄下映射關(guān)系GVA->HPA。后續(xù)需要GVA到GPA映射的時(shí)候,根據(jù)影子頁表就能查到HPA。

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

2. 概述 

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

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

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

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

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

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

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

宿主機(jī)中的虛擬地址,宿主機(jī)進(jìn)程使用的虛擬地址空間。

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

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

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

2.1 影子頁表

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

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

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

2.2 EPT

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

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

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

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

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

3.1 設(shè)置鉤子 

騰訊云代理

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

主站蜘蛛池模板: 凌云县| 远安县| 靖江市| 长丰县| 肃南| 武义县| 赤水市| 西峡县| 荔波县| 克拉玛依市| 兴文县| 都匀市| 将乐县| 福鼎市| 开阳县| 淄博市| 南丰县| 遂昌县| 永兴县| 阿鲁科尔沁旗| 封丘县| 武夷山市| 和静县| 太和县| 阿图什市| 华亭县| 兰西县| 巧家县| 赤城县| 高州市| 榆林市| 阳谷县| 德昌县| 南川市| 葵青区| 伊吾县| 昌吉市| 仲巴县| 囊谦县| 庆阳市| 建瓯市|