1. 程式人生 > >[虛擬化] CPU虛擬化技術 - Introduction

[虛擬化] CPU虛擬化技術 - Introduction

  虛擬化技術的分類主要有伺服器虛擬化、儲存虛擬化、網路虛擬化、應用虛擬化

  伺服器虛擬化技術按照虛擬物件來分,可分為:CPU虛擬化、記憶體虛擬化、I/O虛擬化

          按照虛擬化程度可分為:全虛擬化、半虛擬化、硬體輔助虛擬化

  將不同的虛擬化物件和程度組合,可得出 9種 不同的伺服器虛擬化技術

  首先詳細介紹下伺服器虛擬化之CPU虛擬化,後續講解中再詳細介紹記憶體虛擬化及I/O虛擬化。

  二、CPU虛擬化

  ·CPU全虛擬化技術

  主要採用優先順序壓縮技術(Ring Compression)和 二進位制程式碼翻譯技術(Binary Translation)。優先順序壓縮技術讓VMM和Guest 執行在不同的特權級下。

  對X86架構而言,即VMM執行在最高特權級別Ring 0下,Guest OS 執行在Ring 1 下,使用者應用執行在Ring 3下。因此 Guest OS 的核心指令無法直接下達

  到計算機系統硬體執行,而是需要經過 VMM 的捕獲和模擬執行(部分難以虛擬化的指令需要通過 Binary Translation技術進行轉換)。

 

  ·CPU半虛擬化技術

  主要採用Hypercall 技術。Guest OS 的部分程式碼被改變,從而使Guest OS會將和特權指令相關的操作都轉換為發給VMM的Hypercall(超級呼叫),由VMM繼續進行處理。而Hypercall支援的批處理和非同步這兩種優化方式,使得通過Hypercall 能得到近似於物理機的速度。

 

  ·CPU硬體輔助虛擬化技術

  目前主要有Intel 的VT-x和AMD的AMD-V這兩種技術。其核心思想都是通過引入新的指令和執行模式,使VMM和Guest OS分別執行在不同模式(ROOT 模式和非ROOT模式)下,且Guest OS 執行在Ring 0 下。通常情況下,Guest OS 的核心指令可以直接下達到計算機系統硬體執行,而不需要經過VMM。當Guest OS執行到特殊指令的時候,系統會切換到VMM,讓VMM來處理特殊指令。

 

  CPU的虛擬化技術可以單CPU模擬多CPU並行,允許一個平臺同時執行多個作業系統,並且應用程式都可以在相互獨立的空間內執行而互不影響,

  從而顯著提高計算機的工作效率。

 

  GuestOS負責第2級排程,即執行緒或程序在VCPU上的排程(將核心執行緒對映到相應的虛擬CPU上。)

  VMM(Virtual Machine Monitor)負責第1級排程,即VCPU在物理處理單元上的排程。

  兩級排程的排程策略和機制不存在依賴關係。VMM負責物理處理器資源在各個虛擬機器之間的分配和排程,本質上即把各個虛擬機器中的VCPU按照一定的策略和機制排程在物理處理單元上,可以採用任意的策略來分配物理資源,滿足虛擬機器的不同需求。

 

  Refer to: https://www.cnblogs.com/aaronax/p/5692391.html