新四季網

進程間通信方法和裝置的製作方法

2023-09-17 04:20:05

專利名稱:進程間通信方法和裝置的製作方法
技術領域:
本發明涉及通信領域,尤其涉及一種進程間通信方法和裝置。
背景技術:
目前,Unix及Linux中存在多種進程間通信方式,涉及到數據 交互的通信方式包括 使用消息隊列、文件、共享內存進4亍通4言。
消息隊列支持進程到進程的點對點通信,但這種方式需要對數 據進行拷貝,效率較低;採用數據文件進行通信能實現各進程靈活 地交換數據的功能,但是隨著進程對數據交換率的要求不斷提高, 這種方式存在很大的局限性;目前,應用較多的是採用共享內存進 行通信,這種技術適應於大的數據交互,且無需拷貝數據,但這種 方法的靈活性不高,在涉及多進程的數據交互時,需要配合其他的 通信方式,例如信號量4支術,才能滿足應用的需求。
在Linux智慧型手機平臺中,進程間通信非常頻繁,其中存在有 大量的數據交互,上述三種進程間的通信方式,都無法同時兼顧效 率和靈活性,且現有的共享內存與信號量技術的結合,也只能簡單 標示可用內存的大小,不能靈活地在各進程間進行點對點的數據交 互。

發明內容
考慮到相關技術中存在的進程間的通信方式無法同時具備效率 和靈活性的問題而提出本發明,為此,本發明的主要目的在於提供 一種進禾呈間通信方法及裝置,以解決上述問題。
根據本發明的一個方面,提供一種進程間通信方法。
根據本發明的進程間通信方法包括當前進程將發送給目的進 程的數據存儲在預先設置的內存塊中;當前進程根據預先設置的進 程標識與消息隊列標識的對應關係,獲取與目的進程的進程標識對 應的消息隊列標識;當前進程4艮據消息隊列標識,確定目的進程消 息隊列,並將內存塊的地址信息;改置在目的進程消息隊列中;目的 進程通過讀取其消息隊列,並根據地址信息,讀取內存塊中存儲的 數據。
進一步地,在當前進程將發送給目的進程的數據存儲在預先設 置的內存塊中之前,該方法還包括在作業系統共享內存中設置第 一內存,並將第一內存劃分為多個內存塊,其中,內存塊用於存儲 當前進程發送給目的進程的數據。
進一步地,在當前進程將發送給目的進程的數據存儲在預先設 置的內存塊中之前,該方法還包括在作業系統共享內存中設置第 二內存,其中,第二內存用於存儲進程標識、消息隊列標識;建立 進程標識和消息隊列標識之間的對應關係。
其中,進禾呈標識包括以下之一進程名稱或進程ID。
優選地,當前進程將發送給目的進程的數據存儲在預先設置的 內存塊中時上述方法還包括當前進程將內存塊的狀態置為使用狀態。
5進一步地,在目的進程讀取內存塊中存儲的數據之後,上述方
法還包括目的進程將內存塊的狀態置為空閒狀態。
優選地,上述多個內存塊的大小相等。
根據本發明的另一個方面,提供一種進程間通信裝置。
根據本發明的進程間通信裝置包括存儲模塊,用於當前進程 將發送給目的進程的數據存儲在預先設置的內存塊中;獲取模塊, 用於當前進程才艮據預先i殳置的進程標識與消息隊列標識的對應關 系,獲取與目的進程的進程標識對應的消息隊列標識;處理模塊, 用於當前進程才艮據消息隊列標識,確定目的進程消息隊列,並將內 存塊的地址信息力欠置在目的進^f呈消息隊列中;讀取才莫塊,用於目的 進程通過讀取其消息隊列,並根據地址信息,讀取內存塊中存儲的 數據。
通過本發明的上述至少一個4支術方案,通過採用本發明進程間 通信方法,提高了數據交換速率,並且能夠靈活地在多進程間進行 點對點的lt據交互。


