[發明專利]一種基于LINUX平臺下用戶層的IPC通信方法在審
| 申請號: | 202011272377.4 | 申請日: | 2020-11-13 |
| 公開(公告)號: | CN112328412A | 公開(公告)日: | 2021-02-05 |
| 發明(設計)人: | 金鑫;許剛;譚左紅;肖樂康;楊奇錕;王地偉;張明星;樊勇;萬小博;熊夢南;何洋 | 申請(專利權)人: | 重慶航天工業有限公司 |
| 主分類號: | G06F9/54 | 分類號: | G06F9/54 |
| 代理公司: | 重慶市前沿專利事務所(普通合伙) 50211 | 代理人: | 郭云 |
| 地址: | 400039 *** | 國省代碼: | 重慶;50 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 linux 平臺 用戶 ipc 通信 方法 | ||
本發明公開一種基于LINUX平臺下用戶層的IPC通信方法,包括S1:初始化LINUX系統中的線程通信信號并存放在結構體中;S2:發送線程獲取接收線程的句柄,將待發送的信息插入到接收線程內部的數據信息鏈表中,當全部插入完畢后,使發送線程處于休眠狀態,直到讀線程喚醒;S3:接收線程判斷是否有新的信息,若有則喚醒讀線程讀取接收線程句柄的數據信息鏈表的數據;若沒有則進入休眠狀態。本發明實現用戶層多進程實時通信,避免了用戶層到內核層、內核層到用戶層之間的數據拷貝,而且又包含了內核中的消息隊列的功能,尤其針對C/S架構中多個客戶端對一個服務端進行通信,降低了CPU的使用率,提高了整個系統的通信效率。
技術領域
本發明涉及通信控制技術領域,特別涉及一種基于LINUX平臺下用戶層的IPC通信方法。
背景技術
隨著通信技術的發展,對于多用戶、多任務的操作系統,進程間的通信(IPC,Inter-Process Communication)是整個系統得以有條不紊運作的基礎。Linux中雖然集成了無名管道(PIPE)、有名管道通信(FIFO)、內存映射、消息隊列、共享內存、信號量等多種通訊機制,但是每一種通信機制都有它的一定局限性。
例如無名管道是一種半雙工的通信方式,實現簡單,但數據只能單向流動,而且只能在具有親緣關系的進程之間通信;有名管道是以一種實現簡單的半雙工通信方式,相比無名管道它可以實現無親緣關系的進程之間通信;消息隊列是一種消息的鏈接表,存放在內核中并由消息隊列標識符標識,該通信機制克服了無名管道和有名管道的缺點,提供了一種類似信箱的作用,發送方不必等待接收方檢查它所收到的消息就可以繼續工作下去,接收方如果沒有收到信息也不需要等待,但消息隊列對每個數據塊都有一個最大長度限制,總數據塊大小也有限制,且不同進程的消息傳遞都是以內核作為中轉媒介,會出現大量的用戶層到內核層、內核層到用戶層之間的數據拷貝,對于進程較多的復雜程序來說,通信顯得性能較差;共享內存是在多個進程之間共享一塊內存空間,實現進程的交互通信和交換信息,但在創建的時候已經規定好固定大小,后期無法調整相應的空間,以及多個進程對該共享存儲訪問時,必須獲得鍵值Key才能訪問該共享內存,沒獲得的進程進入休眠等待,不適合高頻率讀寫操作的進程通信。
發明內容
針對現有技術中Linux系統通信效率較低的問題,本發明提出一種基于LINUX平臺下用戶層的IPC通信方法,采用線程信號量結合數據鏈表的方式,實現用戶層多進程實時通信,避免了用戶層到內核層、內核層到用戶層之間的數據拷貝,而且又包含了內核中的消息隊列的功能,當多個客戶端對一個服務端進行通信時,降低了CPU的使用率,提高了整個系統的效率。
為了實現上述目的,本發明提供以下技術方案:
一種基于LINUX平臺下用戶層的IPC通信方法,具體包括以下步驟:
S1:初始化LINUX系統中的線程通信信號并存放在結構體中;
S2:發送線程獲取接收線程的句柄,將待發送的信息插入到接收線程內部的數據信息鏈表中,當全部插入完畢后,使發送線程處于休眠狀態,直到讀線程喚醒;
S3:接收線程判斷是否有新的信息,若有則喚醒讀線程讀取接收線程內部的數據信息鏈表的數據;若沒有則進入休眠狀態。
優選的,所述S1具體包括:
S1-1:當LINUX系統中線程開始工作時,利用Linux系統函數創建線程互斥、讀線程信號量和寫線程信號量,生成該線程IPC通信的句柄以創建數據信息鏈表;
S1-2:初始化數據信息鏈表的讀寫位置和接收信息計數器,并創建結構體用于保存數據信息,該結構體的地址為線程通信的句柄。
優選的,所述S1-2中,定義變量A標識數據信息鏈表的讀位置,B標識數據信息鏈表的寫位置,C表示接收信息計數器接收的信息數量和接收信息的最大長度。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于重慶航天工業有限公司,未經重慶航天工業有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202011272377.4/2.html,轉載請聲明來源鉆瓜專利網。





