程序間通訊概述

2021-09-07 17:00:53 字數 1526 閱讀 5122

一、順序程式與併發程式特徵

順序程式特徵

順序性

封閉性:(執行環境的封閉性)

確定性可再現性

併發程式特徵

共享性

併發性隨機性

二、程序互斥

1、由於各程序要求共享資源,而且有些資源需要互斥使用,因此各程序間競爭使用這些資源,程序的這種關係為程序的互斥

2、系統中某些資源一次只允許乙個程序使用,稱這樣的資源為臨界資源或互斥資源。

3、在程序中涉及到互斥資源的程式段叫臨界區

舉例如下圖:

假設x = 1; 當a程序已經判斷完畢x>0,此時時間片輪轉到了b,b也判斷x>0,然後執行x--,即x=0,然後過後又輪轉到繼續執行a,此時再執行x-- 就明顯系統邏輯出現了錯誤。

三、程序同步

程序同步指的是多個程序需要相互配合共同完成一項任務。舉例如下圖:

p1和p2程序是互相配合的,只有當p2關門後,p1才能啟動車輛;p1正常執行了,p2開始售票;當p1到站停車後,p2才能開門;

即需要互相等待對方完成某個操作,自身才能繼續執行下去。

四、程序間通訊的目的

1、資料傳輸:乙個程序需要將它的資料傳送給另乙個程序

2、資源共享:多個程序之間共享同樣的資源。

3、通知事件:乙個程序需要向另乙個或一組程序傳送訊息,通知它(它們)發生了某種事件(如程序終止時要通知父程序)。

4、程序控制:有些程序希望完全控制另乙個程序的執行(如debug程序),此時控制程序希望能夠攔截另乙個程序的所有陷入和異常,並能夠及時知道它的狀態改變。

五、程序間通訊的分類

檔案檔案鎖管道(pipe)和命名管道(fifo)

訊號(signal)

訊息佇列

共享記憶體

訊號量互斥量

條件變數

讀寫鎖套接字(socket)

需要注意的是,訊息佇列、共享記憶體和訊號量在system v 和 posix 標準中都有定義,而互斥量、條件變數和讀寫鎖只在posix標準才有定義。

六、程序間共享資訊的三種方式

1、隨程序持續:一直存在直到開啟的最後乙個程序結束。(如pipe和fifo)

2、隨核心持續(kernel persistence):一直存在直到核心自舉或顯式刪除(如system v訊息佇列、共享記憶體、訊號量)

3、隨檔案系統持續:一直存在直到顯式刪除,即使核心自舉還存在。(posix訊息佇列、共享記憶體、訊號量使用檔案系統tmpfs 來實現)

參考:《tcp/ip詳解 卷一》

《unp》

程序間通訊概述

一,為什麼程序間需要通訊?1 資料傳輸 乙個程序需要將它的資料傳送給另乙個程序。2 資源共享 多個程序之間共享同樣的資源。3 通知事件 乙個程序需要向另乙個或一組程序傳送訊息,通知它們發生了某種事件。4 程序控制 有些程序希望完全控制另乙個程序的執行 如debug程序此時控制程序希望能夠攔截另乙個程...

程序間通訊概述

1 資料傳輸 乙個程序需要將它的資料傳送給另乙個程序。2 資源共享 多個程序共享同樣的資源。3 通知事件 乙個程序需要向另乙個或一組程序傳送訊息,通知他們發生了某件事情。4 程序控制 有些程序希望完全控制另乙個程序的執行 如debug程序 此時控制程序希望能夠攔截另乙個程序的所有操作,並能夠及時知道...

程序間通訊 IPC 概述

程序間通訊 ipc 程序通訊,顧名思義,指執行在某個作業系統上不同繼承之間的各種訊息傳遞的方式。程序間通訊主要需要解決三個問題 1.乙個程序如何給另乙個程序傳遞資訊 2.如何確保程序之間不互相干擾 妨礙 3.當程序間出現依賴關係時,該如何處理。目前存在的ipc形式主要有以下四種 1.訊息傳遞 管道 ...