關於全虛擬化和半虛擬化的解釋


下面我們討論一下全虛擬化和半虛擬化。所謂全虛擬化一個操作系統是運行在軟件環境下的。我們看到完全虛擬化有一些特點,比如說兼容性好,我拿過來就可以用。這裏面引出一個半虛擬化的技術,X86平臺實際上不是非常適合做虛擬化,因爲他有一些特定的使用一定要運行在特定的級別上面。


  有一些指令一定要用在特定的級別上面,如果你在X86上面再靠一個操作系統的話,這樣就會造成一定的衝突,真實的效果是X86平臺CPU會忽略一些東西,他們在當時實現完全虛擬化的時候是在虛擬平臺上面做一個監聽的機制,如果發現從用戶派來特權的請求,他就創建另外一個通道,把它翻譯成另外一種方式解決。

  實際上它實現了在X86不支持虛擬化的這種情況下,它實現了完全虛擬化,但是這種實現方式的開銷就是,這樣軟件的性能會有大幅的降低,根據現在的數據是 17%到20%的樣子,基於這個情形,有人就開始想出了半虛擬化的解決方案,他通過修改操作系統的內核,把一些特權級別的請求翻譯成爲剛纔我們看到那個虛擬化平臺的那個圖了吧,把一些特權的請求發送給AMM,然後由它轉化爲真正要處理器處理的指令,那麼半虛擬化的優點主要就是由於沒有它沒有VMR執行的監聽機制,性能會有很大的提高。

  由於它把一些請求直接發給,然後由它去和底層的硬件去交流,這樣會有很好的性能表現,因爲剛纔我們講到X86平臺它不適合虛擬化,因爲有一些特權指令的操作,另外還有一個,由於你要實現完全虛擬化,那麼有一些設備,例如如IO設備還有網卡設備,你也是不能夠改的,OX也是不知道底下網卡運行的是真的是假的,那麼完全虛擬化怎麼做,它用軟件模擬出一些快設備,或者是網絡的設備,實際上這種模擬開銷是非常大的,那麼半虛擬化沒有模擬的過程,這樣也會大幅度增加程序的運行效率,我們大家知道就好了。

  最後總結一下,半虛擬化需要修改操作系統,需要操作系統的支持,那麼完全虛擬化不需要修改操作系統,無法感知它到底運行在硬件還是軟件上,相帶來的問題就是半虛擬化需要改一些東西,有一些系統無法做到,那麼全虛擬化相對帶來的問題就是由於模擬化所導致的性能的開銷,那麼實際上在06年的時候,基於虛擬化需求的現狀,我們X86的兩個廠家,一個叫英特爾一個叫AMD他們在硬件方面實現了硬件虛擬化的技術,解決了之前我們說的第一個問題,那麼它通過在硬件上面實現了對這種特權級別的指令級的捕捉,然後從硬件角度轉換到另外處理的方式上面去,我們簡單理解解決這樣的,因爲這個話題說起來挺大,我也不知道該怎麼說好一些。

    半虛擬化就是操作系統級虛擬化。 這種虛擬化技術的效率最高。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章