作業系統 程序間通訊

2021-08-07 11:44:04 字數 736 閱讀 4041

程序間通訊方式總結(優缺點)

linus下的程序通訊手段基本上是從unix平台上的程序通訊手段繼承而來的。

(1)無名管道通訊 (半雙工通訊,只能在具有親緣關係的程序間使用)

(1)管道:   (2)高階管道通訊 (將另乙個程式當做乙個新的程序在當前程式程序中啟動,則它算是當前程式的子                          程序)

(3)有名管道通訊(半雙工通訊,允許無親緣關係的程序間通訊)

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

(3)訊號: 訊號是比較複雜的通訊方式,用於通知接受程序有某種事件發生,除了用於程序間通訊外,程序還可以傳送訊號給程序本身;

(4)共享記憶體:使得多個程序可以訪問同一塊記憶體空間,是最快的可用ipc形式。是針對其他通訊機制執行效率較低而設計的。往往與其它通訊機制,如訊號量結合使用,來達到程序間的同步及互斥。

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

(6)套介面(socket):更為一般的程序間通訊機制,可用於不同機器之間的程序間通訊。起初是由unix系統的bsd分支開發出來的,但現在一般可以移植到其它類unix系統上:linux和system v的變種都支援套接字。

作業系統 程序間通訊

程序間通訊涉及到3個問題 1.乙個程序如何把資訊傳遞給另乙個程序 2.確保兩個或多個程序之間不會在關鍵活動中出現交叉 3.程序間執行的順序對執行結果的影響。注意 確保程序對臨界區的 互斥 訪問。忙等待的互斥 1.遮蔽中斷 當乙個程序進入臨界區後立即遮蔽所有中斷,時鐘中斷也被遮蔽 這樣cpu就不會進行...

作業系統 程序間通訊

include include include include include include ifndef semun h 條件編譯,即若semun在標頭檔案中沒有被定義,就進行下面的編譯 define semun h union semun endif static int set semval...

現代作業系統 程序間通訊

如何避免競爭條件 1.任何兩個程序不能同時處於其臨界區 2.不應對cpu的速度和數量做任何假設 3.臨界區外執行的程序不得阻塞其他程序 4.不得使程序無限期等待進入臨界區 生產者 消費者問題 兩個程序共享乙個公共的固定大小的緩衝區,其中乙個是生產者,將資訊放入緩衝區,另乙個是消費者,從緩衝區中取出資...