云計(jì)算基礎(chǔ)知識:CPU虛擬化
虛擬化技術(shù)的分類主要有服務(wù)器虛擬化、存儲虛擬化、網(wǎng)絡(luò)虛擬化、應(yīng)用虛擬化。
服務(wù)器虛擬化技術(shù)按照虛擬對象來分,可分為:CPU虛擬化、內(nèi)存虛擬化、I/O虛擬化;按照虛擬化程度可分為:全虛擬化、半虛擬化、硬件輔助虛擬化。
將不同的虛擬化對象和程度組合,可得出9種不同的服務(wù)器虛擬化技術(shù)。
首先詳細(xì)介紹下服務(wù)器虛擬化之CPU虛擬化,后續(xù)講解中再詳細(xì)介紹內(nèi)存虛擬化及I/O虛擬化。
CPU虛擬化
- CPU全虛擬化技術(shù)
主要采用優(yōu)先級壓縮技術(shù)(Ring Compression)和二進(jìn)制代碼翻譯技術(shù)(BinaryTranslation)。優(yōu)先級壓縮技術(shù)讓VMM和Guest運(yùn)行在不同的特權(quán)級下。對x86架構(gòu)而言,即VMM運(yùn)行在***特權(quán)級別Ring 0下,Guest OS運(yùn)行在Ring 1下,用戶應(yīng)用運(yùn)行在Ring 3下。因此,Guest OS的核心指令無法直接下達(dá)到計(jì)算機(jī)系統(tǒng)硬件執(zhí)行,而是需要經(jīng)過VMM的捕獲和模擬執(zhí)行(部分難以虛擬化的指令需要通過Binary Translation技術(shù)進(jìn)行轉(zhuǎn)換)。

- CPU半虛擬化技術(shù)
主要采用Hypercall技術(shù)。Guest OS的部分代碼被改變,從而使Guest OS會將和特權(quán)指令相關(guān)的操作都轉(zhuǎn)換為發(fā)給VMM的Hypercall(超級調(diào)用),由VMM繼續(xù)進(jìn)行處理。而Hypercall支持的批處理和異步這兩種優(yōu)化方式,使得通過Hypercall能得到近似于物理機(jī)的速度。

- CPU硬件輔助虛擬化技術(shù)
目前主要有Intel的VT-x和AMD的AMD-V這兩種技術(shù)。其核心思想都是通過引入新的指令和運(yùn)行模式,使VMM和Guest OS分別運(yùn)行在不同模式(ROOT模式和非ROOT模式)下,且Guest OS運(yùn)行在Ring 0下。通常情況下,Guest OS的核心指令可以直接下達(dá)到計(jì)算機(jī)系統(tǒng)硬件執(zhí)行,而不需要經(jīng)過VMM。當(dāng)Guest OS執(zhí)行到特殊指令的時候,系統(tǒng)會切換到VMM,讓VMM來處理特殊指令。

CPU的虛擬化技術(shù)可以單CPU模擬多CPU并行,允許一個平臺同時運(yùn)行多個操作系統(tǒng),并且應(yīng)用程序都可以在相互獨(dú)立的空間內(nèi)運(yùn)行而互不影響,從而顯著提高計(jì)算機(jī)的工作效率。

GuestOS負(fù)責(zé)第2級調(diào)度,即線程或進(jìn)程在VCPU上的調(diào)度(將核心線程映射到相應(yīng)的虛擬CPU上)。
VMM(Virtual Machine Monitor)負(fù)責(zé)第1級調(diào)度,即VCPU在物理處理單元上的調(diào)度。
兩級調(diào)度的調(diào)度策略和機(jī)制不存在依賴關(guān)系。VMM負(fù)責(zé)物理處理器資源在各個虛擬機(jī)之間的分配與調(diào)度,本質(zhì)上即把各個虛擬機(jī)中的VCPU按照一定的策略和機(jī)制調(diào)度在物理處理單元上可以采用任意的策略來分配物理資源,滿足虛擬機(jī)的不同需求。























