天天看點

雲計算知識第七講:記憶體虛拟化

一、記憶體虛拟化的産生

  記憶體虛拟化的産生源于VMM與客戶系統在對實體記憶體的認識上存在沖突,造成實體記憶體真正擁有者-VMM必須對系統通路的記憶體進行一定程度上的虛拟化。

  先看非虛拟化環境:  

  ·指令對記憶體的通路通過處理器來轉發>>>>處理器将解碼後的請求放到總線上>>>>晶片組負責轉發。

  為了唯一标示,處理器将采用統一編址的方式将實體記憶體映射成為一個位址空間(實體位址空間)。

    1)作業系統會假定記憶體位址從0開始。

    2)記憶體是連續的或者說在一些大的粒度(比如 256M)上連續。

    在虛拟環境裡,VMM就要模拟使的虛拟出來的記憶體仍符号客戶機 OS 對記憶體的假定和認識,記憶體虛拟化要解決哪些問題呢?

    a.實體記憶體要被多個客戶OS同時使用,但實體記憶體隻有1個,位址0也隻有一個,無法滿足同時從0開始的要求。

    b.由于使用記憶體分區方式,實體記憶體分給多個系統使用,客戶機OS記憶體連續性可解決但不靈活。

    要解決以上問題引入了一層新的位址空間---客戶機實體位址空間來解決讓虛拟機OS 看到一個虛拟的實體位址,讓VMM 負責轉化成實體位址給實體處理器執行。

  

雲計算知識第七講:記憶體虛拟化

  VMM需要做哪些事情呢?

  1)給定一個虛拟機,維護客戶機實體位址到主控端實體位址之間的映射關系。

  2)截獲虛拟機對客戶機實體位址的通路,将其轉化為實體位址。

  二、記憶體虛拟化

  ·記憶體全虛拟化技術

  通過使用影子頁表(Shadow Page Table)實作虛拟化。

  VMM 為每個Guest 都維護一個影子頁表,影子頁表維護虛拟位址(VA)到機器位址(MA)的映射關系。而Guest頁表維護VA到客戶機實體位址(GPA)的映射關系。

  當VMM捕獲到Guest 頁表的修改後,VMM 會查找負責GPA 到MA 映射的P2M 頁表或者哈希函數,找到與該GPA對應的MA,再将MA填充到真正在硬體上起作用的影子頁表,進而形成 VA 到 MA 的映射關系。而 Guest 的頁表則無需變動。

雲計算知識第七講:記憶體虛拟化

  ·記憶體半虛拟化技術

  通過使用頁表寫入法實作虛拟化

  Guest OS 在建立一個新的頁表時,會向VMM注冊該頁表。之後在 Guest 運作的時候,VMM 将不斷的管理和維護這個表,使Guest 上面的程式能直接通路到合适的位址。

 ·記憶體硬體輔助虛拟化技術

  通過擴充頁表EPT(extended page table)實作虛拟化。

  EPT通過使用硬體虛拟化技術,使其能在原有的頁表的基礎上,增加一個EPT頁表,用于記錄GPA到MA的映射關系。VMM預先把EPT頁表設定到CPU中。

  Guest 修改Guest 頁表,無需VMM幹預。位址轉換時,CPU 自動查找兩張頁表完成 Guest 虛拟位址到機器位址的轉換,進而降低整個記憶體虛拟化所需的開銷。

雲計算知識第七講:記憶體虛拟化

繼續閱讀