1. 程式人生 > >半虛擬化和全虛擬化的區別

半虛擬化和全虛擬化的區別

  圖2. 全虛擬化: 使用Hypervisor分享底層硬體

  全虛擬化的執行速度要快於硬體模擬, 但是效能方面不如裸機, 因為Hypervisor需要佔用一些資源. 全虛擬化最大的優點是作業系統沒有經過任何修改. 它的唯一限制是作業系統必須能夠支援底層硬體(比如, PowerPC).

  老機器上的Hypervisors

  一些老的硬體如x86, 全虛擬化遇到了問題. 比如, 一些敏感的指令需要由VMM來處理(VMM不能設定陷阱). 因此, Hypervisors必須動態掃描和捕獲特權程式碼來處理問題.

  半虛擬化

  半虛擬化(Paravirtualization)是另一種類似於全虛擬化的熱門技術. 它使用Hypervisor(虛擬機器管理程式)分享存取底層的硬體, 但是它的客戶作業系統集成了虛擬化方面的程式碼. 該方法無需重新編譯或引起陷阱, 因為作業系統自身能夠與虛擬程序進行很好的協作.

  圖3. 半虛擬化: 通過客戶作業系統分享程序

  上面提到過, 半虛擬化需要客戶作業系統做一些修改(配合Hypervisor), 這是一個不足之處. 但是半虛擬化提供了與原始系統相近的效能. 與全虛擬化一樣, 半虛擬化可以同時能支援多個不同的作業系統.

有這樣的疑問:

在半虛擬化的環境中,不能執行未經修改核心的作業系統,那麼,cpu不支援vt,在宿主系統上跑的虛擬環境就可以稱為半虛擬化環境了,那麼在cpu不支援vt的機器上vmwera可以執行xp,這個互相矛盾,為什麼就可以執行呢?

PV vs. FV
PV(Para-Vritralization)和FV(Full-Vritralization)的差別,主要以guest OS的硬體模擬程度做區分。

FV:FV是一般較常看到的作法,所有的guest OS完全不會看到實際的硬體為何,只能使用由Supervisor所提供的所有虛擬硬體,因此,在這種機制下,guest OS動作的效能一定會大受虛擬介面的影響。另外還有一個特點,就是因為完全模擬的關係,不支援新的技術,連ACPI開關機的機制都無法使用,也就是當使用者在FV的guest OS下,若直接觸動關機的按鈕(這裡的按鈕是由VMM所提供的,不是主機上的)會直接斷電,而不會進行關機程式。

PV:至於PV的作法,有鑑於一般Virtual Machine工具都是以完全模擬的方式,造成效能上的降低,因此,XEN在設計上,希望各作業系統可以在開發時就已經將XEN的技術包括進去,這樣在使用時,就可以用區域性模擬的方式,讓作業系統可以直接使用到硬體中的CPU、記憶體等,而不需要通過XEN做模擬的操作。

 

這樣,若硬體都是由Virtual Machine模擬出來的,效能自然會變得比較慢,所以XEN所主推的概念就是,當作業系統預設支援XEN時就可以通過XEN的機制,直接使用到底層的硬體,而不是每個OS都要通過Hypervisor的介面,效能上就可大為提高。

在PV與FV的安裝上,對CPU的要求是有差異的。以PV而言,因為OS原本就支援XEN,所以不需要經過特殊的處理步驟,因此,對CPU來於,沒有特殊的要求,基本上都可以使用。


但FV就不同,因為FV模式是以完全模擬的方式進行,所以CPU必須要特別將此功能加入到CPU的核心中,因此,CPU是有特殊需求的。在Intel與AMD中針對Virtual Machine所加入的功能名稱不同,分別為Intel VT與AMD-V。

在目前Linux的世界,XEN並不是唯一的,除了XEN這一架構外,另外還有一個KVM(Kernel based Vitrual Machine),從2.6.20版本之後的Linux Kernel就支援其功能。因為KVM的做法是以原本Kernel為依據,只要將其module載入即可使用,唯一較XEN弱勢的是KVM以單一Full Virtuallization為服務方式。

虛擬化最近幾年取得了長足的進步,首先由於有大量的開源虛擬機器管理程式在不斷髮展,這個改進幾乎排除了作業系統與大功率伺服器快速增長的利用之間的障礙,公司立即受益。知道最近,軟體模擬虛擬化一直是關注的焦點,兩個常見的軟體模擬虛擬化途徑是完全虛擬化和半虛擬化。對於完全虛擬化,通常呼叫管理程式或虛擬機器監視器,存在於虛擬作業系統和硬體層之間,這個層在作業系統例項之間多路複用競爭系統資源。半虛擬化不同,管理程式在一個協作的環境中運作,因為每個客戶作業系統都知道它正執行在一個虛擬化環境中,因此每個使用管理程式的協作都在硬體下完成虛擬。

