,縮寫:HDD)或固態(tài)硬盤(英文:sol id-state drive,縮寫:SSD)、或者存儲器是能夠用于攜帶或存儲具有指令或數(shù)據(jù)結(jié)構(gòu)形式的期望的程序代碼并能夠由計算機存取的任何其他介質(zhì),但不限于此。存儲器可以是上述存儲器的組合。
[0174]基于與圖4所示的方法實施例同樣的發(fā)明構(gòu)思,本發(fā)明實施例還提供了一種虛擬化平臺中的數(shù)據(jù)處理裝置,所述數(shù)據(jù)處理裝置應(yīng)用于DomO的接收線程,如圖8所示,該數(shù)據(jù)處理裝置包括:
[0175]確定單元801,用于在嘗試對skb隊列中的數(shù)據(jù)包進行處理時,確定skb隊列是否為空或者確定DomU的前端驅(qū)動與所述DomO的后端驅(qū)動之間的共享內(nèi)存是否為滿;
[0176]所述讀取單元802,在確定skb隊列為空或者確定用戶虛擬機DomU的前端驅(qū)動與所述特權(quán)虛擬機DomO的后端驅(qū)動之間的共享內(nèi)存為滿時,讀取所述接收線程需處于的模式;并在讀取到所述模式為輪詢模式時,所述接收線程無需休眠;所述輪詢模式用于標(biāo)識接收線程處于非休眠狀態(tài)。
[0177]可選地,所述確定單元801,還用于在所述讀取單元802讀取到所述模式為輪詢模式后,確定上一次讀取到的所述接收線程需處于的模式;
[0178]還包括:
[0179]第一通知單元803,在確定單元801確定上一次讀取到的所述接收線程需處于的模式為非輪詢模式時,向用戶虛擬機DomU的前端驅(qū)動發(fā)送用于通知所述接收線程的模式由非輪詢模式更改為輪詢模式的通知信息。
[0180]其中,所述非輪詢模式用于標(biāo)識所述接收線程在所述skb隊列為空或者在DomU的前端驅(qū)動與所述后端驅(qū)動之間的共享內(nèi)存為滿時處于休眠狀態(tài)。
[0181]可選地,所述讀取單元802,在讀取所述接收線程需處于的模式,具體用于在被允許讀取所述接收線程需處于的模式時,讀取所述接收線程需處于的模式。
[0182]可選地,所述讀取單元802,在讀取所述接收線程需處于的模式,具體用于:
[0183]在被禁止讀取所述接收線程需處于的模式時,則等待預(yù)定時間后,再次嘗試讀取所述接收線程需處于的模式,直到被允許讀取所述接收線程需處于的模式。
[0184]可選地,該數(shù)據(jù)處理裝置還可以包括:
[ΟΙ85] 第二通知單元804,用于在所述確定單元801確定skb隊列為空或者確定DomU的前端驅(qū)動與所述DomO的后端驅(qū)動之間的共享內(nèi)存為滿之后,所述讀取單元802讀取到所述接收線程需處于非輪詢模式且所述確定單元801確定上一次讀取到所述接收線程需處于的模式為輪詢模式時,向所述前端驅(qū)動發(fā)送用于通知所述接收線程的模式由輪詢模式更改為非輪詢模式的通知信息。
[0186]本發(fā)明實施例中對單元的劃分是示意性的,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,另外,在本申請各個實施例中的各功能單元可以集成在一個處理器中,也可以是單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。
[0187]其中,集成的單元既可以采用硬件的形式實現(xiàn)時,如圖9所示,第一通知單元803以及第二通知單元804對應(yīng)的實體的硬件為通信接口 901,確定單元801、讀取單元802對應(yīng)的實體硬件為處理器902。處理器902,可以是一個CPU,或者為數(shù)字處理單元等等。
[0188]其中,該數(shù)據(jù)處理裝置還包括:存儲器903,用于存儲處理器902執(zhí)行的程序。處理器902用于執(zhí)行存儲器903存儲的程序。
[0189]本發(fā)明實施例中不限定上述通信接口 901、處理器902以及存儲器903之間的具體連接介質(zhì)。本發(fā)明實施例在圖9中以存儲器903、處理器902以及通信接口 901之間通過總線904連接,總線在圖9中以粗線表示,其它部件之間的連接方式,僅是進行示意性說明,并不引以為限。所述總線可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于表示,圖9中僅用一條粗線表示,但并不表示僅有一根總線或一種類型的總線。
[0190]存儲器903可以是volatile memory,例如RAM;存儲器903也可以是非易失性存儲器,例如ROM ,flash memory,HDD或SSD、或者存儲器903是能夠用于攜帶或存儲具有指令或數(shù)據(jù)結(jié)構(gòu)形式的期望的程序代碼并能夠由計算機存取的任何其他介質(zhì),但不限于此。存儲器903可以是上述存儲器的組合。
[0191]基于與圖5所示的方法實施例同樣的發(fā)明構(gòu)思,本發(fā)明實施例還提供了一種虛擬化平臺中的數(shù)據(jù)處理裝置,所述數(shù)據(jù)處理裝置應(yīng)用于DomU的前端驅(qū)動,如圖10所示,該數(shù)據(jù)處理裝置包括:
[0192]處理單元1001,用于生成第一數(shù)據(jù)請求并放置在所述前端驅(qū)動與特權(quán)虛擬機DomO的后端驅(qū)動之間的共享內(nèi)存;
[ΟΙ93] 發(fā)送單元1002,用于在所述處理單元1001確定特權(quán)虛擬機DomO的接收線程所處的模式為輪詢模式時,無需向所述DomO的接收線程發(fā)送喚醒請求,所述輪詢模式用于標(biāo)識接收線程處于非休眠狀態(tài)。
[0194]可選地,所述處理單元1001,還用于生成第二數(shù)據(jù)請求放置在所述前端驅(qū)動與所述后端驅(qū)動之間的共享內(nèi)存;
[0195]還包括:
[0196]接收單元1003,用于接收所述接收線程發(fā)送的用于通知所述接收線程的模式由輪詢模式更改為非輪詢模式的通知信息;
[0197]所述發(fā)送單元1002,還用于在所述接收單元1003接收到所述通知信息時,向所述接收線程發(fā)送用于喚醒所述接收線程的喚醒請求,所述非輪詢模式用于標(biāo)識所述接收線程在所述skb隊列為空或者在用戶虛擬機DomU的前端驅(qū)動與所述后端驅(qū)動之間的共享內(nèi)存為滿時處于休眠狀態(tài)。
[0198]本發(fā)明實施例中對單元的劃分是示意性的,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,另外,在本申請各個實施例中的各功能單元可以集成在一個處理器中,也可以是單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。
[0199]其中,集成的單元既可以采用硬件的形式實現(xiàn)時,如圖11所示,接收單元1003以及發(fā)送單元1002對應(yīng)的實體的硬件為通信接口 1101,處理單元1001、對應(yīng)的實體硬件為處理器1102。處理器1102,可以是一個CPU,或者為數(shù)字處理單元等等。
[0200]其中,該數(shù)據(jù)處理裝置還包括:存儲器1103,用于存儲處理器1102執(zhí)行的程序。處理器1102用于執(zhí)行存儲器1103存儲的程序。
[0201]本發(fā)明實施例中不限定上述通信接口 1101、處理器1102以及存儲器1103之間的具體連接介質(zhì)。本發(fā)明實施例在圖11中以存儲器1103、處理器1102以及通信接口 1101之間通過總線1104連接,總線在圖11中以粗線表示,其它部件之間的連接方式,僅是進行示意性說明,并不引以為限。所述總線可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于表示,圖11中僅用一條粗線表示,但并不表示僅有一根總線或一種類型的總線。
[0202]存儲器1103可以是volatile memory,例如RAM;存儲器1103也可以是非易失性存儲器,例如ROM ,flash memory,HDD或SSD、或者存儲器1103是能夠用于攜帶或存儲具有指令或數(shù)據(jù)結(jié)構(gòu)形式的期望的程序代碼并能夠由計算機存取的任何其他介質(zhì),但不限于此。存儲器1103可以是上述存儲器的組合。
[0203]其中,本發(fā)明實施例中處理器702、處理器902、處理器1102可以為同一個處理器,也可以為不同的處理器。存儲器703、存儲器903、存儲器1103可以為同一個存儲器,也可以為不同的存儲器,用于保存skb隊列,以及共享內(nèi)存以及xenstore等等。
[0204]DomO的后端驅(qū)動接收VMM的事件通道發(fā)來的第一數(shù)據(jù)包,現(xiàn)有技術(shù)中后端驅(qū)動不知道接收線程是否休眠,因此所述后端驅(qū)動將接收到的所述第一數(shù)據(jù)包處理后存儲在網(wǎng)絡(luò)套接字包緩存skb隊列之中,需要喚醒接收線程,但利用本發(fā)明實施例提供的方案,所述后端驅(qū)動在確定所述DomO的接收線程所處的模式為輪詢模式時,確定了接收線程目前處于非休眠狀態(tài),因此無需喚醒所述接收線程,所述輪詢模式用于標(biāo)識接收線程處于非休眠狀態(tài),從而避免了后端驅(qū)動頻繁喚醒接收線程。
[0205]在DomU的前端驅(qū)動生成第一數(shù)據(jù)請求放置在所述前端驅(qū)動與DomO的后端驅(qū)動之間的共享內(nèi)存后,現(xiàn)有技術(shù)中DomU的前端驅(qū)動不知道接收線程此刻是否休眠,因此需要喚醒接收線程,利用本發(fā)明實施例提供的方案,確定DomO的接收線程所處的模式為輪詢模式時,確定了接收線程此刻處于非休眠狀態(tài),因此無需向所述DomO的接收線程發(fā)送喚醒請求,從而避免了 DomU頻繁的退出。
[0206]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
[0207]本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
[0208]這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0209]這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
[0210]盡管已描述了本發(fā)明的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明范圍的所有變更和修改。
[0211]顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
【主權(quán)項】
1.一種虛擬化平臺中的數(shù)據(jù)處理方法,其特征在于,包括: 特權(quán)虛擬機DomO的后端驅(qū)動接收虛擬機監(jiān)控器VMM的事件通道發(fā)來的第一數(shù)據(jù)包; 所述后端驅(qū)動將接收到的所述第一數(shù)據(jù)包處理后存儲在網(wǎng)絡(luò)套接字包緩存skb隊列后,在確定所述DomO的接收線程所