專利名稱:基于共享內(nèi)存和核間中斷的多核平臺(tái)上多個(gè)虛擬機(jī)之間進(jìn)程通信方法
技術(shù)領(lǐng)域:
本發(fā)明屬于信息處理系統(tǒng)的虛擬機(jī)領(lǐng)域,具體涉及ー種片上多核處理器的虛擬機(jī)系統(tǒng)中多個(gè)虛擬機(jī)之間通信的方法。
背景技術(shù):
隨著現(xiàn)在計(jì)算機(jī)硬件技術(shù)的發(fā)展,其性能已日益強(qiáng)大并足以滿足日常和企業(yè)的ー般應(yīng)用需求。在此背景下,如何提高系統(tǒng)硬件資源的利用率、如何降低維護(hù)和管理成本、如何提高系統(tǒng)可靠性和安全性、如何提高可移植性并以此來(lái)提高軟件開發(fā)效率越來(lái)越凸顯虛 擬化技術(shù)的重要性,也使得虛擬機(jī)技術(shù)成為學(xué)術(shù)界和產(chǎn)業(yè)界的焦點(diǎn)之一?,F(xiàn)在虛擬機(jī)技術(shù)應(yīng)用領(lǐng)域越來(lái)越廣泛,很多通信密集型的分布式應(yīng)用,如web服務(wù)、高性能網(wǎng)格應(yīng)用、數(shù)據(jù)庫(kù)應(yīng)用被整合到虛擬機(jī)(VM)系統(tǒng)中以充分利用硬件資源,這些程序通常需要突破虛擬機(jī)系統(tǒng)中_離條件的限制(如虛擬機(jī)A必須通過(guò)虛擬機(jī)管理系統(tǒng)(Virtual Machine Managersystem, VMM)的授權(quán)才可直接訪問(wèn)虛擬機(jī)B所擁有的內(nèi)存)才能與其他VM中的程序進(jìn)行通信,從而造成性能上的損失。根據(jù)W間通信方式實(shí)現(xiàn)的層次不同將VM間通信分為三種(I)基于硬件寄存器的VM間通信,只需要經(jīng)過(guò)ー經(jīng)互聯(lián)方式(2)基于共享內(nèi)存的VM間通信,需要經(jīng)過(guò)ー級(jí)和ニ級(jí)兩個(gè)互聯(lián)方式(3)基于網(wǎng)絡(luò)協(xié)議的如socket,需要經(jīng)過(guò)ー級(jí)、ニ級(jí)和三級(jí)三個(gè)互聯(lián)方式。目前,絕大多數(shù)的虛擬機(jī)通信方法都不能很好解決性能問(wèn)題?,F(xiàn)在多數(shù)的虛擬機(jī)間通信解決方案都是基于Xen開源虛擬機(jī)系統(tǒng),此類為第二種基于共享內(nèi)存的VM間通信?;诠蚕韮?nèi)存的VM間通信,需要各個(gè)VM間可以擁有對(duì)一塊內(nèi)存的共同訪問(wèn)權(quán)限。VM間通過(guò)封裝的共享內(nèi)存操作接ロ,完成數(shù)據(jù)的讀寫并以此完成VM間數(shù)據(jù)通信。Francois Diakhate等人提出的在VM系統(tǒng)中為客戶操作系統(tǒng)提供簡(jiǎn)單消息傳遞接ロ而引入ー個(gè)虛擬設(shè)備,從而實(shí)現(xiàn)聞效的基于共孚內(nèi)存的VM間通イ目。XenSockets是基于共孚內(nèi)存的聞吞吐率的單向的VM間通信機(jī)制。XffAY也是基于共享內(nèi)存的VM間通信機(jī)制,它相對(duì)于XenSockets是提供了更快速的VM間通信通道。但是這些基于共享內(nèi)存的通信機(jī)制有以下不足之處1、需要3次內(nèi)存拷貝以及額外的同步開銷;2、對(duì)于共享內(nèi)存的訪問(wèn)需要向虛擬機(jī)監(jiān)視器申請(qǐng)?jiān)L問(wèn)權(quán)利;3、這些解決方法都是需要先通過(guò)操作系統(tǒng)的網(wǎng)絡(luò)層,在網(wǎng)絡(luò)層判斷目標(biāo)通信地址是不是共駐在同一物理平臺(tái)上的其他虛擬機(jī),若是則利用共享內(nèi)存進(jìn)行數(shù)據(jù)傳輸,否則通過(guò)網(wǎng)絡(luò)傳輸。即在傳輸之前要在網(wǎng)絡(luò)層進(jìn)行目標(biāo)通信地址的判斷,從而會(huì)導(dǎo)致性能下降。因此,在當(dāng)前虛擬機(jī)系統(tǒng)廣泛應(yīng)用之際,而且虛擬機(jī)系統(tǒng)上的多個(gè)虛擬機(jī)之間需要相互協(xié)作完成任務(wù)。性能便成為虛擬機(jī)系統(tǒng)中瓶頸之一,而此瓶頸需要通過(guò)一定的方法得以緩解,本發(fā)明因此而來(lái)。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供了ー種基于共享內(nèi)存和核間中斷的多核平臺(tái)上的虛擬機(jī)之間的通信方法,有效解決了現(xiàn)代流行的虛擬機(jī)系統(tǒng)中通信效率和資源共享的問(wèn)題,并使得虛擬機(jī)性能得以提升。為了解決現(xiàn)有技術(shù)中的這些問(wèn)題,本發(fā)明提供的技術(shù)方案是一種基于共享內(nèi)存和核間中斷的多核平臺(tái)上虛擬機(jī)之間的進(jìn)程通信方法,其特征在于所述方法由虛擬機(jī)系統(tǒng)實(shí)現(xiàn),所述虛擬機(jī)系統(tǒng)包括共享內(nèi)存模塊和核間中斷處理模塊,所述方法包括以下步驟(I)進(jìn)程通過(guò)系統(tǒng)調(diào)用先向共享內(nèi)存模塊申請(qǐng)ー塊共享內(nèi)存,共享內(nèi)存的數(shù)據(jù)結(jié)構(gòu)修改已分配共享內(nèi)存鏈表和閑置共享內(nèi)存鏈表;(2)進(jìn)程對(duì)共享內(nèi)存讀寫數(shù)據(jù)之前先測(cè)試互斥標(biāo)志位,若有其他進(jìn)程正在讀寫此共享內(nèi)存塊,則進(jìn)程需要進(jìn)行等待,插入到此共享內(nèi)存塊的等待隊(duì)列中; (3)若沒(méi)有其他進(jìn)程訪問(wèn)時(shí),則要進(jìn)ー步測(cè)試讀寫標(biāo)志位;若符合讀寫要求,那么讀進(jìn)程可以從中讀取數(shù)據(jù),寫進(jìn)程可以向其中寫入數(shù)據(jù);(4)當(dāng)進(jìn)程完成對(duì)向共享內(nèi)存中讀寫數(shù)據(jù)后遍歷此共享內(nèi)存的等待隊(duì)列,若隊(duì)列中存在進(jìn)程等待訪問(wèn),則通過(guò)核間中斷處理模塊喚醒此進(jìn)程繼續(xù)訪問(wèn)共享內(nèi)存;否則結(jié)束對(duì)共享內(nèi)存的訪問(wèn)。本發(fā)明的另一目的在于提供一種便于多核平臺(tái)上虛擬機(jī)之間的進(jìn)程通信的虛擬機(jī)系統(tǒng),其特征在于所述系統(tǒng)包括共享內(nèi)存模塊和核間中斷處理模塊,所述共享內(nèi)存模塊包括記錄已分配的共享內(nèi)存塊鏈表、尚未分配的閑置的共享內(nèi)存塊鏈表和對(duì)共享內(nèi)存塊鏈表互斥訪問(wèn)的自旋鎖;所述核間中斷處理程序用于分配共享內(nèi)存的等待隊(duì)列和讀寫標(biāo)志;所述系統(tǒng)按照如下步驟進(jìn)行進(jìn)程通信(I)進(jìn)程通過(guò)系統(tǒng)調(diào)用先向共享內(nèi)存模塊申請(qǐng)ー塊共享內(nèi)存,共享內(nèi)存的數(shù)據(jù)結(jié)構(gòu)修改已分配共享內(nèi)存鏈表和閑置共享內(nèi)存鏈表;(2)進(jìn)程對(duì)共享內(nèi)存讀寫數(shù)據(jù)之前先測(cè)試互斥標(biāo)志位,若有其他進(jìn)程正在讀寫此共享內(nèi)存塊,則進(jìn)程需要進(jìn)行等待,插入到此共享內(nèi)存塊的等待隊(duì)列中;(3)若沒(méi)有其他進(jìn)程訪問(wèn)時(shí),則要進(jìn)ー步測(cè)試讀寫標(biāo)志位;若符合讀寫要求,那么讀進(jìn)程可以從中讀取數(shù)據(jù),寫進(jìn)程可以向其中寫入數(shù)據(jù);(4)當(dāng)進(jìn)程完成對(duì)向共享內(nèi)存中讀寫數(shù)據(jù)后遍歷此共享內(nèi)存的等待隊(duì)列,若隊(duì)列中存在進(jìn)程等待訪問(wèn),則通過(guò)核間中斷處理模塊喚醒此進(jìn)程繼續(xù)訪問(wèn)共享內(nèi)存;否則結(jié)束對(duì)共享內(nèi)存的訪問(wèn)。本發(fā)明基于共享內(nèi)存和多核平臺(tái)上核間中斷機(jī)制。進(jìn)程間通信方式包括管道、信號(hào)量、消息隊(duì)列和共享內(nèi)存。其中共享內(nèi)存具有最高的通信性能,因?yàn)楣蚕韮?nèi)存的開銷僅在于通過(guò)內(nèi)存拷貝實(shí)現(xiàn)進(jìn)程間的通信。多核平臺(tái)上核間中斷是幾乎所有的多核處理器本身就有的硬件支持,而且操作系統(tǒng)對(duì)硬件中斷有快速響應(yīng)處理能力,其性能很高。本方案采取兩種高性能的共享內(nèi)存和核間中斷相結(jié)合的實(shí)現(xiàn)方式g在解決多核平臺(tái)上多個(gè)虛擬機(jī)之間通信性能問(wèn)題。其主要設(shè)計(jì)和實(shí)現(xiàn)模塊是共享內(nèi)存模塊。此模塊包括共享內(nèi)存的相關(guān)數(shù)據(jù)結(jié)構(gòu),主要是兩個(gè)鏈表記錄已分配的共享內(nèi)存塊和尚未分配的閑置的共享內(nèi)存塊,其次還有保證對(duì)此表互斥訪問(wèn)的數(shù)據(jù)結(jié)構(gòu),是ー個(gè)自旋鎖。此外還有核間中斷處理程序,已分配共享內(nèi)存的等待隊(duì)列和讀寫標(biāo)志。其主要工作步驟如下
(I)進(jìn)程通過(guò)系統(tǒng)調(diào)用先向共享內(nèi)存模塊申請(qǐng)ー塊共享內(nèi)存,共享內(nèi)存的數(shù)據(jù)結(jié)構(gòu)便修改已分配共享內(nèi)存鏈表和閑置共享內(nèi)存鏈表。(2)進(jìn)程對(duì)共享內(nèi)存讀寫數(shù)據(jù)之前先測(cè)試互斥標(biāo)志位,若有其他進(jìn)程正在讀寫此共享內(nèi)存塊,則進(jìn)程需要進(jìn)行等待,插入到此共享內(nèi)存塊的等待隊(duì)列中。(3)若沒(méi)有其他進(jìn)程訪問(wèn)時(shí),則要進(jìn)一步測(cè)試讀寫標(biāo)志位(因?yàn)楫?dāng)沒(méi)有其他進(jìn)程向其中寫入數(shù)據(jù)而讀取數(shù)據(jù)是會(huì)引起錯(cuò)誤的),若符合讀寫要求那么讀進(jìn)程可以從中讀取數(shù)據(jù),寫進(jìn)程可以向其中寫入數(shù)據(jù)。(4)當(dāng)進(jìn)程完成對(duì)向共享內(nèi)存中讀寫數(shù)據(jù)時(shí)需要遍歷此共享內(nèi)存的等待隊(duì)列,若隊(duì)列中存在進(jìn)程等待訪問(wèn),則通過(guò)核間中斷機(jī)制喚醒此進(jìn)程繼續(xù)訪問(wèn)共享內(nèi)存。否則什么也不做。最后結(jié)束對(duì)共享內(nèi)存的訪問(wèn)。讀寫數(shù)據(jù)進(jìn)程通過(guò)(I) (4)步驟完成多個(gè)進(jìn)程間的數(shù)據(jù)傳輸和信息共享。 本發(fā)明基于共享內(nèi)存和核間中斷的多核平臺(tái)上的虛擬機(jī)之間的通信方法是利用共享內(nèi)存作為載體傳輸數(shù)據(jù),并通過(guò)共享內(nèi)存減少內(nèi)存拷貝次數(shù)來(lái)實(shí)現(xiàn)多個(gè)虛擬機(jī)之間的高效通信,再利用核間中斷作為訪問(wèn)同一共享內(nèi)存的多個(gè)進(jìn)程間的同步方式。所述方法是基于共享內(nèi)存和核間中斷機(jī)制相結(jié)合的多個(gè)虛擬機(jī)之間通信方式,在效率和帶寬方面具有很大的優(yōu)勢(shì)。多個(gè)進(jìn)程先通過(guò)系統(tǒng)調(diào)用獲取用于通信的共享內(nèi)存,并記錄本線程的唯一標(biāo)號(hào)(可以是虛擬機(jī)標(biāo)志和進(jìn)程號(hào)共同組成的唯一標(biāo)號(hào)),并對(duì)此共享內(nèi)存模塊的讀寫標(biāo)志進(jìn)行設(shè)置。對(duì)于每一塊已經(jīng)申請(qǐng)的共享內(nèi)存都有ー個(gè)等待隊(duì)列,記錄等待訪問(wèn)此共享內(nèi)存的進(jìn)程。每次ー個(gè)進(jìn)程結(jié)束對(duì)此共享內(nèi)存的訪問(wèn)時(shí)會(huì)調(diào)用同步接ロ去通知此共享內(nèi)存的等待隊(duì)列中的其他進(jìn)程去訪問(wèn)此塊共享內(nèi)存。所述的同步接ロ是基于核間中斷的,基于核間中斷是利用系統(tǒng)對(duì)硬件中斷的快速響應(yīng)能力,實(shí)現(xiàn)了虛擬機(jī)通信方法的高效。相對(duì)于現(xiàn)有技術(shù)中的方案,本發(fā)明的優(yōu)點(diǎn)是本發(fā)明避免了現(xiàn)有技術(shù)中常用基于共享內(nèi)存方式的通信方法對(duì)內(nèi)存的3次拷貝,基于共享內(nèi)存和核間中斷的多核平臺(tái)上的虛擬機(jī)之間的通信方法只需要內(nèi)存的一次拷貝,從而降低了開銷,提高了整體的多個(gè)虛擬機(jī)之間的通信性能。
下面結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)ー步描述圖I為三種VM間通信方式;圖2為基于核間中斷和共享內(nèi)存VM間通信性能對(duì)比;其中縱坐標(biāo)為CPU周期數(shù),橫坐標(biāo)為消息大小取2為底的對(duì)數(shù)(數(shù)據(jù)塊大小單位字節(jié));圖3為三種VM間通信方式的性能對(duì)比;其中縱坐標(biāo)為CPU周期數(shù),橫坐標(biāo)為消息大小取2為底的對(duì)數(shù)(數(shù)據(jù)塊大小單位字節(jié))。
具體實(shí)施例方式以下結(jié)合具體實(shí)施例對(duì)上述方案做進(jìn)ー步說(shuō)明。應(yīng)理解,這些實(shí)施例是用于說(shuō)明本發(fā)明而不限于限制本發(fā)明的范圍。實(shí)施例中采用的實(shí)施條件可以根據(jù)具體廠家的條件做進(jìn)ー步調(diào)整,未注明的實(shí)施條件通常為常規(guī)實(shí)驗(yàn)中的條件。
實(shí)施例本實(shí)施例采用的實(shí)驗(yàn)平臺(tái)是采用Cavium Network網(wǎng)絡(luò)處理器0CTE0N-CN5600-EVB-MB-10G-Y多核處理器。該處理器是MIPS64體系結(jié)構(gòu),12個(gè)主頻為800MHZ的CPU核,主頻為800MHZ的DDR2內(nèi)存4G,四個(gè)網(wǎng)絡(luò)接ロ(其中一個(gè)千兆網(wǎng)絡(luò)接ロ和三個(gè)百兆網(wǎng)絡(luò)接ロ )。該實(shí)驗(yàn)平臺(tái)支持啟動(dòng)多個(gè)Linux操作系統(tǒng),各個(gè)Linux操作系統(tǒng)之間是相對(duì)獨(dú)立的,即彼此擁有各自的CPU核、內(nèi)存和外設(shè)(如網(wǎng)卡等)。所述通信方式的主要工作步驟如下(I)進(jìn)程通過(guò)系統(tǒng)調(diào)用先向共享內(nèi)存模塊申請(qǐng)ー塊共享內(nèi)存,共享內(nèi)存的數(shù)據(jù)結(jié)構(gòu)便修改已分配共享內(nèi)存鏈表和閑置共享內(nèi)存鏈表。(2)進(jìn)程對(duì)共享內(nèi)存讀寫數(shù)據(jù)之前先測(cè)試互斥標(biāo)志位,若有其他進(jìn)程正在讀寫此共享內(nèi)存塊,則進(jìn)程需要進(jìn)行等待,插入到此共享內(nèi)存塊的等待隊(duì)列中。 (3)若沒(méi)有其他進(jìn)程訪問(wèn)時(shí),則要進(jìn)一步測(cè)試讀寫標(biāo)志位(因?yàn)楫?dāng)沒(méi)有其他進(jìn)程向其中寫入數(shù)據(jù)而讀取數(shù)據(jù)是會(huì)引起錯(cuò)誤的),若符合讀寫要求那么讀進(jìn)程可以從中讀取數(shù)據(jù),寫進(jìn)程可以向其中寫入數(shù)據(jù)。(4)當(dāng)進(jìn)程完成對(duì)向共享內(nèi)存中讀寫數(shù)據(jù)時(shí)需要遍歷此共享內(nèi)存的等待隊(duì)列,若隊(duì)列中存在進(jìn)程等待訪問(wèn),則通過(guò)核間中斷機(jī)制喚醒此進(jìn)程繼續(xù)訪問(wèn)共享內(nèi)存。否則什么也不做。最后結(jié)束對(duì)共享內(nèi)存的訪問(wèn)。讀寫數(shù)據(jù)進(jìn)程通過(guò)(I) (4)步驟完成多個(gè)進(jìn)程間的數(shù)據(jù)傳輸和信息共享。結(jié)果如圖I 圖3所示,圖I為三種VM間通信方式;在此區(qū)別三種VM間通信方式的標(biāo)準(zhǔn)是通信方式的通信路徑所經(jīng)過(guò)硬件上的級(jí)聯(lián)層次。普通多核計(jì)算機(jī)體系結(jié)構(gòu)中,核與核之間的級(jí)聯(lián)方式是通過(guò)片上互聯(lián);而基于共享內(nèi)存的VM間通信方式是經(jīng)過(guò)內(nèi)存控制器,而內(nèi)存控制器是連接于總線上的,因而是通過(guò)鏈接互聯(lián)方式的;基于網(wǎng)絡(luò)的VM間通信方式是通過(guò)網(wǎng)卡的,而網(wǎng)卡控制器連接于總線下面的低速I/O控制器上,因而經(jīng)過(guò)的是片上互聯(lián)、總線互聯(lián)和低速I/O設(shè)備互連的三級(jí)互聯(lián)方式。圖2為基于核間中斷和共享內(nèi)存VM間通信性能對(duì)比;其中縱坐標(biāo)為CPU周期數(shù),橫坐標(biāo)為消息大小取2為底的對(duì)數(shù)(數(shù)據(jù)塊大小単位字節(jié));其中縱坐標(biāo)為CPU周期數(shù),橫坐標(biāo)為消息大小取2為底的對(duì)數(shù)(數(shù)據(jù)塊大小単位字節(jié));此圖顯示的是隨著傳輸數(shù)據(jù)的増加,基于核間中斷和共享內(nèi)存兩種通信方式傳輸數(shù)據(jù)所花費(fèi)的CPU周期數(shù),是為了更顯著查看圖3中未能明顯顯示的基于核間中斷方式和基于共享內(nèi)存方式兩種VM間通信方式的性能差異的。圖3為三種VM間通信方式的性能對(duì)比;其中縱坐標(biāo)為CPU周期數(shù),橫坐標(biāo)為消息大小取2為底的對(duì)數(shù)(數(shù)據(jù)塊大小単位字節(jié));其中縱坐標(biāo)為CPU周期數(shù),橫坐標(biāo)為消息大小取2為底的對(duì)數(shù)(數(shù)據(jù)塊大小単位字節(jié))。此圖顯示的是隨著傳輸數(shù)據(jù)的增加,三種通信方式傳輸數(shù)據(jù)所花費(fèi)的CPU周期數(shù)。實(shí)施例方案的測(cè)試的主要指標(biāo)是性能,在此性能度量標(biāo)準(zhǔn)定義為VM間完成一次消息傳遞的時(shí)間(即Ping-pang測(cè)量方法)。在實(shí)施例中分別傳輸數(shù)據(jù)大小為8字節(jié)、16
字節(jié)、32字節(jié)......1024字節(jié)、2048字節(jié),以顯示三種通信方式在數(shù)據(jù)大小不同的情況下
的傳輸數(shù)據(jù)的能力。所取數(shù)據(jù)均來(lái)自Cavium公司的EBH5600處理器,傳遞時(shí)間以CPU周期數(shù)。圖2和圖3中數(shù)據(jù)即為三種通信方式的性能測(cè)試結(jié)果,從圖中可知基于網(wǎng)絡(luò)的VM間通信方式耗時(shí)是其他兩種通信方式10倍左右,基于核間中斷傳輸數(shù)據(jù)由于硬件限制,每次傳遞數(shù)據(jù)大小最多為Mailbox寄存器大小,從而導(dǎo)致時(shí)間隨傳輸數(shù)據(jù)總量成正比關(guān)系,傳輸少量數(shù)據(jù)性能優(yōu)于基于共享內(nèi)存的VM間通信方式,但是從圖3中可知當(dāng)數(shù)據(jù)量増大到一定程度時(shí)其耗時(shí)要比基于共享內(nèi)存的VM間通信高。
上述實(shí)例只為說(shuō)明本發(fā)明的技術(shù)構(gòu)思及特點(diǎn),其目的在于讓熟悉此項(xiàng)技術(shù)的人是能夠了解本發(fā)明的內(nèi)容并據(jù)以實(shí)施,并不能以此限制本發(fā)明的保護(hù)范圍。凡根據(jù)本發(fā)明精神實(shí)質(zhì)所做的等效變換或修飾,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種基于共享內(nèi)存和核間中斷的多核平臺(tái)上虛擬機(jī)之間的進(jìn)程通信方法,其特征在于所述方法由虛擬機(jī)系統(tǒng)實(shí)現(xiàn),所述虛擬機(jī)系統(tǒng)包括共享內(nèi)存模塊和核間中斷處理模塊,所述方法包括以下步驟 (1)進(jìn)程通過(guò)系統(tǒng)調(diào)用先向共享內(nèi)存模塊申請(qǐng)ー塊共享內(nèi)存,共享內(nèi)存的數(shù)據(jù)結(jié)構(gòu)修改已分配共享內(nèi)存鏈表和閑置共享內(nèi)存鏈表; (2)進(jìn)程對(duì)共享內(nèi)存讀寫數(shù)據(jù)之前先測(cè)試互斥標(biāo)志位,若有其他進(jìn)程正在讀寫此共享內(nèi)存塊,則進(jìn)程需要進(jìn)行等待,插入到此共享內(nèi)存塊的等待隊(duì)列中; (3)若沒(méi)有其他進(jìn)程訪問(wèn)時(shí),則要進(jìn)ー步測(cè)試讀寫標(biāo)志位;若符合讀寫要求,那么讀進(jìn)程可以從中讀取數(shù)據(jù),寫進(jìn)程可以向其中寫入數(shù)據(jù); (4)當(dāng)進(jìn)程完成對(duì)向共享內(nèi)存中讀寫數(shù)據(jù)后遍歷此共享內(nèi)存的等待隊(duì)列,若隊(duì)列中存在進(jìn)程等待訪問(wèn),則通過(guò)核間中斷處理模塊喚醒此進(jìn)程繼續(xù)訪問(wèn)共享內(nèi)存;否則結(jié)束對(duì)共享內(nèi)存的訪問(wèn)。
2.一種便于多核平臺(tái)上虛擬機(jī)之間的進(jìn)程通信的虛擬機(jī)系統(tǒng),其特征在于所述系統(tǒng)包括共享內(nèi)存模塊和核間中斷處理模塊,所述共享內(nèi)存模塊包括記錄已分配的共享內(nèi)存塊鏈表、尚未分配的閑置的共享內(nèi)存塊鏈表和對(duì)共享內(nèi)存塊鏈表互斥訪問(wèn)的自旋鎖;所述核間中斷處理程序用于分配共享內(nèi)存的等待隊(duì)列和讀寫標(biāo)志;所述系統(tǒng)按照如下步驟進(jìn)行進(jìn)程通信 (1)進(jìn)程通過(guò)系統(tǒng)調(diào)用先向共享內(nèi)存模塊申請(qǐng)ー塊共享內(nèi)存,共享內(nèi)存的數(shù)據(jù)結(jié)構(gòu)修改已分配共享內(nèi)存鏈表和閑置共享內(nèi)存鏈表; (2)進(jìn)程對(duì)共享內(nèi)存讀寫數(shù)據(jù)之前先測(cè)試互斥標(biāo)志位,若有其他進(jìn)程正在讀寫此共享內(nèi)存塊,則進(jìn)程需要進(jìn)行等待,插入到此共享內(nèi)存塊的等待隊(duì)列中; (3)若沒(méi)有其他進(jìn)程訪問(wèn)時(shí),則要進(jìn)ー步測(cè)試讀寫標(biāo)志位;若符合讀寫要求,那么讀進(jìn)程可以從中讀取數(shù)據(jù),寫進(jìn)程可以向其中寫入數(shù)據(jù); (4)當(dāng)進(jìn)程完成對(duì)向共享內(nèi)存中讀寫數(shù)據(jù)后遍歷此共享內(nèi)存的等待隊(duì)列,若隊(duì)列中存在進(jìn)程等待訪問(wèn),則通過(guò)核間中斷處理模塊喚醒此進(jìn)程繼續(xù)訪問(wèn)共享內(nèi)存;否則結(jié)束對(duì)共享內(nèi)存的訪問(wèn)。
全文摘要
本發(fā)明公開了一種基于共享內(nèi)存和核間中斷的多核平臺(tái)上虛擬機(jī)之間的進(jìn)程通信方法,其特征在于所述方法由虛擬機(jī)系統(tǒng)實(shí)現(xiàn),所述虛擬機(jī)系統(tǒng)包括共享內(nèi)存模塊和核間中斷處理模塊,該方法利用共享內(nèi)存作為載體傳輸數(shù)據(jù),并通過(guò)共享內(nèi)存減少內(nèi)存拷貝次數(shù)來(lái)實(shí)現(xiàn)多個(gè)虛擬機(jī)之間的高效通信,再利用核間中斷作為訪問(wèn)同一共享內(nèi)存的多個(gè)進(jìn)程間的同步方式。該方法只需要內(nèi)存的一次拷貝,從而降低了開銷,提高了整體的多個(gè)虛擬機(jī)之間的通信性能。
文檔編號(hào)G06F9/54GK102693162SQ201110449088
公開日2012年9月26日 申請(qǐng)日期2011年12月29日 優(yōu)先權(quán)日2011年12月29日
發(fā)明者吳俊敏, 朱小東, 朱峪, 趙小雨, 黃景 申請(qǐng)人:中國(guó)科學(xué)技術(shù)大學(xué)蘇州研究院