[0341]發(fā)送端a,還用于獲取存儲(chǔ)消息的內(nèi)存對(duì)應(yīng)的能力引用和能力引用偏移。
[0342]其中,第一共享頁(yè)表為用于進(jìn)行物理地址列表映射的頁(yè)表,發(fā)送端的第一共享頁(yè)表和接收端的第一共享頁(yè)表在內(nèi)核空間中共用同一物理內(nèi)存頁(yè)面或者不同物理內(nèi)存頁(yè)面。
[0343]本發(fā)明的實(shí)施例提供的進(jìn)程間通信的系統(tǒng),通過(guò)發(fā)送端將消息的物理地址映射到獲得的接收端的共享頁(yè)表的連續(xù)空閑頁(yè)表項(xiàng)頁(yè)中,得到該消息的新虛擬地址,并將新虛擬地址存入接收端的消息通知區(qū)中,實(shí)現(xiàn)了在零拷貝方案中接收端不用進(jìn)出內(nèi)核空間便可對(duì)消息進(jìn)行讀取,避免了接收端進(jìn)出內(nèi)核空間的時(shí)間開銷,同時(shí)減少了對(duì)接收端高速緩存的擾動(dòng)。
[0344]本發(fā)明的實(shí)施例提供一種進(jìn)程間通信的系統(tǒng),應(yīng)用于多內(nèi)核系統(tǒng)的內(nèi)核間的零拷貝方案,參照?qǐng)D12所示,該系統(tǒng)包括:發(fā)送端c和接收端d,其中:
[0345]發(fā)送端C,用于建立與接收端的通信通道;通過(guò)系統(tǒng)調(diào)用進(jìn)入內(nèi)核空間,并將通信通道的通道號(hào)和第一參數(shù)寫入內(nèi)核空間;根據(jù)通信通道的通道號(hào),獲得接收端的共享頁(yè)表;其中,共享頁(yè)表為頁(yè)目錄對(duì)應(yīng)的頁(yè)表中用于映射消息所在內(nèi)存頁(yè)面的物理地址的頁(yè)表;將獲取的消息所在內(nèi)存頁(yè)面的物理地址映射到接收端的共享頁(yè)表的連續(xù)空閑頁(yè)表項(xiàng)中,得到消息的新虛擬地址;將消息的新虛擬地址和第一參數(shù)存入接收端的消息通知區(qū)中。
[0346]接收端d,用于讀取消息通知區(qū)中發(fā)送端c存儲(chǔ)的消息的新虛擬地址和第一參數(shù);根據(jù)新虛擬地址讀取具有相應(yīng)長(zhǎng)度的消息;其中,消息通知區(qū)是通信通道建立過(guò)程中分配的。
[0347]進(jìn)一步,發(fā)送端C,還用于從內(nèi)存空間中獲取一個(gè)頁(yè)面大小的空間作為第二共享頁(yè)表;將第二共享頁(yè)表映射入發(fā)送端和接收端的頁(yè)目錄中。
[0348]第一參數(shù)包括:消息的虛擬地址和消息的長(zhǎng)度。其中,消息所在內(nèi)存頁(yè)面的物理地址是根據(jù)消息的虛擬地址和消息的長(zhǎng)度獲得的。
[0349]具體的,發(fā)送端C,用于根據(jù)通信通道的通道號(hào),獲得接收端的第二共享頁(yè)表;檢查接收端的第二共享頁(yè)表的頁(yè)表項(xiàng),獲得能容納消息的連續(xù)空閑頁(yè)表項(xiàng);將獲得的消息所在內(nèi)存頁(yè)面的物理地址映射到第二共享頁(yè)表的連續(xù)空閑頁(yè)表項(xiàng)中,得到消息的新虛擬地址。
[0350]其中,第二共享頁(yè)表為用于進(jìn)行物理地址列表映射的頁(yè)表,發(fā)送端的第二共享頁(yè)表和接收端的第二共享頁(yè)表在內(nèi)核空間中共用同一物理內(nèi)存頁(yè)面。
[0351]本發(fā)明的實(shí)施例提供的進(jìn)程間通信的系統(tǒng),通過(guò)發(fā)送端將消息的物理地址映射到獲得的接收端的共享頁(yè)表的連續(xù)空閑頁(yè)表項(xiàng)頁(yè)中,得到該消息的新虛擬地址,并將新虛擬地址存入接收端的消息通知區(qū)中,實(shí)現(xiàn)了在零拷貝方案中接收端不用進(jìn)出內(nèi)核空間便可對(duì)消息進(jìn)行讀取,避免了接收端進(jìn)出內(nèi)核空間的時(shí)間開銷,同時(shí)減少了對(duì)接收端高速緩存的擾動(dòng)。
[0352]所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,僅以上述各功能模塊的劃分進(jìn)行舉例說(shuō)明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。上述描述的系統(tǒng),裝置和單元的具體工作過(guò)程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過(guò)程,在此不再贅述。
[0353]在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過(guò)其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述模塊或單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
[0354]所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。
[0355]另外,在本申請(qǐng)各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
[0356]以上所述,以上實(shí)施例僅用以說(shuō)明本申請(qǐng)的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本申請(qǐng)進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本申請(qǐng)各實(shí)施例技術(shù)方案的精神和范圍。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。
【主權(quán)項(xiàng)】
1.一種進(jìn)程間通信的方法,其特征在于,包括: 發(fā)送端建立與接收端的通信通道; 通過(guò)系統(tǒng)調(diào)用進(jìn)入內(nèi)核空間,并將所述通信通道的通道號(hào)和第一參數(shù)寫入所述內(nèi)核空間; 根據(jù)所述通信通道的通道號(hào),獲得所述接收端的共享頁(yè)表;其中,所述共享頁(yè)表為所述頁(yè)目錄對(duì)應(yīng)的頁(yè)表中用于映射所述消息所在內(nèi)存頁(yè)面的物理地址的頁(yè)表; 將獲取的所述消息所在內(nèi)存頁(yè)面的物理地址映射到所述接收端的共享頁(yè)表的連續(xù)空閑頁(yè)表項(xiàng)中,得到消息的新虛擬地址; 將所述消息的新虛擬地址和所述第一參數(shù)存入所述接收端的消息通知區(qū)中,以便于所述接收端讀取所述消息通知區(qū)獲得所述消息的新虛擬地址和所述第一參數(shù),并根據(jù)所述新虛擬地址讀取具有相應(yīng)長(zhǎng)度的所述消息;其中,所述消息通知區(qū)是所述通信通道建立過(guò)程中分配的。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一參數(shù)包括:所述能力引用、能力引用偏移、所述消息頁(yè)內(nèi)偏移和所述消息的長(zhǎng)度,所述通過(guò)系統(tǒng)調(diào)用進(jìn)入內(nèi)核空間,并將所述通信通道的通道號(hào)和第一參數(shù)寫入所述內(nèi)核空間之前,還包括: 獲取存儲(chǔ)所述消息的內(nèi)存對(duì)應(yīng)的能力引用和能力引用偏移。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述通信通道的通道號(hào),獲得所述接收端的共享頁(yè)表,包括: 根據(jù)所述通信通道的通道號(hào),獲取所述接收端對(duì)應(yīng)的進(jìn)程控制塊; 根據(jù)所述進(jìn)程控制塊中的所述接收端的頁(yè)目錄地址,獲得所述接收端的第一共享頁(yè)表。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述根據(jù)所述通信通道的通道號(hào),獲取接收端對(duì)應(yīng)的進(jìn)程控制塊,包括: 根據(jù)所述通信通道的通道號(hào),獲得接收端; 根據(jù)所述接收端對(duì)應(yīng)的進(jìn)程與進(jìn)程控制塊之間的關(guān)系映射表,獲得所述接收端對(duì)應(yīng)的進(jìn)程控制塊;其中,所述接收端對(duì)應(yīng)的進(jìn)程與進(jìn)程控制塊之間的關(guān)系映射表是預(yù)先存儲(chǔ)在內(nèi)核空間中的。
5.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述將獲取的所述消息所在內(nèi)存頁(yè)面的物理地址映射到所述接收端的共享頁(yè)表的連續(xù)空閑頁(yè)表項(xiàng)中,得到消息的新虛擬地址,包括: 檢查所述接收端的共享頁(yè)表的頁(yè)表項(xiàng),獲得能容納所述消息的連續(xù)空閑頁(yè)表項(xiàng);將獲得的所述消息所在內(nèi)存頁(yè)面的物理地址映射到所述共享頁(yè)表的連續(xù)空閑頁(yè)表項(xiàng)中,得到消息的新虛擬地址。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于, 所述第一參數(shù)包括:所述消息的虛擬地址和所述消息的長(zhǎng)度,所述消息所在內(nèi)存頁(yè)面的物理地址是根據(jù)所述消息的虛擬地址和所述消息的長(zhǎng)度獲得的。
7.根據(jù)權(quán)利要求1或5所述的方法,其特征在于, 所述共享頁(yè)表為第一共享頁(yè)表;其中,所述第一共享頁(yè)表為用于進(jìn)行物理地址列表映射的頁(yè)表,所述發(fā)送端的第一共享頁(yè)表和所述接收端的第一共享頁(yè)表在所述內(nèi)核空間中共用同一物理內(nèi)存頁(yè)面或者不同物理內(nèi)存頁(yè)面。
8.根據(jù)權(quán)利要求1或5所述的方法,其特征在于, 所述共享頁(yè)表為第二共享頁(yè)表;其中,所述第二共享頁(yè)表為用于進(jìn)行物理地址列表映射的頁(yè)表,所述發(fā)送端的第二共享頁(yè)表和所述接收端的第二共享頁(yè)表在所述內(nèi)核空間中共用同一物理內(nèi)存頁(yè)面。
9.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述方法還包括: 從內(nèi)存空間中獲取一個(gè)頁(yè)面大小的空間作為共享頁(yè)表; 將所述共享頁(yè)表映射入所述發(fā)送端和所述接收端的的頁(yè)目錄中,或,將所述共享頁(yè)表映射入所述接收端的的頁(yè)目錄中。
10.一種進(jìn)程間通信的裝置,其特征在于,包括: 創(chuàng)建單元,用于建立與接收端通信的通信通道; 處理單元,用于通過(guò)系統(tǒng)調(diào)用進(jìn)入內(nèi)核空間,并將所述通信通道的通道號(hào)和第一參數(shù)寫入所述內(nèi)核空間; 獲取單元,用于根據(jù)所述通信通道的通道號(hào),獲得所述接收端的共享頁(yè)表;其中,所述共享頁(yè)表為所述頁(yè)目錄對(duì)應(yīng)的頁(yè)表中用于映射所述消息所在內(nèi)存頁(yè)面的物理地址的頁(yè)表; 所述處理單元,還用于將獲取的所述消息所在內(nèi)存頁(yè)面的物理地址映射到所述接收端的共享頁(yè)表的連續(xù)空閑頁(yè)表項(xiàng)中,得到消息的新虛擬地址; 存儲(chǔ)單元,用于將所述消息的新虛擬地址和所述第一參數(shù)存入所述接收端的消息通知區(qū)中,以便于所述接收端讀取所述消息通知區(qū)獲得所述消息的新虛擬地址和所述第一參數(shù),并根據(jù)所述新虛擬地址讀取具有相應(yīng)長(zhǎng)度的所述消息;其中,所述消息通知區(qū)是所述通信通道建立過(guò)程中分配的。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述第一參數(shù)包括:能力引用、能力引用偏移、所述消息頁(yè)內(nèi)偏移和所述消息的長(zhǎng)度, 所述獲取單元,還用于獲取存儲(chǔ)所述消息的內(nèi)存對(duì)應(yīng)的能力引用和能力引用偏移。
12.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述獲取單元包括: 第一獲取模塊,用于根據(jù)所述通信通道的通道號(hào),獲取所述接收端對(duì)應(yīng)的進(jìn)程控制塊; 第二獲取模塊,用于根據(jù)所述進(jìn)程控制塊中的所述接收端的頁(yè)目錄地址,獲得所述接收端的第一共享頁(yè)表。
13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述第一獲取模塊具體用于: 根據(jù)所述通信通道的通道號(hào),獲得接收端; 根據(jù)所述接收端對(duì)應(yīng)的進(jìn)程與進(jìn)程控制塊之間的關(guān)系映射表,獲得所述接收端對(duì)應(yīng)的進(jìn)程控制塊;其中,所述接收端對(duì)應(yīng)的進(jìn)程與進(jìn)程控制塊之間的關(guān)系映射表是預(yù)先存儲(chǔ)在內(nèi)核空間中的。
14.根據(jù)權(quán)利要求10或11所述的裝置,其特征在于,所述處理單元包括: 檢測(cè)模塊,用于檢查所述接收端的共享頁(yè)表的頁(yè)表項(xiàng),獲得能容納所述消息的連續(xù)空閑頁(yè)表項(xiàng); 第三獲取模塊,用于將獲得的所述消息所在內(nèi)存頁(yè)面的物理地址映射到所述共享頁(yè)表的連續(xù)空閑頁(yè)表項(xiàng)中,得到消息的新虛擬地址。
15.根據(jù)權(quán)利要求10所述的裝置,其特征在于, 所述第一參數(shù)包括:所述消息的虛擬地址和所述消息的長(zhǎng)度,所述消息所在內(nèi)存頁(yè)面的物理地址是根據(jù)所述消息的虛擬地址和所述消息的長(zhǎng)度獲得的。
16.根據(jù)權(quán)利要求10或14所述的裝置,其特征在于, 所述共享頁(yè)表為第一共享頁(yè)表;其中,所述第一共享頁(yè)表為用于進(jìn)行物理地址列表映射的頁(yè)表,所述發(fā)送端的第一共享頁(yè)表和所述接收端的第一共享頁(yè)表在所述內(nèi)核空間中共用同一物理內(nèi)存頁(yè)面或者不同物理內(nèi)存頁(yè)面。
17.根據(jù)權(quán)利要求10或14所述的裝置,其特征在于, 所述共享頁(yè)表為第二共享頁(yè)表;其中,所述第二共享頁(yè)表為用于進(jìn)行物理地址列表映射的頁(yè)表,所述發(fā)送端的第二共享頁(yè)表和所述接收端的第二共享頁(yè)表在所述內(nèi)核空間中共用同一物理內(nèi)存頁(yè)面。
18.根據(jù)權(quán)利要求10或11所述的裝置,其特征在于, 所述獲取單元,還用于從內(nèi)存中獲取一個(gè)頁(yè)面大小的空間作為共享頁(yè)表; 所述處理單元,還用于將所述共享頁(yè)表映射入所述發(fā)送端和所述接收端的頁(yè)目錄中,或,將所述共享頁(yè)表映射入所述接收端的的頁(yè)目錄中。
【專利摘要】本發(fā)明的實(shí)施例提供一種進(jìn)程間通信的方法和裝置,涉及計(jì)算機(jī)技術(shù)領(lǐng)域,實(shí)現(xiàn)接收端不用進(jìn)出內(nèi)核空間便可對(duì)消息進(jìn)行讀取,避免了接收端進(jìn)出內(nèi)核空間的時(shí)間開銷,節(jié)省了消息的響應(yīng)時(shí)間,同時(shí)減少了對(duì)接收端高速緩存的擾動(dòng)。該方法具體包括:發(fā)送端建立與接收端的通信通道;進(jìn)入內(nèi)核空間,將通信通道的通道號(hào)和第一參數(shù)寫入內(nèi)核空間;根據(jù)通信通道的通道號(hào),獲得接收端的共享頁(yè)表;將消息所在內(nèi)存頁(yè)面的物理地址映射到接收端的共享頁(yè)表的連續(xù)空閑頁(yè)表項(xiàng)中,得到消息的新虛擬地址;將消息的新虛擬地址和第一參數(shù)存入接收端的消息通知區(qū),以便接收端根據(jù)新虛擬地址讀取消息。本發(fā)明應(yīng)用于進(jìn)程間通信中。
【IPC分類】G06F9-54
【公開號(hào)】CN104657224
【申請(qǐng)?zhí)枴緾N201310594639
【發(fā)明人】朱望斌, 劉潭義, 顏友亮
【申請(qǐng)人】華為技術(shù)有限公司
【公開日】2015年5月27日
【申請(qǐng)日】2013年11月21日