今天來研究一個(gè)有意思的話題,虛擬化(virtualization)。
開始前,先閑扯一下,最近一個(gè)詞比較火,“元宇宙(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”。啥是虛擬呢,通俗點(diǎn)說就是假的,不是物理上真實(shí)的。
虛擬化技術(shù)是一種廣泛使用的技術(shù),比如在云計(jì)算業(yè)務(wù),數(shù)據(jù)中心業(yè)務(wù)中。為什么處理器需要虛擬化,或者說虛擬化能帶來什么好處呢?
首先,在處理器設(shè)計(jì)和應(yīng)用里,要提一個(gè)概念,就是“虛擬機(jī)(Virtual Machine)”。關(guān)于虛擬機(jī),玩過Vmware的同學(xué)可能有一定了解。與虛擬機(jī)相對(duì)應(yīng)的就是“真實(shí)機(jī)(Real Machine)”,有時(shí)也叫物理機(jī)。物理機(jī)好理解,比如我們買一臺(tái)電腦做家用機(jī),那么這臺(tái)電腦的所有物理設(shè)備,比如硬盤,網(wǎng)卡等等,都是歸你自己使用。如果是服務(wù)器機(jī),這種獨(dú)占的使用方式無疑是效率非常低下的。把服務(wù)器的巨大資源劃分成塊分配使用,或者是按照時(shí)間片輪流使用,就可以大大提高效率了。這就需要使用到虛擬化技術(shù)了。虛擬化技術(shù)就是要讓應(yīng)用程序運(yùn)行在虛擬機(jī)上,就像運(yùn)行在真實(shí)機(jī)上一樣。歸納一下,虛擬化技術(shù)能帶來的好處有以下幾點(diǎn):
隔離:即允許在相互不信任的計(jì)算環(huán)境之間共享物理系統(tǒng)。例如,兩個(gè)競(jìng)爭(zhēng)對(duì)手可以在一個(gè)數(shù)據(jù)中心共享同一臺(tái)物理機(jī)器,而不能夠訪問彼此的數(shù)據(jù)。
高可用性:虛擬化技術(shù)允許在物理機(jī)器之間無縫且透明地遷移工作負(fù)載,通常用于將工作負(fù)載從可能需要維護(hù)和更換的故障硬件平臺(tái)遷移出去。
工作負(fù)載平衡:盡可能多地使用每個(gè)硬件平臺(tái),這可以通過虛擬機(jī)的遷移來實(shí)現(xiàn),或者通過在物理機(jī)上共同托管適當(dāng)?shù)墓ぷ髫?fù)載來實(shí)現(xiàn)。
沙箱:虛擬機(jī)可用于為可能干擾其運(yùn)行的機(jī)器其他部分的應(yīng)用程序提供沙箱。在虛擬機(jī)中運(yùn)行這些應(yīng)用程序可以防止應(yīng)用程序的錯(cuò)誤或惡意部分干擾物理計(jì)算機(jī)上的其他應(yīng)用程序或數(shù)據(jù)。
當(dāng)然,虛擬化技術(shù)帶來的好處不止這些,此處就不一一列舉了。
如何把虛擬機(jī)和真實(shí)的物理設(shè)備隔絕呢,或者說如何實(shí)現(xiàn)虛擬化。聰明的行業(yè)前輩們想到了一個(gè)方法,在hardware之上加一層hypervisor。對(duì)于hypervisor,百度百科是這樣定義的,“一種運(yùn)行在基礎(chǔ)物理服務(wù)器和操作系統(tǒng)之間的中間軟件層,可允許多個(gè)操作系統(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)著這些硬件資源的訪問,也同時(shí)在各個(gè)虛擬機(jī)之間施加防護(hù)。當(dāng)服務(wù)器啟動(dòng)并執(zhí)行Hypervisor時(shí),它會(huì)加載所有虛擬機(jī)客戶端的操作系統(tǒng)同時(shí)會(huì)分配給每一臺(tái)虛擬機(jī)適量的內(nèi)存,CPU,網(wǎng)絡(luò)和磁盤”。
有了hypervisor,我們?cè)賮砜匆幌孪到y(tǒng)如何構(gòu)成。先以汽車芯片為例,如下圖。Hypervisor負(fù)責(zé)協(xié)調(diào),控制所有的硬件資源。在hypervisor之上,把汽車行駛和安全相關(guān)的部分隔離成一部分,運(yùn)行封閉操作系統(tǒng)(Closed OS);把與娛樂等相關(guān)的部分隔離成另一部分,運(yùn)行開放操作系統(tǒng)(Open OS)。相對(duì)應(yīng)的應(yīng)用程序(APP)運(yùn)行在各自操作系統(tǒng)之上。這樣就可以起到一個(gè)很好的隔離作用,用戶自己安裝的APP不會(huì)影響到汽車行駛安全。

圖1 汽車芯片中的虛擬化示意圖
再來看一個(gè)服務(wù)器的例子,如下圖。一臺(tái)服務(wù)器可能擁有很多的處理器,硬盤等。通過hypervisor,可以分配給不同的虛擬機(jī)以不同的硬件資源。比如對(duì)于VM1,可能要運(yùn)行一些安全等級(jí)高的任務(wù),這時(shí)就可以把Hardware0的資源只分配給VM1,其它的虛擬機(jī)不能訪問。對(duì)于Hardware1,同時(shí)分配給VM0,VM1,VM2等多個(gè)虛擬機(jī),充分利用其資源。

