作業系統 程序間的通訊方式

2021-06-25 20:57:31 字數 1414 閱讀 8542

程序間的通訊方式:

1.管道(pipe)及有名管道(named pipe):

管道可用於具有親緣關係程序間的通訊,有名管道除了具有管道所具有的功能外,它還允許無親緣關係程序間的通訊。 

2.訊號(signal):

訊號是在軟體層次上對中斷機制的一種模擬,它是比較複雜的通訊方式,用於通知程序有某事件發生,乙個程序收到乙個訊號與處理器收到乙個中斷請求效果上可以說是一致得。

3.訊息佇列(message queue):

訊息佇列是訊息的鏈結表,它克服了上兩種通訊方式中訊號量有限的缺點,具有寫許可權得程序可以按照一定得規則向訊息佇列中新增新資訊;對訊息佇列有讀許可權得程序則可以從訊息佇列中讀取資訊。       

訊息緩衝通訊技術是由hansen首先提出的,其基本思想是:根據」生產者-消費者」原理,利用記憶體中公用訊息緩衝區實現程序之間的資訊交換.  

記憶體中開闢了若干訊息緩衝區,用以存放訊息.每當乙個程序向另乙個程序傳送訊息時,便申請乙個訊息緩衝區,並把已準備好的訊息送到緩衝區,然後把該訊息緩衝區插入到接收程序的訊息佇列中,最後通知接收程序.接收程序收到傳送里程發來的通知後,從本程序的訊息佇列中摘下一訊息緩衝區,取出所需的資訊,然後把訊息緩衝區不定期給系統.系統負責管理公用訊息緩衝區以及訊息的傳遞.  

乙個程序可以給若干個程序傳送訊息,反之,乙個程序可以接收不同程序發來的訊息.顯然,程序中關於訊息佇列的操作是臨界區.當傳送程序正往接收程序的訊息佇列中新增一條訊息時,接收程序不能同時從該訊息佇列中到出訊息:反之也一樣.  

訊息緩衝區通訊機制包含以下列內容:  

(1) 訊息緩衝區,這是乙個由以下幾項組成的資料結構:  

1、       訊息長度  

2、       訊息正文  

3、       傳送者  

4、       訊息佇列指標  

(2)訊息佇列首指標m-q,一般儲存在pcb中。  

(1)   互斥訊號量m-mutex,初值為1,用於互斥訪問訊息佇列,在pcb中設定。  

(2)   同步訊號量m-syn,初值為0,用於訊息計數,在pcb中設定。  

(3)   傳送訊息原語send  

(4)   接收訊息原語receive(a)  

4.共享記憶體(shared memory):

可以說這是最有用的程序間通訊方式。它使得多個程序可以訪問同一塊記憶體空間,不同程序可以及時看到對方程序中對共享記憶體中資料得更新。這種方式需要依靠某種同步操作,如互斥鎖和訊號量等。

這種通訊模式需要解決兩個問題:第乙個問題是怎樣提供共享記憶體;第二個是公共記憶體的互斥關係則是程式開發人員的責任。   

5.訊號量(semaphore):

主要作為程序之間及同一種程序的不同執行緒之間得同步和互斥手段。

6.套接字(socket);

這是一種更為一般得程序間通訊機制,它可用於網路中不同機器之間的程序間通訊,應用非常廣泛。

作業系統程序間通訊的方式

程序間的四種通訊方式 1 管道,fifo 管道 pipe 是一種具有兩個端點的通訊通道 有一端控制代碼的程序可以和有另一 端控制代碼的程序通訊。管道可以是單向 一端是唯讀的,另一端點是只寫的 也可以 是雙向的一管道的兩端點既可讀也可寫。匿名管道 anonymous pipe 是 在父程序和子程序之間...

作業系統 程序間通訊

程序間通訊涉及到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...