Instruction Set Architecture (ISA) Level指令級(jí)虛擬化
指令虛擬化是指指令集層次上實(shí)現(xiàn)虛擬化艳狐,即將某個(gè)硬件平臺(tái)上的二進(jìn)制代碼轉(zhuǎn)換為另一個(gè)平臺(tái)上的二進(jìn)制代碼,實(shí)現(xiàn)不同指令集間的兼容兵睛,也被稱作“二進(jìn)制翻譯”昼接。
Hardware Abstraction Level (HAL)硬件級(jí)虛擬化
CPU 虛擬化
-
CPU 全虛擬化
主要采用優(yōu)先級(jí)壓縮技術(shù)(Ring Compression)和 二進(jìn)制代碼翻譯技術(shù)(Binary Translation)洞斯。優(yōu)先級(jí)壓縮技術(shù)讓VMM和Guest 運(yùn)行在不同的特權(quán)級(jí)下尝丐。對(duì)X86架構(gòu)而言,即VMM運(yùn)行在最高特權(quán)級(jí)別Ring 0下吃媒,Guest OS 運(yùn)行在Ring 1 下瓤介,用戶應(yīng)用運(yùn)行在Ring 3下。因此 Guest OS 的核心指令無(wú)法直接下達(dá)到計(jì)算機(jī)系統(tǒng)硬件執(zhí)行赘那,而是需要經(jīng)過(guò) VMM 的捕獲和模擬執(zhí)行(部分難以虛擬化的指令需要通過(guò) Binary Translation技術(shù)進(jìn)行轉(zhuǎn)換)刑桑。
image.png
image.png -
CPU 半虛擬化
主要采用Hypercall 技術(shù)。Guest OS 的部分代碼被改變募舟,從而使Guest OS會(huì)將和特權(quán)指令相關(guān)的操作都轉(zhuǎn)換為發(fā)給VMM的Hypercall(超級(jí)調(diào)用)祠斧,由VMM繼續(xù)進(jìn)行處理。而Hypercall支持的批處理和異步這兩種優(yōu)化方式拱礁,使得通過(guò)Hypercall 能得到近似于物理機(jī)的速度琢锋。
image.png
image.png- Advantages: near‐native performance Improved performance due to exposure of real hardware with the cost of one time guest OS modification.
- Disadvantages:
Guest OS are limited to open source systems such as Linux.Xen supported guest OS: Linux, NetBSD, FreeBSD, OpenSolaris and Novell Netware operating systems (See, no Microsoft OS as a guest OS)
-
CPU硬件輔助虛擬化技術(shù)
目前主要有Intel 的VT-x和AMD的AMD-V這兩種技術(shù)。其核心思想都是通過(guò)引入新的指令和運(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)過(guò)VMM隧期。當(dāng)Guest OS執(zhí)行到特殊指令的時(shí)候飒责,系統(tǒng)會(huì)切換到VMM,讓VMM來(lái)處理特殊指令仆潮。
image.png
CPU的虛擬化技術(shù)可以單CPU模擬多CPU并行宏蛉,允許一個(gè)平臺(tái)同時(shí)運(yùn)行多個(gè)操作系統(tǒng),并且應(yīng)用程序都可以在相互獨(dú)立的空間內(nèi)運(yùn)行而互不影響性置,從而顯著提高計(jì)算機(jī)的工作效率拾并。
內(nèi)存虛擬化
IO虛擬化