圖2 服務(wù)器芯片中的虛擬化示意圖
Hypervisor分為兩大類,一類是standalone hypervisor,或者叫type1;另一類是hosted hypervisor,也叫type2。

圖3 type 1 hypervisor(standalone)

圖4 type 2 hypervisor(hosted)
兩者的區(qū)別是,type1的hypervisor是直接運(yùn)行在硬件之上的,而type2的hypervisor是運(yùn)行在Host OS之中的。type1相當(dāng)于一個(gè)輕量級(jí)的操作系統(tǒng),直接跑在宿主機(jī)的硬件上;而type2相當(dāng)于一個(gè)應(yīng)用軟件,運(yùn)行在宿主機(jī)的操作系統(tǒng)之中。兩者相同的是,客戶操作系統(tǒng)(Guest OS)都是運(yùn)行在hypervisor之上的。type1的hypervisor通常在性能上比Type2表現(xiàn)的更好,更為安全。type2相較于type1還有一個(gè)缺點(diǎn)就是延遲太高,這是因?yàn)閔ypervisor與硬件之間的交流還需要穿過操作系統(tǒng)這一層。Hosted hypervisor最多的應(yīng)用場(chǎng)景是作為client hypervisor運(yùn)行在終端用戶的電腦上,而這種場(chǎng)景下一般是不需要關(guān)心延遲問題的。大多數(shù)企業(yè)一般選擇type1類型的hypervisor用于數(shù)據(jù)中心的計(jì)算需求。
在Arm平臺(tái)上,type1 hypervisor比較典型的代表是Xen。Xen是由劍橋大學(xué)計(jì)算機(jī)實(shí)驗(yàn)室開發(fā)的一個(gè)開源項(xiàng)目。是一個(gè)直接運(yùn)行在計(jì)算機(jī)硬件之上的用以替代操作系統(tǒng)的軟件層,它能夠在計(jì)算機(jī)硬件上并發(fā)的運(yùn)行多個(gè)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)生的重要原因,因?yàn)閤86體系結(jié)構(gòu)中,部分敏感指令不是特權(quán)指令,這些指令不能自動(dòng)產(chǎn)生異常,因此想要系統(tǒng)正常運(yùn)行就必須要捕獲這些指令。于是Xen采用修改Guest OS內(nèi)核的方法對(duì)這些有缺陷的指令進(jìn)行替換。根據(jù)直覺,既然有半虛擬化,就一定有全虛擬化,對(duì)不對(duì)?沒錯(cuò),你很機(jī)智,確實(shí)有“完全虛擬化”,又稱“硬件虛擬化(Hardware Virtual Machine)”。簡(jiǎn)單說,兩者的區(qū)別就是在半虛擬化中,Guest OS知道自己運(yùn)行在Hypervisor上而不是硬件上,同時(shí)也可以識(shí)別出其他運(yùn)行在相同環(huán)境中的客戶虛擬機(jī)。在全虛擬化中,Guest OS任務(wù)自己運(yùn)行在硬件上,無法感知其他Guest OS。
在Arm平臺(tái)上,type2 hypervisor比較典型的代表是KVM。KVM(Kernel-basedVirtual Machine)是一個(gè)基于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管理等代碼,使之成為一個(gè)可以支持運(yùn)行虛擬機(jī)的Hypervisor。

圖5 Xen和KVM對(duì)比示意圖
對(duì)于hypervisor感興趣的同學(xué)可以上網(wǎng)去搜搜,一大堆的文章,在此就不過多介紹了(其實(shí)我也是一知半解,哈哈)。我們更關(guān)心的是,芯片要支持虛擬化,我們要做哪些工作。
審核編輯:湯梓紅
-
處理器
+關(guān)注
關(guān)注
68文章
20142瀏覽量
246641 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
7325瀏覽量
128565 -
虛擬機(jī)
+關(guān)注
關(guān)注
1文章
968瀏覽量
30152 -
VMware
+關(guān)注
關(guān)注
1文章
301瀏覽量
22998 -
元宇宙
+關(guān)注
關(guān)注
13文章
1408瀏覽量
12474
原文標(biāo)題:Arm系列--虛擬化(一)
文章出處:【微信號(hào):Ithingedu,微信公眾號(hào):安芯教育科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
WAN中的虛擬化
簡(jiǎn)要分析AArch64的虛擬化
ARM系列虛擬化資料分享
探討一下ARM處理器平臺(tái)的虛擬化
介紹arm GICv3和timer虛擬化的支持
深入了解AArch64虛擬化
英特爾發(fā)布奔騰4處理器,支持虛擬化技術(shù)
存儲(chǔ)虛擬化五步規(guī)劃剖析
虛擬化和云計(jì)算之間的關(guān)系
虛擬化技術(shù)有哪些
服務(wù)器虛擬化技術(shù)是什么?它有什么用?
服務(wù)器虛擬化技術(shù)是什么,常見虛擬化架構(gòu)有哪些
ARM對(duì)虛擬化下設(shè)備直通的支持

為什么處理器需要虛擬化,虛擬化能帶來什么好處
評(píng)論