今天來研究一個有意思的話題,虛擬化(virtualization)。
開始前,先閑扯一下,最近一個詞比較火,“元宇宙(Metaverse)”。在維基百科里面是這么定義元宇宙的,“The Metaverse is a collective virtual shared space, created by the convergence of virtually enhanced physical reality and physically persistent virtual space, including the sum of all virtual worlds, augmented reality, and the Internet”。啥是虛擬呢,通俗點說就是假的,不是物理上真實的。
虛擬化技術(shù)是一種廣泛使用的技術(shù),比如在云計算業(yè)務(wù),數(shù)據(jù)中心業(yè)務(wù)中。為什么處理器需要虛擬化,或者說虛擬化能帶來什么好處呢?
首先,在處理器設(shè)計和應(yīng)用里,要提一個概念,就是“虛擬機(jī)(Virtual Machine)”。關(guān)于虛擬機(jī),玩過Vmware的同學(xué)可能有一定了解。與虛擬機(jī)相對應(yīng)的就是“真實機(jī)(Real Machine)”,有時也叫物理機(jī)。物理機(jī)好理解,比如我們買一臺電腦做家用機(jī),那么這臺電腦的所有物理設(shè)備,比如硬盤,網(wǎng)卡等等,都是歸你自己使用。如果是服務(wù)器機(jī),這種獨占的使用方式無疑是效率非常低下的。把服務(wù)器的巨大資源劃分成塊分配使用,或者是按照時間片輪流使用,就可以大大提高效率了。這就需要使用到虛擬化技術(shù)了。虛擬化技術(shù)就是要讓應(yīng)用程序運行在虛擬機(jī)上,就像運行在真實機(jī)上一樣。歸納一下,虛擬化技術(shù)能帶來的好處有以下幾點:
隔離:即允許在相互不信任的計算環(huán)境之間共享物理系統(tǒng)。例如,兩個競爭對手可以在一個數(shù)據(jù)中心共享同一臺物理機(jī)器,而不能夠訪問彼此的數(shù)據(jù)。
高可用性:虛擬化技術(shù)允許在物理機(jī)器之間無縫且透明地遷移工作負(fù)載,通常用于將工作負(fù)載從可能需要維護(hù)和更換的故障硬件平臺遷移出去。
工作負(fù)載平衡:盡可能多地使用每個硬件平臺,這可以通過虛擬機(jī)的遷移來實現(xiàn),或者通過在物理機(jī)上共同托管適當(dāng)?shù)墓ぷ髫?fù)載來實現(xiàn)。
沙箱:虛擬機(jī)可用于為可能干擾其運行的機(jī)器其他部分的應(yīng)用程序提供沙箱。在虛擬機(jī)中運行這些應(yīng)用程序可以防止應(yīng)用程序的錯誤或惡意部分干擾物理計算機(jī)上的其他應(yīng)用程序或數(shù)據(jù)。
當(dāng)然,虛擬化技術(shù)帶來的好處不止這些,此處就不一一列舉了。
如何把虛擬機(jī)和真實的物理設(shè)備隔絕呢,或者說如何實現(xiàn)虛擬化。聰明的行業(yè)前輩們想到了一個方法,在hardware之上加一層hypervisor。對于hypervisor,百度百科是這樣定義的,“一種運行在基礎(chǔ)物理服務(wù)器和操作系統(tǒng)之間的中間軟件層,可允許多個操作系統(tǒng)和應(yīng)用共享硬件。也可叫做VMM(Virtual Machine Monitor ),即虛擬機(jī)監(jiān)視器。Hypervisor是一種在虛擬環(huán)境中的“元”操作系統(tǒng)。他們可以訪問服務(wù)器上包括磁盤和內(nèi)存在內(nèi)的所有物理設(shè)備。Hypervisor不但協(xié)調(diào)著這些硬件資源的訪問,也同時在各個虛擬機(jī)之間施加防護(hù)。當(dāng)服務(wù)器啟動并執(zhí)行Hypervisor時,它會加載所有虛擬機(jī)客戶端的操作系統(tǒng)同時會分配給每一臺虛擬機(jī)適量的內(nèi)存,CPU,網(wǎng)絡(luò)和磁盤”。
有了hypervisor,我們再來看一下系統(tǒng)如何構(gòu)成。先以汽車芯片為例,如下圖。Hypervisor負(fù)責(zé)協(xié)調(diào),控制所有的硬件資源。在hypervisor之上,把汽車行駛和安全相關(guān)的部分隔離成一部分,運行封閉操作系統(tǒng)(Closed OS);把與娛樂等相關(guān)的部分隔離成另一部分,運行開放操作系統(tǒng)(Open OS)。相對應(yīng)的應(yīng)用程序(APP)運行在各自操作系統(tǒng)之上。這樣就可以起到一個很好的隔離作用,用戶自己安裝的APP不會影響到汽車行駛安全。
圖1 汽車芯片中的虛擬化示意圖
再來看一個服務(wù)器的例子,如下圖。一臺服務(wù)器可能擁有很多的處理器,硬盤等。通過hypervisor,可以分配給不同的虛擬機(jī)以不同的硬件資源。比如對于VM1,可能要運行一些安全等級高的任務(wù),這時就可以把Hardware0的資源只分配給VM1,其它的虛擬機(jī)不能訪問。對于Hardware1,同時分配給VM0,VM1,VM2等多個虛擬機(jī),充分利用其資源。
圖2 服務(wù)器芯片中的虛擬化示意圖
Hypervisor分為兩大類,一類是standalone hypervisor,或者叫type1;另一類是hosted hypervisor,也叫type2。
圖3 type 1 hypervisor(standalone)
圖4 type 2 hypervisor(hosted)
兩者的區(qū)別是,type1的hypervisor是直接運行在硬件之上的,而type2的hypervisor是運行在Host OS之中的。type1相當(dāng)于一個輕量級的操作系統(tǒng),直接跑在宿主機(jī)的硬件上;而type2相當(dāng)于一個應(yīng)用軟件,運行在宿主機(jī)的操作系統(tǒng)之中。兩者相同的是,客戶操作系統(tǒng)(Guest OS)都是運行在hypervisor之上的。type1的hypervisor通常在性能上比Type2表現(xiàn)的更好,更為安全。type2相較于type1還有一個缺點就是延遲太高,這是因為hypervisor與硬件之間的交流還需要穿過操作系統(tǒng)這一層。Hosted hypervisor最多的應(yīng)用場景是作為client hypervisor運行在終端用戶的電腦上,而這種場景下一般是不需要關(guān)心延遲問題的。大多數(shù)企業(yè)一般選擇type1類型的hypervisor用于數(shù)據(jù)中心的計算需求。
在Arm平臺上,type1 hypervisor比較典型的代表是Xen。Xen是由劍橋大學(xué)計算機(jī)實驗室開發(fā)的一個開源項目。是一個直接運行在計算機(jī)硬件之上的用以替代操作系統(tǒng)的軟件層,它能夠在計算機(jī)硬件上并發(fā)的運行多個Guest OS。Xen支持x86、x86-64、Power PC和Arm多種處理器。2014年03月11日,Xen發(fā)布4.4版本,更好地支持Arm架構(gòu)。Xen是半虛擬化(Para-Virtualization)技術(shù)的典型代表。半虛擬化技術(shù),主要解決的就是如何捕獲非特權(quán)指令的敏感指令。x86體系是導(dǎo)致半虛擬化技術(shù)產(chǎn)生的重要原因,因為x86體系結(jié)構(gòu)中,部分敏感指令不是特權(quán)指令,這些指令不能自動產(chǎn)生異常,因此想要系統(tǒng)正常運行就必須要捕獲這些指令。于是Xen采用修改Guest OS內(nèi)核的方法對這些有缺陷的指令進(jìn)行替換。根據(jù)直覺,既然有半虛擬化,就一定有全虛擬化,對不對?沒錯,你很機(jī)智,確實有“完全虛擬化”,又稱“硬件虛擬化(Hardware Virtual Machine)”。簡單說,兩者的區(qū)別就是在半虛擬化中,Guest OS知道自己運行在Hypervisor上而不是硬件上,同時也可以識別出其他運行在相同環(huán)境中的客戶虛擬機(jī)。在全虛擬化中,Guest OS任務(wù)自己運行在硬件上,無法感知其他Guest OS。
在Arm平臺上,type2 hypervisor比較典型的代表是KVM。KVM(Kernel-basedVirtual Machine)是一個基于Linux環(huán)境的開源虛擬化解決方案,最早由以色列Qumranet公司開發(fā),并于2007年2月被集成到Linux 2.6.20內(nèi)核中,成為內(nèi)核的一部分。與VMware ESX/ESXi、微軟Hyper-V和Xen等虛擬化產(chǎn)品不同,KVM的思想是在Linux內(nèi)核的基礎(chǔ)上添加虛擬機(jī)管理模塊,重用Linux內(nèi)核中已經(jīng)完善的進(jìn)程調(diào)度、內(nèi)存管理、IO管理等代碼,使之成為一個可以支持運行虛擬機(jī)的Hypervisor。
圖5 Xen和KVM對比示意圖
對于hypervisor感興趣的同學(xué)可以上網(wǎng)去搜搜,一大堆的文章,在此就不過多介紹了(其實我也是一知半解,哈哈)。我們更關(guān)心的是,芯片要支持虛擬化,我們要做哪些工作。
審核編輯:湯梓紅
-
處理器
+關(guān)注
關(guān)注
68文章
19432瀏覽量
231254 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6898瀏覽量
123783 -
虛擬機(jī)
+關(guān)注
關(guān)注
1文章
949瀏覽量
28451 -
VMware
+關(guān)注
關(guān)注
1文章
298瀏覽量
21772 -
元宇宙
+關(guān)注
關(guān)注
13文章
1396瀏覽量
11574
原文標(biāo)題:Arm系列--虛擬化(一)
文章出處:【微信號:Ithingedu,微信公眾號:安芯教育科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論