国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

全面介紹Xen虛擬機(jī) 深入學(xué)習(xí)Xen新起點(diǎn)

2019-11-18 13:08:41
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  本文主要是寫(xiě)給新接觸Xen的開(kāi)發(fā)者及想深入了解Xen的人。
  
  Xen VMM(virtual machine monitor)是由劍橋大學(xué)計(jì)算機(jī)實(shí)驗(yàn)室開(kāi)發(fā)的一個(gè)開(kāi)源項(xiàng)目,它能夠讓我們創(chuàng)建更多的虛擬機(jī),每一個(gè)虛擬機(jī)都是運(yùn)行在同一個(gè)操作系統(tǒng)上的實(shí)例。
  
  這些客戶OS可以是修補(bǔ)過(guò)的linux內(nèi)核2.4或2.6,也可以是修補(bǔ)過(guò)的NetBSD/FreeBSD內(nèi)核。用戶應(yīng)用程序就運(yùn)行在這些客戶OS上,并不需要修改任何代碼。
  
  我曾經(jīng)緊密跟蹤Xen項(xiàng)目一年多。對(duì)Xen產(chǎn)生愛(ài)好是在讀了2004年的OLS(Ottawa Linux Symposium)論文集之后。
  
  完全虛擬化已經(jīng)被一些硬件仿真程序?qū)崿F(xiàn)了。硬件仿真器的不利因素是它們的性能。
  
  Xen項(xiàng)目(半虛擬化)的思想已經(jīng)不是很新鮮了。性能度量和它達(dá)到的高效性,能夠被看作是一個(gè)突破,運(yùn)行Xen的系統(tǒng)開(kāi)銷確實(shí)非常小,大約占3%。
  
  就像剛才所說(shuō)的那樣,現(xiàn)在的Xen要為內(nèi)核打補(bǔ)丁,但是,將來(lái)的處理器能支持虛擬化,內(nèi)核也就不需要打補(bǔ)丁了。比如說(shuō),Intel的VT和AMD的Pacifica處理器都將包括這種支持。
  
  XenSource公司2005年8月在Intel開(kāi)發(fā)者論壇(IDF)上發(fā)表聲明說(shuō),它已經(jīng)利用Intel的VT-Enabled平臺(tái)和Xen技術(shù)虛擬化了Linux和Windows xp SP 2。
  
  假如沒(méi)有其它虛擬化方法的話,Intel的VT和AMD的Pacifica將會(huì)在對(duì)Xen的支持上展開(kāi)競(jìng)爭(zhēng)。
  
  同時(shí)參與競(jìng)爭(zhēng)的還有VMWare公司的ESX Server,它不是基于Xen的虛擬化解決方案。VMWare公司2005年8月初聲明,他將通過(guò)一個(gè)叫VMware Community Source的計(jì)劃答應(yīng)他的合作伙伴使用VMware ESX Server的源代碼和接口。
  
  VMware的一個(gè)顯著優(yōu)勢(shì)就是它不需要在客戶OS上打補(bǔ)丁。VMware可能比Xen運(yùn)行地慢一些,因?yàn)樗褂糜白禹?yè)表(shadow page tables),而Xen同時(shí)使用直接和影子頁(yè)表。
  
  Xen已經(jīng)在像Fedora Core 4、Debian和SuSE PRofessional 9.3這些產(chǎn)品中捆綁發(fā)行了,它也將被包含在RHEL 5中。
  
  針對(duì)其它處理器的支持正在有條不紊地進(jìn)行著。Xen小組致力于x86_64 port,同時(shí)IBM著手于提供Power 5芯片的支持。
  
  保護(hù)環(huán)
  
  在Xen中,一個(gè)“系統(tǒng)治理程序”運(yùn)行在0環(huán),客戶OS運(yùn)行在1環(huán),應(yīng)用程序運(yùn)行在3環(huán)。這種關(guān)系對(duì)于x64/64有一點(diǎn)不同,就是客戶內(nèi)核和應(yīng)用程序都運(yùn)行在3環(huán)上。
  
  Xen自身被稱為“系統(tǒng)治理程序”,是因?yàn)樗瓤蛻鬙S的系統(tǒng)治理代碼運(yùn)行所需的特權(quán)級(jí)還高。
  
  當(dāng)系統(tǒng)引導(dǎo)的時(shí)候,Xen被裝載到0環(huán)的內(nèi)存中。它在1環(huán)上啟動(dòng)修補(bǔ)過(guò)的內(nèi)核,這被稱作是domain 0(譯者注:domain是指一個(gè)運(yùn)行中的虛擬機(jī),在其上有一個(gè)guest OS在執(zhí)行)。從這個(gè)domain開(kāi)始,你可以創(chuàng)建更多的domain,也可以銷毀它們,可以進(jìn)行domain的遷移、設(shè)置參數(shù)等等。你創(chuàng)建的那些domain也運(yùn)行在1環(huán)它們的內(nèi)核中。用戶應(yīng)用程序運(yùn)行在3環(huán)。
  
 全面介紹Xen虛擬機(jī) 深入學(xué)習(xí)Xen新起點(diǎn)(圖一)

  目前,修補(bǔ)過(guò)的Linux內(nèi)核2.4和2.6可以作為domain 0。據(jù)Xen開(kāi)發(fā)者所說(shuō),將來(lái)domain 0僅支持2.6的內(nèi)核補(bǔ)丁。構(gòu)造domain 0的大部分工作是在xen/arch/x86/domain_build.c中的constrUCt_dom0()方法中實(shí)現(xiàn)的。
  
  物理設(shè)備驅(qū)動(dòng)程序只能運(yùn)行在特權(quán)級(jí),也就是domain 0上。Xen依靠Linux或其它修補(bǔ)過(guò)的OS內(nèi)核對(duì)它所有的設(shè)備提供虛擬化支持。這樣的好處就是Xen的開(kāi)發(fā)者不必再去開(kāi)發(fā)設(shè)備驅(qū)動(dòng)程序。
  
  在一個(gè)有標(biāo)簽TLB的處理器上使用Xen能夠大大提高性能。標(biāo)簽TLB能夠把ASID(address space identifier)放在TLB入口處。有了這個(gè)特性,當(dāng)處理器在系統(tǒng)治理程序和客戶OS之間切換時(shí)就不需要刷新TLB了,這大大減少了系統(tǒng)開(kāi)銷。
  
  Xend Deamon
  
  首先,我們介紹一下Xend,它是Xen控制器daemon,意思是說(shuō)它負(fù)責(zé)處理創(chuàng)建、銷毀、遷移以及其它許多domain治理的任務(wù)。它很大一部分動(dòng)作是基于一個(gè)HTTP服務(wù)器的。大量對(duì)domain的控制請(qǐng)求都是通過(guò)發(fā)送HTTP請(qǐng)求來(lái)實(shí)現(xiàn)的。
  
  我們?cè)谝龑?dǎo)進(jìn)入Xen后通過(guò)命令行命令xend start來(lái)啟動(dòng)Xend daemon。它需要Python2.3的支持。
  
  Xend daemon的工作是建立在與XCS server(the control Switch)的交互上。所以,當(dāng)我們啟動(dòng)Xend daemon時(shí),需要檢查一下XCS是否已經(jīng)啟動(dòng)和運(yùn)行了。假如沒(méi)有,我們將試著去啟動(dòng)它。
  
  Srv Daemon是Xend的主要程序,啟動(dòng)Xend daemon就會(huì)創(chuàng)建一個(gè)Srv Daemon類的實(shí)例。
  
  接下來(lái)在createFactories()方法中創(chuàng)建一個(gè)Channel Factory。Channel Factory有一個(gè)隱含的notifier對(duì)象。Xend daemon的大量工作都是基于這個(gè)notifier接收的消息的。這個(gè)factory創(chuàng)建一個(gè)線程,在一個(gè)無(wú)限循環(huán)中讀取這個(gè)notifier。
  
  創(chuàng)建domain
  
  創(chuàng)建一個(gè)domain是通過(guò)使用一個(gè)hypercall(DOM0_CREATEDOMAIN)來(lái)完成的。Hypercall是Linux內(nèi)核中的一個(gè)系統(tǒng)調(diào)用,通過(guò)它,用戶空間可以調(diào)用內(nèi)核中的方法,它通過(guò)一個(gè)中斷(Int 0x80)來(lái)完成。在Xen中,類似的系統(tǒng)調(diào)用就是hypervisor,通過(guò)它,domain 0 調(diào)用hypervisor中的方法,它也是通過(guò)中斷(Int 0x82)來(lái)完成的。hypervisor通過(guò)它的虛擬CPU訪問(wèn)每一個(gè)domain。
  
  XendDomain類和XendDomainInfo類在創(chuàng)建和銷毀domain中扮演著非常重要的角色。我們通過(guò)調(diào)用XendDomain中的domain_create()方法創(chuàng)建一個(gè)新的domain。
  
  XendDomainInfo類和它的方法主要用于一個(gè)domain的實(shí)際構(gòu)造。
  
  XCS Server
  
  XCS server有兩個(gè)TCP套接字,分別是控制連接和數(shù)據(jù)連接,它們不同的地方在于前者是同步的,后者是異步的。前面提到的notifier對(duì)象,就是XCS服務(wù)器的一個(gè)客戶端。
  
  創(chuàng)建虛擬設(shè)備
  
  XendDomainInfo中的create()方法啟動(dòng)一個(gè)創(chuàng)建domain的動(dòng)作鏈。首先被創(chuàng)建的是這個(gè)domain的虛擬設(shè)備。這個(gè)create()方法調(diào)用create_blkif()創(chuàng)建一個(gè)塊設(shè)備接口(blkif),即使VM不需要磁盤它也是必須被創(chuàng)建的。另一個(gè)虛擬設(shè)備通過(guò)create_configured_devices()創(chuàng)建。
  
  所有的設(shè)備類都從Dev繼續(xù),Dev是一個(gè)聯(lián)系設(shè)備控制器的抽象類。它的attach()抽象方法在每一個(gè)Dev類的子類中實(shí)現(xiàn),這個(gè)方法把前端和后端聯(lián)系了起來(lái)。圖2展示了設(shè)備的層次,圖3展示了設(shè)備控制器的層次。
  
 全面介紹Xen虛擬機(jī) 深入學(xué)習(xí)Xen新起點(diǎn)(圖二)

  
