亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種進(jìn)程間通信的方法和裝置的制造方法_3

文檔序號:8339471閱讀:來源:國知局
br>[0155]301、發(fā)送端建立與接收端的通信通道。
[0156]具體的,可以基于消息傳輸或者共享內(nèi)存的方案等技術(shù)實(shí)現(xiàn)通信通道的建立。通信通道的建立過程中,同時(shí)為發(fā)送端分配消息通知區(qū)Mx,為接收端分配消息通知區(qū)My。其中,消息通知區(qū)可以是基于數(shù)組或者環(huán)形鏈表等方式來實(shí)現(xiàn)的。消息通知區(qū)中有多個(gè)槽位,每個(gè)槽位可以保存相應(yīng)的內(nèi)容。其中,發(fā)送端將接收端的消息通知區(qū)映射到自己的地址空間,接收端將發(fā)送端的消息通知區(qū)映射到自己的地址空間,實(shí)現(xiàn)發(fā)送端可以訪問接收端的消息通知區(qū),接收端可以訪問發(fā)送端的消息通知區(qū)。
[0157]302、發(fā)送端從內(nèi)存空間中獲取一個(gè)頁面大小的空間作為第一共享頁表。
[0158]303、發(fā)送端將第一共享頁表映射入接收端的頁目錄中。
[0159]具體的,發(fā)送端預(yù)先在內(nèi)存空間中申請一個(gè)頁面大小的空間作為第一共享頁表,并將第一共享頁表映射到接收端的頁目錄中,用于零拷貝過程中存儲消息的物理地址。或者,可選的,接收端預(yù)先在內(nèi)存空間中申請一個(gè)頁面大小的空間作為第一共享頁表,并將該第一共享頁表映射到接收端的頁目錄中。
[0160]其中,本實(shí)施例中步驟301和步驟302?303之間在執(zhí)行上沒有先后順序之分,也就是說在實(shí)際的運(yùn)行中,步驟301可以是和步驟302?303同時(shí)進(jìn)行的,即發(fā)送端建立與接收端的通信通道的過程中,從內(nèi)存空間中獲取一個(gè)頁面大小的空間作為第一共享頁表。并將該第一共享頁表映射入接收端的頁目錄中。
[0161]304、發(fā)送端通過系統(tǒng)調(diào)用進(jìn)入內(nèi)核空間,并將通信通道的通道號和第一參數(shù)寫入內(nèi)核空間。
[0162]其中,第一參數(shù)包括:消息的虛擬地址和消息的長度。
[0163]其中,步驟301?304可以是發(fā)送端的內(nèi)核實(shí)現(xiàn)的。
[0164]305,發(fā)送端根據(jù)消息的虛擬地址和消息的長度,獲得消息的物理地址。
[0165]具體的,該步驟可以是發(fā)送端的內(nèi)核實(shí)現(xiàn)的,若發(fā)送端可以為進(jìn)程Px,則進(jìn)程Px的內(nèi)核根據(jù)消息的虛擬地址找到進(jìn)程Px中的對應(yīng)頁表,然后在該頁表中獲得包含消息的物理頁面的地址列表,獲得消息的物理地址。其中,消息物理頁面地址列表的長度可以為K。
[0166]306、發(fā)送端根據(jù)通信通道的通道號,獲得接收端。
[0167]307、發(fā)送端根據(jù)接收端對應(yīng)的進(jìn)程與進(jìn)程控制塊之間的關(guān)系映射表,獲得接收端對應(yīng)的進(jìn)程控制塊。
[0168]其中,接收端對應(yīng)的進(jìn)程與進(jìn)程控制塊之間的關(guān)系映射表是預(yù)先存儲在內(nèi)核空間中的。
[0169]步驟306和步驟307可以是發(fā)送端的內(nèi)核實(shí)現(xiàn)的。
[0170]其中,進(jìn)程控制塊中包含頁目錄地址。
[0171]308、發(fā)送端根據(jù)進(jìn)程控制塊中的接收端的頁目錄地址,獲得接收端的第一共享頁表。
[0172]其中,第一共享頁表為新增的頁目錄項(xiàng)對應(yīng)的用于進(jìn)行物理地址列表映射的頁表,發(fā)送端的第一共享頁表和接收端的第一共享頁表在內(nèi)核空間中共用同一物理內(nèi)存頁面或者不同物理內(nèi)存頁面。
[0173]具體的,該步驟可以是發(fā)送端的內(nèi)核實(shí)現(xiàn)的。發(fā)送端內(nèi)核通過在接收端的進(jìn)程控制塊中查找到接收端的頁目錄地址,在頁目錄的頁表中根據(jù)頁表項(xiàng)中的標(biāo)識信息,選取頁目錄下具有連續(xù)空閑頁表項(xiàng)的頁表作為第一共享頁表。
[0174]309、發(fā)送端檢查接收端的第一共享頁表的頁表項(xiàng),獲得能容納消息的連續(xù)空閑頁表項(xiàng)。
[0175]310、發(fā)送端將獲得的消息所在內(nèi)存頁面的物理地址映射到第一共享頁表的連續(xù)空閑頁表項(xiàng)中,得到消息的新虛擬地址。
[0176]步驟309和步驟310可以是發(fā)送端的內(nèi)核實(shí)現(xiàn)的。
[0177]311、發(fā)送端將消息的新虛擬地址和第一參數(shù)存入接收端的消息通知區(qū)中,以便于接收端讀取消息通知區(qū)獲得消息的新虛擬地址和第一參數(shù),并根據(jù)新虛擬地址讀取具有相應(yīng)長度的消息。
[0178]其中,消息通知區(qū)是通信通道建立過程中分配的。
[0179]該步驟具體可以是發(fā)送端的內(nèi)核實(shí)現(xiàn)的。
[0180]具體的,接收端讀取消息通知區(qū)獲得消息的新虛擬地址和第一參數(shù),并根據(jù)新虛擬地址讀取具有相應(yīng)長度的消息的一種可能的實(shí)現(xiàn)方式為:接收端在接收端的消息通知區(qū)中,獲取消息的新虛擬地址和消息的長度,根據(jù)信息的新虛擬地址在對應(yīng)的內(nèi)存的中讀取具有相應(yīng)長度的消息。接收端可以不需要進(jìn)出內(nèi)核空間,只要發(fā)送端將消息的虛擬地址記錄在接收端的消息通知區(qū)中,接收端直接訪問自己的消息通知區(qū)即可獲得消息的地址,從而在對應(yīng)的內(nèi)存中讀取消息,避免了時(shí)間開銷、減少了對高速緩存的擾動。進(jìn)而,接收端的工作效率得到有效的提高。
[0181]具體的,對本實(shí)施例中與上述實(shí)施例中相同步驟的解釋可以參照上述實(shí)施例中的解釋,此處不再贅述。
[0182]本發(fā)明的實(shí)施例提供的進(jìn)程間通信的方法,通過發(fā)送端將消息的物理地址映射到獲得的接收端的共享頁表的連續(xù)空閑頁表項(xiàng)頁中,得到該消息的新虛擬地址,并將新虛擬地址存入接收端的消息通知區(qū)中,實(shí)現(xiàn)了在零拷貝方案中接收端不用進(jìn)出內(nèi)核空間便可對消息進(jìn)行讀取,避免了接收端進(jìn)出內(nèi)核空間的時(shí)間開銷,同時(shí)減少了對接收端高速緩存的擾動。
[0183]本發(fā)明的實(shí)施例提供一種進(jìn)程間通信的方法,該方法應(yīng)用于多內(nèi)核系統(tǒng)的內(nèi)核間零拷貝方案中,參照圖4所示,發(fā)送端和接收端可以是同一系統(tǒng)中的不同的進(jìn)程,該方法包括以下步驟:
[0184]401、發(fā)送端建立與接收端的通信通道。
[0185]402、發(fā)送端從內(nèi)存空間中獲取一個(gè)頁面大小的空間作為第二共享頁表。
[0186]403、發(fā)送端將第二共享頁表映射入發(fā)送端和接收端的頁目錄中。
[0187]具體的,發(fā)送端預(yù)先在內(nèi)存空間中申請一個(gè)頁面大小的空間作為第二共享頁表,并將第二共享頁表映射到發(fā)送端的頁目錄中,同時(shí)發(fā)送端通知接收端將該第二共享頁表映射入接收端的頁目錄中,用于零拷貝過程中存儲消息的物理地址。
[0188]第二共享頁表為用于進(jìn)行物理地址列表映射的頁表,發(fā)送端的第二共享頁表和接收端的第二共享頁表在內(nèi)核空間中共用同一物理內(nèi)存頁面。發(fā)送端可以對接收端的第二共享頁表進(jìn)行操作,接收端可以對發(fā)送端的第二共享頁表進(jìn)行操作。其中,發(fā)送端的第二共享頁表所在的頁目錄項(xiàng)的位置與接收端的第二共享頁表所在的頁目錄項(xiàng)的位置相同。
[0189]其中,本實(shí)施例中步驟401和步驟402?403之間在執(zhí)行上沒有先后順序之分,也就是說在實(shí)際的運(yùn)行中,步驟401可以是和步驟402?403同時(shí)進(jìn)行的,即發(fā)送端建立與接收端的通信通道的過程中,從內(nèi)存空間中獲取一個(gè)頁面大小的空間作為第二共享頁表。并將該第二共享頁表映射入發(fā)送端和接收端的頁目錄中。
[0190]404、發(fā)送端通過系統(tǒng)調(diào)用進(jìn)入內(nèi)核空間,并將通信通道的通道號和第一參數(shù)寫入內(nèi)核空間。
[0191]其中,第一參數(shù)包括:消息的虛擬地址和消息的長度。
[0192]405、發(fā)送端根據(jù)消息的虛擬地址和消息的長度,獲得消息所在內(nèi)存頁面的物理地址。
[0193]具體的,該步驟可以是發(fā)送端的內(nèi)核實(shí)現(xiàn)的,若發(fā)送端可以為進(jìn)程Px,則進(jìn)程Px的內(nèi)核根據(jù)消息的虛擬地址找到進(jìn)程Px中的對應(yīng)頁表,然后在該頁表中獲得包含消息的物理頁面的地址列表,獲得消息的物理地址。其中,消息物理頁面地址列表的長度可以為K。
[0194]406、發(fā)送端根據(jù)通信通道的通道號,獲得接收端的第二共享頁表。
[0195]其中,第二共享頁表為新增的頁目錄項(xiàng)對應(yīng)的用于進(jìn)行物理地址映射的頁表。
[0196]具體的,發(fā)送端為進(jìn)程Px,接收端為進(jìn)程Py,發(fā)送端根據(jù)通信通道的通道號,獲得接收端的第二共享頁表可以為:進(jìn)程Px根據(jù)通信通道的通道號,在進(jìn)程Px的頁目錄中找到與進(jìn)程Py相關(guān)聯(lián)的第二共享頁表。由于第二共享頁表是通信通道建立過程中建立的發(fā)送端和接收端均可以互相操作的共享頁表,因此,進(jìn)程Px可以直接在進(jìn)程Py的第二共享頁表中進(jìn)行將消息的物理地址映射到該第二共享頁表的連續(xù)空閑的頁表項(xiàng)中的操作。
[0197]407、發(fā)送端檢查接收端的第二共享頁表的頁表項(xiàng),獲得能容納消息的連續(xù)空閑頁表項(xiàng)。
[0198]408、發(fā)送端將獲得的消息所在內(nèi)存頁面的物理地址映射到第二共享頁表的連續(xù)空閑頁表項(xiàng)中,得到消息的新虛擬地址。
[0199]409、發(fā)送端將消息的新虛擬地址和第一參數(shù)存入接收端的消息通知區(qū)中,以便于接收端讀取消息通知區(qū)獲得消息的新虛擬地址和第一參數(shù),并根據(jù)新虛擬地址讀取具有相應(yīng)長度的消息。
[0200]其中,消息通知區(qū)是通信通道建立過程中分配的。
[0201]具體的,步驟405?409可以是發(fā)送端的內(nèi)核實(shí)現(xiàn)的。
[0202]具體的,接收端讀取消息通知區(qū)獲得消息的新虛擬地址和第一參數(shù),并根據(jù)新虛擬地址讀取具有相應(yīng)長度的消息的一種可能的實(shí)現(xiàn)方式為:接收端在接收端的消息通知區(qū)中,獲取消息的新虛擬地址和消息的長度,根據(jù)信息的新虛擬地址在對應(yīng)的內(nèi)存的中讀取具有相應(yīng)長度的消息。
[0203]對本實(shí)施例中與上述實(shí)施例中相同步驟的解釋可以參照上述實(shí)施例中的解釋,此處不再贅述。
[0204]本發(fā)明的實(shí)施例提供的進(jìn)程間通信的方法,通過發(fā)送端將消息的物理地址映射到獲得的接收端的共享頁表的連續(xù)空閑頁表項(xiàng)頁中,得到該消息的新虛擬地址,并將新虛擬地址存入接收端的消息通知區(qū)中,實(shí)現(xiàn)了在零拷貝方案中接收端不用進(jìn)出內(nèi)核空間便可對消息進(jìn)行讀取,避免了接收端進(jìn)出內(nèi)核空間的時(shí)間開銷,同時(shí)減少了對接收端高速緩存的擾動。
[0205]本發(fā)明的實(shí)施例提供一種進(jìn)程間通信的方法,該方法應(yīng)用于基于Capability模型的單內(nèi)核或者多內(nèi)核系統(tǒng)的內(nèi)核內(nèi)零拷貝方案中,第一共享頁表是頁目錄中原來的頁目錄項(xiàng)對應(yīng)的頁表,參照圖5所示,發(fā)送端和接收端可以是同一系統(tǒng)中的不同的進(jìn)程,該方法包括以下步驟:
[0206]501、發(fā)送端建立與接收端的通信通道。
[0207]具體的,可以基于消息傳輸或者共享內(nèi)存的方案等技術(shù)實(shí)現(xiàn)通信通道的建立。通信通道的建立過程中,同時(shí)為發(fā)送端分配消息通知區(qū)Mx,為接收端分配消息通知區(qū)My。其中,消息通知區(qū)可以是基于數(shù)組或者環(huán)形鏈表等方式來實(shí)現(xiàn)的。消息通知區(qū)中有多個(gè)槽位,每個(gè)槽位可以保存相應(yīng)的內(nèi)容。其中,發(fā)送端將接收端的消息通知區(qū)映射到自己的地址空間,接收端將發(fā)送端的消息通知區(qū)映射到自己的地址空間,實(shí)現(xiàn)發(fā)送端可以訪問接收端的消息通知區(qū),接收端可以訪問發(fā)送端的消息通知區(qū)。
[0208]502、發(fā)送端獲取存儲消息的內(nèi)存對應(yīng)的能力引用(Capability Reference,簡稱capref)和能力引用capref偏移。
[0209]發(fā)送端可以在用戶空間的內(nèi)部數(shù)據(jù)結(jié)構(gòu)中查詢存儲消息的內(nèi)存對應(yīng)的能力引用和能力弓I用偏移。
[0210]503、發(fā)送端通過系統(tǒng)調(diào)用進(jìn)入內(nèi)核空間,并將通信通道的通道號和第一參數(shù)寫入內(nèi)核空間。
[0211]其中第一參數(shù)包括:能力引用、能力引用偏移、消息頁內(nèi)偏移和消息的長度。
[0212]504、發(fā)送端根據(jù)通信通道的通道號,獲得接收端。
[0213]505、發(fā)送端根據(jù)接收端對應(yīng)的進(jìn)程與進(jìn)程控制塊之間的關(guān)系映射表,獲得接收端對應(yīng)的進(jìn)程控制塊。
[0214]其中,接收端對應(yīng)的進(jìn)程與進(jìn)程控制塊之間的關(guān)系映射表是預(yù)先存儲在內(nèi)核空間中的。
[0215]可選的,發(fā)送端將能力引用capref對應(yīng)的能力Capability存入接收端的能力空間(Capability Space,簡稱CSpace)中,以便于接收端需要轉(zhuǎn)發(fā)消息至不同于發(fā)送端的另一進(jìn)程時(shí),可以讀取消息的物理內(nèi)存區(qū)域,進(jìn)行消息的轉(zhuǎn)發(fā)。
[0216]其中,能力弓丨用對應(yīng)的能力中包含了消息的物理內(nèi)存區(qū)域。
[0217]506、發(fā)送端根據(jù)進(jìn)程控制塊中的接收端的頁目錄地址,獲得接收端的第一共享頁表。
[0218]其中,第一共享頁表為用于進(jìn)行物理地址列表映射的頁表,發(fā)送端的第一共享頁表和接收端的第一共享頁表在內(nèi)核空間中共用同一物理內(nèi)存頁面或者不同物理內(nèi)存頁面。
[0219]507、發(fā)送端檢查接收端的第一共享頁表的頁表項(xiàng),獲得能容納消息的連續(xù)空閑頁表項(xiàng)。
[0220]508、發(fā)送端將獲得的消息所在內(nèi)存頁面的物理地址映射到第一共享頁表的連續(xù)空閑頁表項(xiàng)中,得到消息的新虛擬地址。
[
當(dāng)前第3頁1 2 3 4 5 6 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1