程序間通訊方式總結(2)

2021-10-08 15:53:01 字數 1166 閱讀 7362

管道,訊息佇列,共享記憶體,訊號量,socket,訊號,檔案鎖

匿名管道:

命名管道:

概念:在核心中申請一塊固定大小的緩衝區,程式擁有寫入和讀取的權利,沒有血緣關係的程序也可以程序間通訊。

**特點:

1,面向位元組流,

2,生命週期隨核心

3,自帶同步互斥機制。

4,半雙工,單向通訊,兩個管道實現雙向通訊。

概念:在核心中建立一佇列,佇列中每個元素是乙個資料報,不同的程序可以通過控制代碼去訪問這個佇列。

訊息佇列提供了⼀個從⼀個程序向另外⼀個程序傳送⼀塊資料的⽅法。

每個資料塊都被認為是有⼀個型別,接收者程序接收的資料塊可以有不同的型別值

訊息佇列也有管道⼀樣的不⾜,就是每個訊息的最⼤⻓度是有上限的(msgmax),每個訊息隊 列的總的位元組數是有上限的(msgmnb),系統上訊息佇列的總數也有⼀個上限(msgmni)

特點:

訊息佇列可以認為是乙個全域性的乙個鍊錶,鍊錶節點鐘存放著資料報的型別和內容,有訊息佇列的識別符號進行標記。

訊息佇列允許乙個或多個程序寫入或者讀取訊息。

訊息佇列的生命週期隨核心。

訊息佇列可實現雙向通訊。

概念:在核心中建立乙個訊號量集合(本質是個陣列),陣列的元素(訊號量)都是1,使用p操作進行-1,使用v操作+1,

(1) p(sv):如果sv的值⼤大於零,就給它減1;如果它的值為零,就掛起該程序的執⾏ 。

(2) v(sv):如果有其他程序因等待sv而被掛起,就讓它恢復運⾏,如果沒有程序因等待sv⽽掛起,就給它加1。

pv操作用於同一程序,實現互斥。

pv操作用於不同程序,實現同步。

功能:

對臨界資源進行保護。

概念:將同一塊物理記憶體一塊對映到不同的程序的虛擬位址空間中,實現不同程序間對同一資源的共享。

共享記憶體可以說是最有用的程序間通訊方式,也是最快的ipc形式。

特點:

不用從使用者態到核心態的頻繁切換和拷貝資料,直接從記憶體中讀取就可以。

共享記憶體是臨界資源,所以需要操作時必須要保證原子性。使用訊號量或者互斥鎖都可以。

生命週期隨核心。

所有的以上的方式都是生命週期隨核心,不手動釋就不會消失。

程序間通訊方式(2)

q 訊息佇列實質及運用?a 訊息佇列就是乙個訊息的鍊錶,把訊息看作有特定格式和優先順序的記錄,該記錄包括訊息佇列鍵值,使用者 id,組 id,訊息佇列中訊息數目等,甚至可以包括對訊息佇列讀寫程序的 id。對於訊息有相應許可權的程序可以對訊息程序進行相應寫入和讀取操作 訊息佇列是隨著核心持續的。對於訊...

程序間通訊方式總結

一 linux系統程序間通訊的方式 二 windows程序間通訊的各種方法 程序是裝入記憶體並準備執行的程式,每個程序都有私有的虛擬位址空間,由 資料以及它可利用的系統資源 如檔案 管道等 組成。多程序 多執行緒是windows作業系統的乙個基本特徵。microsoft win32 api 提供了大...

程序間通訊方式總結

而對unix發展做出重大貢獻的兩大主力at t的貝爾實驗室及bsd 加州大學伯克利分校的伯克利軟體發布中心 在程序間通訊方面的側重點有所不同。前者對unix早期的程序間通訊手段進行了系統的改進和擴充,形成了 system v ipc 通訊程序侷限在單個計算機內 後者則跳過了該限制,形成了基於套介面 ...