思考總結Linux系統下程序間通訊

2022-09-16 15:33:18 字數 990 閱讀 3860

常見的程序間通訊:

1. 管道pipe:管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。

2. 命名管道fifo:有名管道也是半雙工的通訊方式,但是它允許無親緣關係程序間的通訊。

4. 訊息佇列messagequeue:訊息佇列是由訊息的鍊錶,存放在核心中並由訊息佇列識別符號標識。訊息佇列克服了訊號傳遞資訊少、管道只能承載無格式位元組流以及緩衝區大小受限等缺點。

5. 共享儲存sharedmemory:共享記憶體就是對映一段能被其他程序所訪問的記憶體,這段共享記憶體由乙個程序建立,但多個程序都可以訪問。共享記憶體是最快的 ipc 方式,它是針對其他程序間通訊方式執行效率低而專門設計的。它往往與其他通訊機制,如訊號量,配合使用,來實現程序間的同步和通訊。

6. 訊號量semaphore:訊號量是乙個計數器,可以用來控制多個程序對共享資源的訪問。它常作為一種鎖機制,防止某程序正在訪問共享資源時,其他程序也訪問該資源。因此,主要作為程序間以及同一程序內不同執行緒之間的同步手段。

7. 套接字socket:套解口也是一種程序間通訊機制,與其他通訊機制不同的是,它可用於不同及其間的程序通訊。

8. 訊號 ( sinal ) : 訊號是一種比較複雜的通訊方式,用於通知接收程序某個事件已經發生。

公司軟體平台中,先按模組編譯(也就是程序,易於維護),再用指令碼拷貝到相應模組中(有的特殊改動需要手動拷貝),主要是靜態鏈結庫、動態鏈結庫等;

而整個平台框架主要模組就是cmc(control memory center??可能是這個意思)和hal(硬體抽象層)等,當然還有其他程序,負責的功能模組不同,我做的無線主要通過hal程序與核心完成互動。

資料在cmc中是通過資料模型的節點進行訪問的,系統啟動時會自動讀取資料進行配置,呼叫hal的介面函式,將整個資料結構(結構體)傳給hal程序,hal程序首先會merge資料,然後將對應資料通過命令方式呼叫系統函式傳給核心,有驅動程式執行。(類似netfilter,傳遞乙個ebtables規則)

待更新。。。

Linux系統下 程序間通訊(訊息佇列)

linux系統下 程序間通訊 訊息佇列 詳解 send.c include include include include include define msgkey 123 訊息的資料結構是以乙個長整型成員變數開始的結構體 struct msgstru void main while 1 刪除訊息...

linux下程序間通訊

linux下程序間通訊的幾種主要手段簡介 管道 pipe 及有名管道 named pipe 管道可用於具有親緣關係程序間的通訊,有名管道克服了管道沒有名字的限制,因此,除具有管道所具有的功能外,它還允許無親緣關係程序間的通訊 訊號 signal 訊號是比較複雜的通訊方式,用於通知接受程序有某種事件發...

Linux下程序間通訊

linux下的程序通訊基本上是從unix平台上的程序通訊繼承來的。而對unix發展做出最大貢獻的倆大主力at t的貝爾實驗室及bsd 加州大學伯克利分校的伯克利軟體發布中心 在程序的通訊方面的側重點有所不同。前者是對unix早期的程序間通訊手段進行了系統的改進和擴充,形成了 system v ipc...