CPU硬件虛擬化
?
CPU硬件虛擬化,也就是CPU硬件輔助虛擬化(CPU Hardware Assisted Virtualization)
為了實現(xiàn)虛擬化,VMWare走了全虛擬化的道路,而Citrix和微軟等走了半虛擬化的道路。全虛擬化因為不需要修改操作系統(tǒng)即可直接使用,所以支持的操作系統(tǒng)很多,但因為中間有一個指令的二進制轉(zhuǎn)譯的過程,所以性能比較差一點。半虛擬化則恰好相反,它修改了GuestOS系統(tǒng),植入了HyperCall,讓GuestOS部分指令可以直接運行到Ring 0級別,這樣性能得以保存。但是因為要改操作系統(tǒng),而很多操作系統(tǒng)不愿意被修改(比如微軟的Windows),而有些操作系統(tǒng)又無人去修改,所以導(dǎo)致的結(jié)果就是支持的操作系統(tǒng)比較少。
等到虛擬化很火了,Intel和AMD也坐不住了,他們提出要從CPU的根本架構(gòu)著手,解決這個全虛擬化和半虛擬化的問題。他們把CPU原來的Ring 0、1、2、3四個級別設(shè)定為非Root模式特權(quán)級別,然后再增加了一個Root模式特權(quán)級別,有人將這個級別稱之為Ring -1(負一),可以想見,就是比Ring 0還要底層的權(quán)限級別。VMM就運行在Ring -1上,而讓GuestOS運行到Ring 0上,這樣從Guest OS到VMM就不需要Binary Translation或Paravirtualization了。
在Intel公司,這個技術(shù)叫Intel VT;ADM公司則叫AMD-V。
使用了CPU硬件虛擬化,全虛擬化廠商的性能追上了半虛擬化廠商,而半虛擬化廠商也可以支持不修改內(nèi)核的操作系統(tǒng)了(例如Windows和絕大多數(shù)Linux)
?
本文屬于“洪哥筆記”原創(chuàng)文章,轉(zhuǎn)載請注明來源地址:CPU硬件虛擬化