[發明專利]一種基于邊界保護的消息通信方法及裝置有效
| 申請號: | 202010570711.8 | 申請日: | 2020-06-22 |
| 公開(公告)號: | CN111538607B | 公開(公告)日: | 2020-10-20 |
| 發明(設計)人: | 韓輝 | 申請(專利權)人: | 北京翼輝信息技術有限公司 |
| 主分類號: | G06F9/54 | 分類號: | G06F9/54;G06F21/62 |
| 代理公司: | 北京智乾知識產權代理事務所(普通合伙) 11552 | 代理人: | 鄧大為 |
| 地址: | 100095 北京*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 邊界 保護 消息 通信 方法 裝置 | ||
1.一種基于邊界保護的消息通信方法,其特征在于,所述方法包括:
初始化步驟,啟動有邊界虛擬消息設備,通過所述有邊界虛擬消息設備在系統堆中申請一環形緩沖區;
寫入步驟,第一進程將第一消息數據寫入所述環形緩沖區,寫入成功后所述有邊界虛擬消息設備釋放讀信號量;
讀出步驟,第二進程獲取到讀信號量后從所述環形緩沖區讀出所述第一消息數據;
其中,所述第一消息數據的頭文件記錄所述第一消息數據的數據長度,當所述數據長度超出緩沖區范圍時,所述有邊界虛擬消息設備將讀指針或寫指針重新指向環形緩沖區的首地址;
其中,所述寫入步驟與所述讀出步驟通過所述有邊界虛擬消息設備進行讀寫同步,包括:當所述第一進程向所述環形緩沖區寫入數據時,判斷所述環形緩沖區是否初始化成功,如果是,繼續判斷所述環形緩沖區的大小是否大于或等于所述第一消息數據的長度得到第一判斷結果,如果所述第一判斷結果為是,所述第一進程將所述第一消息數據寫入所述環形緩沖區,寫入成功后所述有邊界虛擬消息設備向所述第二進程釋放讀信號量,如果所述第一判斷結果為否,所述有邊界虛擬消息設備釋放阻塞信號量,以阻止向所述環形緩沖區寫入數據;所述第二進程獲得所述讀信號量后開始從所述環形緩沖區讀出所述第一消息數據,在讀出所述第一消息數據完成后,判斷所述環形緩沖區中是否還有消息數據得到第二判斷結果,如果所述第二判斷結果為否,所述有邊界虛擬消息設備釋放阻塞信號量,以阻止從所述環形緩沖區讀出數據,如果所述第二判斷結果為是,所述有邊界虛擬消息設備釋放讀出信號量,使得其他進程進行消息數據的讀出,然后判斷所述環形緩沖區是否還有空間剩余得到第三判斷結果,如果所述第三判斷結果為是,所述有邊界虛擬消息設備釋放寫信號量,如果所述第三判斷結果為否,所述有邊界虛擬消息設備釋放阻塞信號量,以阻止向所述環形緩沖區寫入數據;
在所述第一判斷結果為否時,所述有邊界虛擬消息設備將所述第一消息數據拆分為N條第一消息子數據后寫入所述環形緩沖區,, 表示向上取整,M為所述第一消息數據的長度,K為所述環形緩沖區的大小,所述第一消息數據的長度等于所述頭文件的長度與所述數據長度之和;
所述有邊界虛擬消息設備具有進程讀寫的多路復用機制模式, 當第三進程處于所述多路復用機制模式時,所述第三進程調用所述有邊界虛擬消息設備的文件狀態監測進程,所述文件狀態監測進程判斷所述環形緩沖區是否處于讀阻塞狀態得到第四判斷結果,如果所述第四判斷結果為是,判斷所述環形緩沖區是否有消息數據,如果是,則喚醒讀阻塞以阻塞其他進程對所述環形緩沖區的讀操作,所述第三進程從所述環形緩沖區中讀出消息數據;如果所述第四判斷結果為否,則判斷所述環形緩沖區是否處于寫阻塞狀態,如果是,則判斷所述環形緩沖區是否還有空間剩余,如果是,則喚醒寫阻塞以阻塞其他進程對所述環形緩沖區的寫操作,所述第三進程將消息數據寫入所述環形緩沖區;
所述有邊界虛擬消息設備設置對所述環形緩沖區設置操作權限,其他進程欲使用該設備時,若權限不足則無法打開使用。
2.根據權利要求1所述的方法,其特征在于,所述有邊界虛擬消息設備設定一次原子操作的最大數據長度,當判斷所述環形緩沖區的剩余空間大小小于一次原子操作的最大數據長度時,所述有邊界虛擬消息設備發出阻塞信號量,阻塞寫操作。
3.根據權利要求2任一項所述的方法,其特征在于,所述有邊界虛擬消息設備申請的所述環形緩沖區支持L個進程同時使用,以實現L個進程之間的消息通信,所述L≥2。
4.根據權利要求3所述的方法,其特征在于,所述有邊界虛擬消息設備設置讀阻塞閾值和寫阻塞時間閾值,當所述有邊界虛擬消息設備判斷讀出消息數據的進程阻塞時間達到讀阻塞閾值時,退出所述讀出消息數據的進程;所述有邊界虛擬消息設備判斷寫入消息數據的進程阻塞時間達到寫阻塞閾值時,退出所述寫入消息數據的進程。
5.一種基于邊界保護的消息通信裝置,其特征在于,所述裝置包括:
初始化單元,用于啟動有邊界虛擬消息設備,通過所述有邊界虛擬消息設備在系統堆中申請一環形緩沖區;
寫入單元,用于使第一進程將第一消息數據寫入所述環形緩沖區,寫入成功后所述有邊界虛擬消息設備釋放讀信號量;
讀出單元,用于使第二進程獲取到讀信號量后從所述環形緩沖區讀出所述第一消息數據;
其中,所述第一消息數據的頭文件記錄所述第一消息數據的數據長度,當所述數據長度超出緩沖區范圍時,所述有邊界虛擬消息設備將讀指針或寫指針重新指向環形緩沖區的首地址;
其中,所述寫入單元與所述讀出單元通過所述有邊界虛擬消息設備進行讀寫同步,包括:當所述第一進程向所述環形緩沖區寫入數據時,判斷所述環形緩沖區是否初始化成功,如果是,繼續判斷所述環形緩沖區的大小是否大于或等于所述第一消息數據的長度得到第一判斷結果,如果所述第一判斷結果為是,所述第一進程將所述第一消息數據寫入所述環形緩沖區,寫入成功后所述有邊界虛擬消息設備向所述第二進程釋放讀信號量,如果所述第一判斷結果為否,所述有邊界虛擬消息設備釋放阻塞信號量,以阻止向所述環形緩沖區寫入數據;所述第二進程獲得所述讀信號量后開始從所述環形緩沖區讀出所述第一消息數據,在讀出所述第一消息數據完成后,判斷所述環形緩沖區中是否還有消息數據得到第二判斷結果,如果所述第二判斷結果為否,所述有邊界虛擬消息設備釋放阻塞信號量,以阻止從所述環形緩沖區讀出數據,如果所述第二判斷結果為是,所述有邊界虛擬消息設備釋放讀出信號量,使得其他進程進行消息數據的讀出,然后判斷所述環形緩沖區是否還有空間剩余得到第三判斷結果,如果所述第三判斷結果為是,所述有邊界虛擬消息設備釋放寫信號量,如果所述第三判斷結果為否,所述有邊界虛擬消息設備釋放阻塞信號量,以阻止向所述環形緩沖區寫入數據;
在所述第一判斷結果為否時,所述有邊界虛擬消息設備將所述第一消息數據拆分為N條第一消息子數據后寫入所述環形緩沖區,, 表示向上取整,M為所述第一消息數據的長度,K為所述環形緩沖區的大小,所述第一消息數據的長度等于所述頭文件的長度與所述數據長度之和;
所述有邊界虛擬消息設備具有進程讀寫的多路復用機制模式,當第三進程處于所述多路復用機制模式時,所述第三進程調用所述有邊界虛擬消息設備的文件狀態監測進程,所述文件狀態監測進程判斷所述環形緩沖區是否處于讀阻塞狀態得到第四判斷結果,如果所述第四判斷結果為是,判斷所述環形緩沖區是否有消息數據,如果是,則喚醒讀阻塞以阻塞其他進程對所述環形緩沖區的讀操作,所述第三進程從所述環形緩沖區中讀出消息數據;如果所述第四判斷結果為否,則判斷所述環形緩沖區是否處于寫阻塞狀態,如果是,則判斷所述環形緩沖區是否還有空間剩余,如果是,則喚醒寫阻塞以阻塞其他進程對所述環形緩沖區的寫操作,所述第三進程將消息數據寫入所述環形緩沖區;
所述有邊界虛擬消息設備設置對所述環形緩沖區設置操作權限,其他進程欲使用該設備時,若權限不足則無法打開使用。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京翼輝信息技術有限公司,未經北京翼輝信息技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010570711.8/1.html,轉載請聲明來源鉆瓜專利網。





