一、順序程式與併發程式特徵
順序程式特徵順序性
封閉性:(執行環境的封閉性)
確定性可再現性
併發程式特徵共享性
併發性隨機性
二、程序互斥
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.訊息傳遞 管道 ...