全面介紹Xen虛擬機(jī) 深入學(xué)習(xí)Xen新起點(diǎn)(圖三)

  Domain 0運(yùn)行后端驅(qū)動(dòng),同時(shí)最新創(chuàng)建domain運(yùn)行前端驅(qū)動(dòng)。許多消息在后端和前端驅(qū)動(dòng)之間傳送。前端驅(qū)動(dòng)感覺(jué)上是虛擬的,它不需要使用特定硬件的具體信息。
  
  聯(lián)系虛擬設(shè)備的中斷是虛擬中斷。
  
  結(jié)論
  
  Xen項(xiàng)目是一個(gè)很有趣同時(shí)布滿了希望的項(xiàng)目。它的代碼很復(fù)雜,非凡是虛擬內(nèi)存治理、活動(dòng)域合并工具和授權(quán)表機(jī)制。本文僅僅是介紹性的,并不涉及這些話題。然而,我希望它能夠成為想要了解和深入研究代碼的一個(gè)出發(fā)點(diǎn)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 九龙县| 高清| 霞浦县| 驻马店市| 翼城县| 崇义县| 英山县| 玉林市| 德州市| 托克逊县| 安远县| 修文县| 梁山县| 南川市| 普格县| 黔东| 石泉县| 澄迈县| 南阳市| 乌兰浩特市| 顺平县| 兴仁县| 南澳县| 沛县| 舞阳县| 诸城市| 宾川县| 屏南县| 武穴市| 韶关市| 抚松县| 尉氏县| 新蔡县| 洛阳市| 庆安县| 安吉县| 万安县| 平原县| 吕梁市| 若尔盖县| 庐江县|