附圖用來衝是供對本發明的進一步理解,並且構成說明書的一部 分,與本發明的實施例一起用於解釋本發明,並不構成對本發明的 限制。在附圖中
圖1是根據本發明方法實施例的進程間通信方法的流程圖2是根據本發明實施例的MEMB內存塊的結構圖;圖3是才艮據本發明實施例的MEMA進程信息統計表的消息示 意圖4a是根據本發明實施例的初始化過程的流程圖一; 圖4b是根據本發明實施例的初始化過程的流程圖二; 圖5是根據本發明實施例的數據發送過程的流程圖; 圖6是根據本發明實施例的數據接收過程的流程圖; 圖7是根據本發明實施例的進程間通信裝置的結構框圖。
具體實施方式
功能概述
如上所述,針對相關技術存在的不能在各進程間靈活地進行數 據交互的問題,本發明4是供了一種進程間通信方案,當前進程將發 送給目的進程的數據存儲在內存塊中,並根據進程標識與消息隊列 標識的對應關係,獲取目的進程的消息隊列標識;當前進程通過該 消息隊列標識,確定出目的進程消息隊列,並將內存塊的地址信息 放置在目的進程消息隊列中;目的進程讀取其消息隊列中的地址信 息,讀取內存塊中存儲的數據,以此提高數據的交換速率。
另夕卜,如下文所描述的,術語"存4諸介質"可以表示用於存儲 數據的一種或多種裝置,包括只讀存4諸器(ROM)、隨才幾存耳又存4諸 器(RAM)、磁RAM、磁心存儲器、磁碟存儲介質、光存儲介質、 快閃記憶體裝置和/或用於存儲信息的其他才幾器可讀介質。術語"機器可讀 介質,,包括但不限於可攜式或固定存儲裝置、光存儲裝置、無線通 道或能夠存儲、容納、或承載指令和/或數據的各種其他介質。此外,可以通過硬體、軟體、固件、中間件、微碼、硬體描述 語言或其組合來實現實施例。當用軟體、固件、中間件或^f敬碼來實
務的程序代碼或碼段。(多個)處理器可以執行必要任務。碼段可以 表示進程、函數、子程序、程序、例行程序、子例行程序、模塊、 對象、軟體包、類、或指令、數據結構、或程序語言的任意組合。 通過傳輸和/或接收信息、數據、自變量、或存儲內容來將碼段耦合 到另一碼段或硬體電路。信息、自變量、參數、數據等可以經由包 括存儲器共享、消息傳遞、令牌傳遞、網絡傳輸等的任意合適方式 來傳遞、傳輸、或傳送。
在不沖突的情況下,本申請中的實施例及實施例中的特徵可以 相互組合。
下面將結合附圖詳細描述本發明。
方法實施例
才艮據本發明實施例,4是供了一種進程間通信方法。
圖1是根據本發明實施例的進程間通信方法的流程圖,需要說 明的是,為了便於描述,在圖1中以步驟的形式示出並描述了本發 明的方法實施例的技術方案,在圖1中所示出的步驟可以在諸如一 組計算機可執行指令的計算機系統中執行。雖然在圖1中示出了邏 輯順序,但是在某些情況下,可以以不同於此處的順序執行所示出
或描述的步驟。如圖1所示,該方法包括以下步驟(步驟S102至 步驟S108 )。
步驟S102,當前進程將發送給目的進程的數據存儲在預先設置 的內存塊中;步驟S104,當前進程根據預先i殳置的進程標識與消息隊列標識 的對應關係,獲取與目的進程的進程標識對應的消息隊列標識;
步驟S106 ,當前進程根據消息隊列標識,確定目的進程消息隊 列,並將內存塊的地址信息;改置在目的進程消息隊列中;
步驟S108,目的進程通過讀取其消息隊列,並才艮據地址信息, 讀取內存塊中存儲的悽t據。
在當前進程將發送給目的進程的數據存儲在預先設置的內存塊 中之前,需要在作業系統中設置第一內存和第二內存,並將第一內 存劃分為多個內存塊,該多個內存塊的大小可以相等,其中,內存 塊用於存儲當前進程發送給目的進程的數據;第二內存主要用於存 ^f諸進程標識、消息隊列標識,並建立進程標識和消息隊列標識二者 之間的對應關係,其中,進程標識包括以下之一進程名稱或進程 ID,且上述第一內存和第二內存可以為上文所述的存^諸介質。
通過本發明實施例4是供的4支術方案,通過採用本發明進程間通 信方法,提高了數據交換速率,並且能夠靈活地在多進程間進行點 對點的數據交互。
下面結合共享內存和消息隊列技術,按照初始化、發送數據和 接收數據的順序對本發明實施例提供的快速的進程通信方法進行詳
初始化在平臺第一個啟動進禾呈中,在共享內存中申"i青一塊內 存(為了便於描述,將該內存稱為內存l),將該內存l劃分成大小 相同的多個內存塊,並在每個內存塊之前加一個標誌位,用以標示 每個內存塊的狀態,如圖2所示,示出了每個內存塊的結構圖,同 時將所有內存塊的初始狀態都置為空閒。另外,在共享內存中再申 請一塊內存(為了區別於上述內存1,將該內存稱為內存2),內存2用於存儲進程統計信息,創建每個進程時,都同時為該進程創建 一個消息隊列,並把消息隊列ID記錄到進程統計信息列表中,同時 把創建的內存1和內存2都映射到當前進程空間中,如圖3所示, 示出了進程信息統計表的消息示意圖,可以看出,該進程信息統計 表包括進程名稱、進程ID、消息隊列的ID。
發送數據從進程統計信息中查找目的進程ID和消息隊列ID, 根據該消息隊列ID確定目的進程的消息隊列,然後在共享內存中申 請內存1,將發送給目的進程的數據放置在該申請的內存塊中,將 內存塊狀態置為使用,並將該內存塊的指針(即,上文所述的內存 塊的標識)作為消息隊列的數據,把目的進程ID作為消息類型,然 後通過目的進程的消息隊列將該內存塊的指針發送接口發送給目的 進程。
接收凝:據目的進程衝全測自己的消息隊列,以乂人消息隊列中獲 取消息,發現沒有發給自己的消息時則阻塞;發現消息到達時,從 消息中獲取到指針,通過這個指針對應的內存塊到共享內存中去訪 問悽i據,對數據才乘作完成之後,需要釋》丈這塊內存塊,即將內存塊 狀態位置為空閒。
圖4a是根據本發明實施例的初始化過程的流程圖一,示出了平 臺第一個啟動進禾呈的初始4b^4E,如圖4a所示,包4舌以下處理。
平臺的第一個啟動進程
步驟S401a,在共享內存中申請第一內存和第二內存,命名為 MEMA和MEMB,其中,MEMA和MEMB的大小4安照實際需要 進行配置;
步驟S402a,創建消息隊列;
10步驟S403a,對MEMA初始化進程信息統計表,並4巴當前進程 的名稱、ID、消息隊列ID等消息填入表中;
步驟S404a,對MEMB,劃分為若干大小相同的內存塊,每塊 內存塊頭部保留4位元組作為標示,初始化全部置為空閒。
圖4b是才艮據本發明實施例的初始化過程的流程圖二,示出了平 臺其他進程的初始化流程,如圖4b所示,包括以下處理。
平臺的其他進程
步驟S401b,映射MEMA和MEMB到當前進程地址空間中; 步-腺S402b,創建消息隊列;
步驟S403b,更新MEMA中的進程信息統計表,加入當前進程 的名稱、ID 、消息隊列ID等消息。
圖5是根據本發明實施例的數據發送過程的流程圖,如圖5所 示,包糹舌以下處理。
步驟S501, #4居目的進程名稱,乂人MEMA中的進程信息統計 表查找該進程的ID和消息隊列ID;
步驟S502,從MEMB中查找一塊空閒內存塊,填入要發送給 目標進程的數據;
步驟S503,在消息隊列的msgbuf中,填入申請到的空閒內存 塊的指針信息;
步驟S504,調用消息隊列發送接口,把msgbuf發送到目標進 程的消息隊列中。圖6是根據本發明實施例的數據接收過程的流程圖,如圖6所 示,包4舌以下處理。
步驟S601,調用消息隊列接收接口從當前進程創建的消息隊列 中獲耳又消息;
步驟S602,如果沒有消息,進入到步驟S603,如果消息隊列 中有消息,接收到消息隊列中的消息時,直接對msgbuf中的內存指 針進行操作,進入到步驟S604;
步驟S603 ,判斷目的消息隊列是否阻塞,如果沒有阻塞,流程 結束,如果阻塞,返回到步驟S601;
步驟S604,操作完畢後,釋放該內存塊,即置該內存塊標誌為 空閒。
裝置實施例
根據本發明實施例,提供一種進程間通信裝置。
圖5是根據本發明實施例的進程間通信裝置的結構框圖,如圖 5所示,該裝置包括存儲一莫塊10、獲取糹莫塊20、處理;漠塊30和讀 取才莫塊40。
存儲模塊10,用於當前進程將發送給目的進程的數據存儲在預 先設置的內存塊中;獲取^^莫塊20,用於當前進程根據預先設置的進 程標識與消息隊列標識的對應關係,獲取與目的進程的進程標識對 應的消息隊列標識;處理才莫塊30,連接至獲取才莫塊20,用於當前進 程根據消息隊列標識,確定目的進程消息隊列,並將內存塊的地址 信息放置在目的進程消息隊列中;讀取模塊40,連接至處理模塊30和存儲模塊10,用於目的進程通過讀取其消息隊列,並根據地址信 息,讀取內存塊中存儲的數據。
通過本發明實施例提供的進程間通信裝置,通過採用本發明進 程間進程間通信方法,提高了數據交換速率,並且能夠靈活地在多
進程間進行點對點的翁:據交互。
如上所述,藉助於本發明提供的進程間通信方法和/或裝置,本 發明的目地在於提供一種在進程間靈活而快速的通信方法,採用零 拷貝的方式,滿足手機智能平臺對進程間大量的數據交互需求,採 用本發明的零拷貝進程間通信方法,其使用結果表明性能十分穩定、 數據交換速率極快,並且能靈活的在多進程間進行點對點的數據交 互,完全滿足手機智能平臺多進程通信需求。
以上所述僅為本發明的優選實施例而已,並不用於限制本發明, 對於本領域的衝支術人員來i兌,本發明可以有各種更改和變化。凡在 本發明的精神和原則之內,所作的任何修改、等同替換、改進等, 均應包含在本發明的保護範圍之內。
權利要求
1. 一種進程間通信方法,其特徵在於,包括當前進程將發送給目的進程的數據存儲在預先設置的內存塊中;所述當前進程根據預先設置的進程標識與消息隊列標識的對應關係,獲取與所述目的進程的進程標識對應的消息隊列標識;所述當前進程根據所述消息隊列標識,確定目的進程消息隊列,並將所述內存塊的地址信息放置在所述目的進程消息隊列中;所述目的進程通過讀取其消息隊列,並根據所述地址信息,讀取所述內存塊中存儲的數據。
2. 才艮據4又利要求1所述的方法,其特4i在於,在當前進程將發送 給目的進程的數據存儲在預先設置的內存塊中之前,所述方法 還包括在作業系統共享內存中設置第一內存,並將所述第一內存 劃分為多個內存塊,其中,所述內存塊用於存儲所述當前進程 發送給所述目的進程的tt據。
3. 根據權利要求2所述的方法,其特徵在於,在當前進程將發送 給目的進程的數據存儲在預先i殳置的內存塊中之前,所述方法 還包括在所述作業系統共享內存中設置第二內存,其中,所述第 二內存用於存4諸進程標識、消息隊列標識;建立所述進程標識和所述消息隊列標識之間的對應關係。
4. 根據權利要求3所述的方法,其特徵在於,所述進程標識包括 以下之一進禾呈名稱或進禾呈ID。
5. 根據權利要求1至4中任一項所述的方法,其特徵在於,當前 進程將發送給目的進程的數據存儲在預先設置的內存塊中時, 所述方法還包才舌所述當前進程將所述內存塊的狀態置為使用狀態。
6. 根據權利要求1至4中任一項所述的方法,其特徵在於,在所 述目的進禾呈讀取所述內存塊中存^f諸的^t據之後,所述方法還包 括所述目的進程將所述內存塊的狀態置為空閒狀態。
7. 根據權利要求2至4中任一項所述的方法,其特徵在於,所述 多個內存塊的大小相等。
8. —種進程間通信裝置,其特徵在於,包括存儲才莫塊,用於當前進程將發送給目的進程的數據存儲在 預先設置的內存塊中;獲取4莫塊,用於所述當前進程才艮據預先i殳置的進程標識與 消息隊列標識的對應關係,獲取與所述目的進程的進程標識對 應的消息隊列標識;處理才莫塊,用於所述當前進程4艮據所述消息隊列標識,確 定目的進程消息隊列,並將所述內存塊的地址信息放置在所述 目的進程消息隊列中;讀取才莫塊,用於所述目的進程通過讀取其消息隊列,並根 據所述地址信息,讀耳又所述內存塊中存^渚的悽t據。
全文摘要
本發明公開了一種進程間通信方法和裝置,其中,該方法包括當前進程將發送給目的進程的數據存儲在預先設置的內存塊中;當前進程根據預先設置的進程標識與消息隊列標識的對應關係,獲取與目的進程的進程標識對應的消息隊列標識;當前進程根據消息隊列標識,確定目的進程消息隊列,並將內存塊的地址信息放置在目的進程消息隊列中;目的進程通過讀取其消息隊列,並根據地址信息,讀取內存塊中存儲的數據。藉助於本發明的技術方案,通過採用本發明進程間通信方法,提高了數據交換速率,並且能夠靈活地在多進程間進行點對點的數據交互。
文檔編號H04L29/08GK101448018SQ200810187329
公開日2009年6月3日 申請日期2008年12月26日 優先權日2008年12月26日
發明者坤 洪 申請人:中興通訊股份有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