日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
漫談虛擬化之五-計算虛擬化中的內存虛擬化

漫談虛擬化之五-計算虛擬化中的內存虛擬化

作者:聽泉Rit 2018-05-08 15:16:59

云計算

虛擬化 經(jīng)過前面的介紹,我們差不多都應該知道,針對不同的資源,虛擬化主要包含三個方面的內容:計算虛擬化、存儲虛擬化和網(wǎng)絡虛擬化,接下來咱們就來看看,什么是計算虛擬化中“內存”虛擬化。

葫蘆島ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

 經(jīng)過前面的介紹,我們差不多都應該知道,針對不同的資源,虛擬化主要包含三個方面的內容:計算虛擬化、存儲虛擬化和網(wǎng)絡虛擬化,接下來咱們就來看看,什么是計算虛擬化中“內存”虛擬化。

1. 內存虛擬化簡介

內存虛擬化的產生源于 VMM 與 Guest OS 在對物理內存的認識上存在沖突,造成物理內存真正擁有者——VMM 必須對系統(tǒng)訪問的內存進行一定程度上的虛擬化?!?/p>

咱們先來看看,在非虛擬化環(huán)境下的情況:  

(1)首先:指令對內存的訪問通過處理器來轉發(fā);

(2)然后:處理器將解碼后的請求放到總線上;

(3)最后:芯片組負責轉發(fā)。

為了唯一標識,處理器將采用統(tǒng)一編址的方式將物理內存映射成為一個地址空間(物理地址空間)。這包括兩層含義,其一,操作系統(tǒng)會假定內存地址從 0 開始;其二,內存是連續(xù)的或者說在一些大的粒度(比如 256M)上連續(xù)。

在虛擬環(huán)境里,VMM 就要通過模擬手段,使得虛擬出來的內存仍符合 Guest OS 對內存的假定和認識。如此一來,內存虛擬化就需要解決如下的問題,

(1)其一,物理內存要被多個 Guest OS 同時使用,但物理內存只有 1 個,地址 0 也只有一個,無法滿足同時從 0 開始的要求;

(2)其二,由于使用內存分區(qū)方式,物理內存分給多個系統(tǒng)使用,Guest OS 內存連續(xù)性可解決但不靈活。

為了解決以上的問題,咱們的攻城獅們引入了一層新的地址空間——客戶機物理地址空間(GPA)來解決讓 Guest OS 看到一個虛擬的物理地址,讓 VMM 負責轉化成物理地址給物理處理器執(zhí)行。Guest Machine 以為自己運行在真實的物理地址空間中,實際上它是通過 VMM 訪問真實的物理地址的。在 VMM 中保存 Guest Machine 地址空間和物理機地址空間之間的映射表。如下圖所示:

因為 VMM 掌控所有系統(tǒng)資源,因此 VMM 握有整個內存資源,其負責頁式內存管理,維護虛擬地址到機器地址的映射關系。因 Guest OS 本身亦有頁式內存管理機制,所以 VMM的整個系統(tǒng)就比正常系統(tǒng)多了一層映射:

(1)虛擬地址(VA),指 Guest OS 提供給其應用程序使用的線性地址空間;

(2)客戶機物理地址(GPA),經(jīng) VMM 抽象的、虛擬機看到的偽物理地址;

(3)機器地址(MA),真實的機器地址,即地址總線上出現(xiàn)的地址信號;

映射關系如下:Guest OS:GPA = f(VA)、VMM:MA = g(GPA)

VMM 維護一套頁表,負責 GPA 到 MA 的映射。Guest OS 維護一套頁表,負責 VA 到 GPA 的映射。實際運行時,用戶程序訪問 VA1,經(jīng) Guest OS 的頁表轉換得到 GPA1,再由 VMM 介入,使用 VMM 的頁表將 GPA1 轉換為 MA1。

2 內存虛擬化的基礎:頁表虛擬化技術:

2.1 頁表虛擬化技術原理

普通 MMU(Memory Management Unit,即內存管理單元)只能完成一次虛擬地址到物理地址的映射,在虛擬機環(huán)境下,經(jīng)過 MMU 轉換所得到的“物理地址”并不是真正的機器地址。若需得到真正的機器地址,必須由 VMM 介入,再經(jīng)過一次映射才能得到總線上使用的機器地址。如果虛擬機的每個內存訪問都需要 VMM 介入,并由軟件模擬地址轉換的效率是很低下的,幾乎不具有實際可用性,為實現(xiàn)虛擬地址到機器地址的高效轉換,現(xiàn)普遍采用的思想是:由 VMM 根據(jù)映射 f 和 g 生成復合的映射 fg,并直接將這個映射關系寫入 MMU。