兩個途徑都有優勢也有劣勢,半虛擬化的主要優勢在於它執行儘可能快地基於軟體的虛擬化,以不支援有專利的作業系統為代價。完全虛擬化沒有這個限制,但是,完全虛擬化管理程式非常複雜。VMware,一個商業虛擬化解決方案,它就是一個完全虛擬化的例子,Xen,使用者模式Linux(UML)和其他提供的是半虛擬化解決方案。

簡單介紹一下基於硬體的虛擬化,這個線路已經變得模糊起來,隨著Intel的VT技術和AMD的SVM技術的出現,編寫一個管理程式變得更加簡單了,現在,保持管理程式複雜性到最小程度,對於完全虛擬化受益匪淺。

Xen作為最優秀的半虛擬化引擎,在基於硬體的虛擬化的幫助下,現在也支援完全虛擬化MS windows了。KVM是一個相對較新的簡單的,但也非常強大的虛擬化引擎,它已經整合到Linux核心中去了,讓核心天生有虛擬化的能力,因為KVM使用的是基於硬體的虛擬化技術,它不需要修改客戶作業系統,因此,部署在一個受支援的處理器上,它可以從Linux支援任何平臺。

相關推薦

虛擬化虛擬化區別

  圖2. 全虛擬化: 使用Hypervisor分享底層硬體   全虛擬化的執行速度要快於硬體模擬, 但是效能方面不如裸機, 因為Hypervisor需要佔用一些資源. 全虛擬化最大的優點是作業系統沒有經過任何修改. 它的唯一限制是作業系統必須能夠支援底層硬體(比如, PowerPC).   老機器上的H

