(四)系统虚拟化关键技术
一、系統(tǒng)虛擬化的主要作用
1.??????隔離:工作負(fù)載,之前單個系統(tǒng)跑兩個app,做好隔離,可以分兩個虛擬機
2.??????合并:之前兩臺物理機運行兩個app,現(xiàn)在一臺物理機運行兩個app
3.??????遷移:之前在一臺物理機不能滿足要求,現(xiàn)在遷移到另一臺物理機。
4.??????個性化:做嵌入,對不同app做不同配置,因為app的性能要求有各自的特點
二、cpu虛擬化
1.??????本質(zhì):為每個虛擬機提供一個或多個虛擬CPU(VCPU),多個VCPU 復(fù)用物理CPUs, 任何時刻一個物理CPU只能被一個VCPU使用
2.??????必須解決的問題:
(1)虛擬CPU的正確運行:調(diào)虛擬cpu要看起來和物理cpu一樣。保證虛擬機的指令正確執(zhí)行,各虛擬機之間不互相影響。現(xiàn)有實現(xiàn)技術(shù):模擬執(zhí)行和監(jiān)控執(zhí)行
(2)虛擬CPU的調(diào)度:虛擬cpu依賴物理cpu。由VMM決定當(dāng)前哪一個VCPU實際在物理CPU上運行。保證VCPU的性能,調(diào)度的公平性
3. 模擬執(zhí)行:是指由VMM模擬所有指令的執(zhí)行效果,包括解釋執(zhí)行和二進制代碼翻譯執(zhí)行。效率較低。
監(jiān)控執(zhí)行:是指虛擬機的絕大多數(shù)指令都在物理主機上直接執(zhí)行,少量可能影響虛擬機運行或影響其虛擬機狀態(tài)的指令(敏感指令)必須由VMM監(jiān)控并模擬其執(zhí)行效果。執(zhí)行效率較高。取決于模擬執(zhí)行指令數(shù)量、復(fù)雜度和算法性能
4.Xen基于額度調(diào)度算法——公平調(diào)度算法
該算法有兩個參數(shù)其中一個參數(shù)cap是指示占用多少個cpu。另一個參數(shù)是weight指示一個是cpu占多少時間。初始化時:weight=credit若cap=100則 vcpu占一個物理cpu,cap=200vcpu占兩個物理cpu,在算法中有三個隊列:OVER(已獲得),UNDER(等待),BOOST(某些虛擬機讓出了cpu,下次調(diào)度放進boost,在調(diào)度時優(yōu)先調(diào)度),每10毫秒運行一次后credit=credit-100+30/n,3次之后額度用完,讓出cpu,保證每個vcpu運行時間,保證相對公平。
該算法曾經(jīng)出現(xiàn)過bug:某cpu阻塞掛起,加入boost隊列,下個周期優(yōu)先調(diào)度,周期加長,但是可以利用,在每次結(jié)束時,主動掛起,則可以無限期使用cpu可占80-90%的時間。
4 .Intel VT-x操作模式cpu硬件虛擬化
VMX root 模式:擁有全部權(quán)限,用于VMM的運行
VMX non-root 模式:只擁有部分權(quán)限,用于運行客戶機軟件,GUEST OS依靠環(huán)級的設(shè)置來減少客戶及軟件的權(quán)限,通過環(huán)重命名和壓縮來完成
三、內(nèi)存虛擬化
5. 機器地址: 真實硬件的機器地址(HPA,host physical address)
物理地址:經(jīng)過VMM抽象的虛擬機所見偽物理地址(GPA,guestphysical address)
虛擬地址:Guest OS提供給應(yīng)用程序使用的線性地址(GVA,guest virtual address)
操作系統(tǒng)幫助進程執(zhí)行g(shù) , vm幫os 執(zhí)行 f
6.頁表虛擬化
操作系統(tǒng)通過配置多級頁表建立虛擬地址到物理地址的映射關(guān)系,并將頁表的指針載入處理器的內(nèi)存管理單元MMU,由硬件在必要時通過查詢頁表,以完成虛擬地址到物理地址的映射。
7.氣球驅(qū)動
氣球驅(qū)動最早來源于VMware ESXServer系統(tǒng)。當(dāng)系統(tǒng)內(nèi)存被過量使用或有多余時,通過客戶機上的氣球驅(qū)動實現(xiàn)內(nèi)存頁面的回收和再分配。
每個Domain在建立之初,Xen根據(jù)其配置文件中的定義為Domain分配固定數(shù)量的物理內(nèi)存。但是,1)由于Guest OS運行的應(yīng)用程序過多會導(dǎo)致其內(nèi)存嚴(yán)重不足;2)由于Guest OS工作量不大而使得內(nèi)存被閑置。Xen實現(xiàn)了氣球驅(qū)動來調(diào)節(jié)各Domain之間的物理內(nèi)存分布。
?當(dāng)Xen/VMM需要回收內(nèi)存時,給ballon充氣,即:讓客戶機中的氣球驅(qū)動向Guest OS申請內(nèi)存空間(氣球膨脹),ballon再把分配到的物理內(nèi)存給VMM,從而使得Guest OS使用的內(nèi)存空間減少。
?當(dāng)Guest OS需要更多內(nèi)存空間時,客戶機中的氣球驅(qū)動可以向Guest OS釋放內(nèi)存空間(氣球縮小),從而使得Guest OS實際使用的內(nèi)存空間增大。
8內(nèi)存共享---內(nèi)存頁面的寫時復(fù)制機制
被共享的頁面對于所有虛擬機都是只讀的,當(dāng)某一個虛擬機需要對其進行修改時,需要先復(fù)制出一份頁面,然后在復(fù)制出的頁面上進行修改。
為了減少掃描相同頁面的開銷,VMware采取先對頁面計算的Hash值做比較,如果二者Hash值相同再對頁面內(nèi)容進行比較。
內(nèi)存可寫工作集(writableworking sets) 的使用
應(yīng)用于虛擬機遷移和克隆等場景。
在虛擬機運行過程中,有一大部分內(nèi)存很少或從來不被修改,那些頻繁被修改的內(nèi)存即為內(nèi)存可寫工作集。
虛擬機內(nèi)存管理中,如何獲取內(nèi)存可寫工作集呢?如:將虛擬機中所有內(nèi)存頁面設(shè)置為只讀,虛擬機所有對內(nèi)存的寫操作都會引起一個頁面失效,頁面失效處理程序中把對該頁面的寫操作通過位圖等方法記錄下來。
硬件輔助內(nèi)存虛擬化
?Intel 虛擬處理器標(biāo)識(VPIDs), 防止每次VM exit和VM entry導(dǎo)致的TLB清空。
?Intel 擴展頁表EPT,將物理地址轉(zhuǎn)換為機器地址,避免了頁面失效帶來的VM exit開銷。
四、IO虛擬化
CPU的能力提升雖然可以更快地處理數(shù)據(jù),但是其前提是:數(shù)據(jù)能夠順暢的到達(dá)CPU。因此,I/O的能力提升是一個重要的部分。由于I/O設(shè)備具有異構(gòu)性強、內(nèi)部狀態(tài)不易控制等特點,I/O設(shè)備的虛擬化一直是虛擬化技術(shù)的難點所在。
1.模擬I/O設(shè)備
VMM 對虛擬機摸擬一個I/O設(shè)備,通過完全模擬設(shè)備的功能,虛擬機可以使用對應(yīng)真實的驅(qū)動程序,這個方式可以提供完美的兼容性,但是顯然這種模擬會影響到性能。
2. 額外軟件接口
VMM軟件將提供一系列直通的設(shè)備接口給虛擬機,這個方式可以提升虛擬化的性能,但兼容性有所降低。
總結(jié)
以上是生活随笔為你收集整理的(四)系统虚拟化关键技术的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 操作系统与虚拟化安全第一次作业-关键习题
- 下一篇: (五)操作系统安全概念和设计思想