2.2 內存虛擬化分類

當前采用的頁表虛擬化方法主要是 MMU 半虛擬化(MMU Paravirtualization)和影子頁表(全虛擬化),后者已被內存的芯片輔助虛擬化技術所替代。

(1)內存全虛擬化技術(即影子頁表虛擬化)

通過使用影子頁表(Shadow Page Table)實現(xiàn)虛擬化。VMM 為每個 Guest Machine 都維護一個影子頁表,影子頁表維護虛擬地址(VA)到機器地址(MA)的映射關系。而 Guest Machine 頁表則維護 VA 到客戶機物理地址(GPA)的映射關系。下圖示意:

當 VMM 捕獲到 Guest Machine 頁表的修改后,VMM 會查找負責 GPA 到 MA 映射的 P2M 頁表或者哈希函數(shù),找到與該 GPA 對應的 MA,再將 MA 填充到真正在硬件上起作用的影子頁表中,從而形成 VA 到 MA 的映射關系。而客戶機頁表則無需變動。

注意:影子頁表一般特指有多個頁表緩存的方案。

其優(yōu)點主要來自于性能上的提升。由于時間局部性,系統(tǒng)中經(jīng)常會是幾個進程之間回來切換,所以哪怕是 4 組頁表緩存,其重用率也可達到 80~90%。

其缺點是由于要維護多份頁表緩存,還是存在一定的額外開銷,并且由于要存放這些緩存,內存上也會有些消耗。這些缺點可以通過 MMU 半虛擬化來解決。

(2)內存半虛擬化技術(MMU 半虛擬化)

其基本原理是:當 Guest OS 創(chuàng)建一個新的頁表時,會從它所維護的空閑內存中分配一個頁面,并向 VMM 注冊該頁面,VMM 會剝奪 Guest OS 對該頁表的寫權限,之后 Guest OS 對該頁表的寫操作都會陷入到 VMM 加以驗證和轉換。VMM 會檢查頁表中的每一項,確保他們只映射了屬于該虛擬機的機器頁面,而且不得包含對頁表頁面的可寫映射。后 VMM 會根據(jù)自己所維護的映射關系,將頁表項中的物理地址替換為相應的機器地址,最后再把修改過的頁表載入 MMU。如此,MMU就可以根據(jù)修改過頁表直接完成虛擬地址到機器地址的轉換。

簡單來說,如果通過使用頁表寫入法實現(xiàn)虛擬化。即 Guest OS 在創(chuàng)建一個新的頁表時,會向 VMM 注冊該頁表。之后在 Guest Machine 運行的時候,VMM 將不斷的管理和維護這個表,使 Guest Machine上面的程序能直接訪問到合適的地址。

Xen 是 MMU 半虛擬化的主要使用者。

(3)內存硬件輔助虛擬化技術-內存全虛擬化(影子頁表)的替代者

內存的芯片輔助虛擬化技術是用于替代虛擬化技術中軟件實現(xiàn)的“影子頁表”的一種芯片輔助虛擬化技術,其基本原理是:

GVA(客戶操作系統(tǒng)的虛擬地址)-> GPA(客戶操作系統(tǒng)的物理地址)-> HPA(宿主操作系統(tǒng)的物理地址)

其中兩次地址轉換都由 CPU 硬件自動完成(軟件實現(xiàn)內存開銷大、性能差)。

在這種方案中,Guest OS 完成 VA 到 GPA 這第一層轉化,硬件幫忙完成 GPA 到 MA 這第二層轉化。第二層轉化對于 Guest OS 來說是透明的。Guest OS 訪存時做的事和在裸機上跑時一樣,所以可以實現(xiàn)全虛擬化。這種特性 Intel 和 AMD 都有支持。Intel 稱之為Extended Page Tables (EPT),AMD 稱之為 Nested Page Tables (NPT)。其優(yōu)點是hypervisor 省了很多活,缺點是需要硬件支持。

以 VT-x 技術的頁表擴充技術 Extended Page Table(EPT)為例,首先 VMM 預先把客戶機物理地址轉換到機器地址的 EPT 頁表設置到 CPU 中;其次客戶機修改客戶機頁表無需 VMM 干預;最后,地址轉換時,CPU 自動查找兩張頁表完成客戶機虛擬地址到機器地址的轉換。下圖示意:

使用內存的芯片輔助虛擬化技術,客戶機運行過程中無需 VMM 干預,去除了大量軟件開銷,內存訪問性能接近物理機。

KVM 主要使用內存硬件輔助虛擬化。

圖片授權基于:CC0協(xié)議


分享題目:漫談虛擬化之五-計算虛擬化中的內存虛擬化
文章地址:http://www.dlmjj.cn/article/dpieihj.html