虛擬化分類(虛擬化虛擬化

span bsp 完全 捕獲 strong spa kvm virtual down 虛擬化分類 1:完全虛擬化(Full Virtualization) 需要跑在宿主機之上 全虛擬化也成為原始虛擬化技術,該模型使用虛擬機協調guest操作系統和原始硬件,VMM在gu

論文中的標點是用形的還是形?形有什麼區別?

論文中的標點是用半形的還是全形?半形和全形有什麼區別? 掃二維碼下載作業幫 拍照搜題,秒出答案,一鍵檢視所有搜題記錄 優質解答 一般英文就用半形,中文用全形;關於數學等自然科學的論文用半形. 轉: 半形--指一字元佔用一個標準的字元位置. 通常的英文字母、數字鍵、符號鍵都是半形的,半

網頁自然語言處理中的字符問題(角)

字符轉換 處理 unicode 指點 介紹 合並 圖片 十六進制 文本   先來看一個截圖,爬蟲得到的結果,裏面99的字體貌似有點奇怪,剛開始以為是不同的字體,在Excel裏選中調整字體時發現沒有變化,後來經過大佬指點,才知道是全角數字(原諒我小白無知)。為了統一起見,把所

TCP 三次握手原理以及連線連線

問題描述 JAVA的client和server,使用socket通訊。server使用NIO。  間歇性的出現client向server建立連線三次握手已經完成,但server的selector沒有響應到這連線。  出問題的時間點,會同時有很多連接出現這個問題

網頁自然語言處理中的字元問題(形)

  先來看一個截圖,爬蟲得到的結果,裡面99的字型貌似有點奇怪,剛開始以為是不同的字型,在Excel裡選中調整字型時發現沒有變化,後來經過大佬指點,才知道是全形數字(原諒我小白無知)。為了統一起見,把所有的全形字元轉換為半形字元,然後再做處理。既然是在爬蟲裡面,那可以直接用程式碼轉換了,但是以前存起來的資料用

虛擬化虛擬化區別

全虛擬化和半虛擬化的區別cpu運行級別:ring0是指CPU的最高運行級別,ring1次之,ring2其次…… 拿Linux+x86來說, 操作系統(內核)的代碼運行在最高運行級別ring0上,可以使用特權指令,控制中斷、修改頁表、訪問設備等等。應用程序的代碼運行在最低運行級別上ring3上,不能做受

虛擬化虛擬化

全虛擬化、半虛擬化半虛擬化和全虛擬化最大的區別:半虛擬化是需要更改系統內核才得以實現虛擬化,而完全虛擬化是不需要修改內核。完全虛擬化提供底層物理系統的全部抽象化,且創建一個新的虛擬系統,客戶機操作系統可以在裏面運行。不需要對客戶機操作系統或者應用程序進行修改(客戶機操作系統或者應用程序像往常一樣運行,意識不到

/虛擬化、硬體/軟體輔助的虛擬化之間的區別與聯絡

全虛擬化 不需要對GuestOS作業系統軟體的原始碼做任何的修改,就可以執行在這樣的VMM中 在全虛擬化的虛擬平臺中,GuestOS並不知道自己是一臺虛擬機器,它會認為自己就是執行在計算機物理硬體裝置上的HostOS。因為全虛擬化的VMM會將一個OS所能夠操作的CPU、記憶體、外設等物理

單工、雙工雙工的區別

--------------------------------------------- -- 時間:2018-11-06 -- 建立人:Ruo_Xiao -- 郵箱:[email protected] ----------------------------------------

單工,雙工,雙工區別以及TDDFDD區別

版權宣告:轉載標明出處,點一個頂即可:)    https://blog.csdn.net/starstar1992/article/details/53032409 作為一名學通訊的,居然對這個概念還是沒搞清楚,簡直就是丟了大臉了!  現在總結如下,理解比較

軟體定義網路、網路虛擬化網路功能虛擬化區別

網路團隊經常要處理鋪天蓋地的配置請求,這些配置請求可能需要數天或數週來處理,所幸的是,現在有幾種方法可以幫助企業提高網路靈活性,主要包括網路虛擬化[注](NV)、網路功能虛擬化[注](NFV[注])和軟體定義網路[注](SDN[注])。 這三種方法可能聽起來有些混淆,但其

虛擬化虛擬化的實現方式

目錄 全虛擬化 不需要對GuestOS作業系統軟體的原始碼做任何的修改,就可以執行在這樣的VMM中 在全虛擬化的虛擬平臺中,GuestOS並不知道自己是一臺虛擬機器,它會認為自己就是執行在計算機物理硬體裝置上的HostOS。因為全虛擬化的VMM會

長連接短連接,單工、雙工雙工

服務 報文 span 用戶 ket 報文頭 用兩個 div 連續 1、長連接與短連接 所謂長連接,指在一個TCP連接上可以連續發送多個數據包,在TCP連接保持期間,如果沒有數據包發送,需要雙方發檢測包以維持此連接,一般需要自己做在線維持。 短連接是指通信雙方有數據交互

javascript中局部變量局變量的區別詳解

under ati 例子 方便 defined 幫助 介紹 但是 全局變量 javascript有兩種變量:局部變量和全局變量。當然,我們這篇文章是幫助大家真正的區別這兩種變量。 首先,局部變量是指只能在本變量聲明的函數內部調用。全局變量時整個代碼中都可以調用的變量。當然,

局部變量局變量的區別

沒有 例如 賦值 ont 初始化 退出 std cpp 部分 局部變量和全局變量的區別 局部變量可以與全局變量重名,但是局部變量會屏蔽全局變量。要使用全局變量,需要使用::。在函數體內引用變量會用到同名的局部變量而不是全局變量,對於一些編譯器來說,在同一個函數體內可以定義

在Wmware虛擬機上如何檢查是否CPU支持虛擬化 加載kvm模塊

vcpu proc vmx lin 是否 nbsp 設備 num 如何 在vm虛擬機中 修改 虛擬機==>設置==> 處理器==>虛擬化引擎(選第二項:虛擬化Intel VT-x/EPT 或 AMD-V/RVI(V) ) # vmx或svm :表示

工業控制系統發展趨勢 --PLC的虛擬化軟件定義

嵌入式 物聯網 “軟件正在吞噬世界,所有過去特定硬件實現的功能,現在都會通過軟件實現”,傳統封閉的工業控制系統,其通過特定硬件實現的功能在工業互聯網或工業4.0時代都將被軟件所取代。目錄零、前言... 2壹、工業控制系統的核心PLC. 3貳、工業控制系統發展趨勢... 6叁、PLC的虛擬化和軟件定義.

解決VMware下64位Linux系統不支援虛擬化(VMX)

一、前提: cpu支援Inter VT-X或AMD虛擬化技術,具體參考官網說明。 二、問題描述: 物理機下,VMware Workstation能安裝64位CentOS系統,處理器Inter i3 M390,且支援Inter VT-X虛擬化技術,物理機BIOS中已開啟Inter虛擬化開關(自己

TCP連線佇列連線

概述   如上圖所示, 在TCP三次握手中,伺服器維護一個半連線佇列(sync queue) 和一個全連線佇列(accept queue)。  當服務端接收到客戶端第一次SYN握手請求時,將建立的request_sock結構,儲存在半連線佇列中(向客戶端傳送S