[發明專利]一種基于共享內存的進程間通訊方法有效
| 申請號: | 201310432622.7 | 申請日: | 2013-09-22 |
| 公開(公告)號: | CN103514053B | 公開(公告)日: | 2017-01-25 |
| 發明(設計)人: | 劉慶云;李世明;劉洋;秦鵬;鄭超;孫永;周舟;楊威 | 申請(專利權)人: | 中國科學院信息工程研究所 |
| 主分類號: | G06F9/54 | 分類號: | G06F9/54;G06F9/44 |
| 代理公司: | 北京輕創知識產權代理有限公司11212 | 代理人: | 楊立 |
| 地址: | 100093 *** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 共享 內存 進程 通訊 方法 | ||
1.一種基于共享內存的多進程間通訊方法,其特征在于,包括如下步驟:
步驟1:寫進程創建包括管理單元、循環隊列和內存池的共享內存,并在管理單元中存儲關于整個共享內存的管理信息;
步驟2:寫進程從管理單元中獲取關于當前寫進程的操作位置,根據每次待寫入數據的大小,順序開辟與待存入數據大小等大的第N(N=1,2,3…)存儲塊,將待寫入的數據存入相應存儲塊中;
步驟3:開辟第N存儲塊時,記錄所述第N存儲塊的大小、起始位置、結束位置以及存儲的是否為完整數據,上述記錄的信息形成第N結構體,并存入循環隊列的隊尾指針處;同時更新管理單元中關于當前寫進程的操作位置的記錄;
步驟4:在執行步驟2至3的同時,一個或若干個讀進程可對共享內存進行讀操作;
步驟5:每個讀進程自循環隊列的隊頭開始,依次讀取第N(N=1,2,3…)結構體;
步驟6:判斷第N結構體是否處于循環隊列的隊尾,如果是隊尾,說明該結構體對應的存儲塊正在進行寫操作,則等待,等到隊尾指針不指向該結構體時,執行步驟7;如果不是隊尾,則直接執行步驟7;
步驟7:根據該結構體中關于第N存儲塊的位置信息,讀取內存池中相應第N存儲塊中的數據;
步驟8:判斷所述寫進程是否還要向內存池寫入數據,如果是,返回步驟2;否則判斷內存池中數據是否都已讀完,如果未讀完則返回步驟5;否則結束。
2.根據權利要求1所述一種基于共享內存的多進程間通訊方法,其特征在于,步驟1中所述的管理信息包括:
該共享內存創建者ID、隊列規模、內存池大小、內存池起始位置、內存池結尾位置、當前寫進程的操作位置、當前讀該共享內存的所有讀進程標記、當前使用該共享內存的進程數目、讀寫鎖和互斥鎖。
3.根據權利要求1所述一種基于共享內存的多進程間通訊方法,其特征在于,步驟2中開辟第N存儲塊時,還要進行如下操作,
步驟2.1:根據第N-1存儲塊的結束位置、待存入數據的大小以及內存池的結尾位置判斷內存池是否還有足夠空間開辟第N存儲塊來存儲數據,如果有足夠空間,則執行步驟2.2;如果沒有足夠空間,則執行2.3;
步驟2.2:開辟與待存入數據等大的第N存儲塊,將待存入數據存入所述第N存儲塊,生成關于第N存儲塊的結構體,并在結構體中標記所存儲的數據為完整數據;
步驟2.3:開辟自第N-1存儲塊的結束位置至內存池的結束位置大小的第N存儲塊,將待存入數據的一部分存入所述第N存儲塊,形成第N存儲塊的結構體,在結構體中標記所存儲的數據為不完整數據;將剩余的待存入數據存入內存池頭部。
4.根據權利要求3所述一種基于共享內存的多進程間通訊方法,其特征在于,步驟2.3中在將剩余的待存入數據存入內存池頭部前要執行如下步驟:
步驟2.3.1:寫進程根據循環隊列的第N(N=1,2,3,4…)結構體中關于讀進程讀取第N存儲塊的記錄,判斷第N存儲塊中是否被所有讀進程讀完,如果未讀完則等待,等到讀完后,執行步驟2.3.2;如果讀完則直接執行步驟2.3.2;
步驟2.3.2:判斷第N存儲塊的大小是否能夠容納剩余的待存入數據,如果能夠容納,則自內存池起始位置開始開辟與剩余的待存入數據等大的存儲塊,結束;否則返回步驟2.3.1。
5.根據權利要求4所述一種基于共享內存的多進程間通訊方法,其特征在于,所述步驟2.3.1中還包括預設一個等待時間閾值,當所述寫進程等待的時間超過等待時間閾值時,所述第N存儲塊還未被所有讀進程讀完,則不再等待,直接執行步驟2.3.2。
6.根據權利要求1所述一種基于共享內存的進程間通訊方法,其特征在于,步驟3中所述第N結構體中還包括用于記錄一個或若干個讀進程讀取存儲池中第N存儲塊的讀取狀態的標記數組,當某一讀進程讀取第N存儲塊時,將第N結構體關于該讀進程對所述第N存儲塊是否已讀的標記位置1。
7.根據權利要求1所述一種基于共享內存的多進程間通訊方法,其特征在于,多個讀進程可同時對共享內存進行讀操作,只有一個寫進程對共享內存進行寫操作,讀進程和寫進程可同時對共享內存進行操作。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國科學院信息工程研究所,未經中國科學院信息工程研究所許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310432622.7/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:旋轉壓縮機和具有其的冷凍循環裝置
- 下一篇:耐磨環組件和泵送設備





