程序間的通訊方式

2021-10-10 04:04:14 字數 1258 閱讀 1135

共享儲存器系統互斥訪問共享空間

基於共享資料結構的通訊方式

要求程序公用某些資料結構,藉以實現程序間的資訊交換。作業系統只提供共享儲存器,由程式設計師負責對公用資料結構的設定及對程序間同步的處理。僅適於傳遞相對少量的資料,通訊效率低下,屬於低階通訊基於共享儲存區的通訊方式

在記憶體中畫出一塊共享儲存區域,程序可通過對該共享區的讀或寫交換資訊,實現通訊,資料的形式和位置甚至訪問控制都是由程序負責,而不是os.這種通訊方式屬於高階通訊。需要通訊的程序先向系統申請獲得共享儲存區中的乙個分割槽,並將其附加到自己的位址空間中,便可對其中的資料進行讀、寫,讀寫完成後,再將其返還給共享儲存區。

管道通訊系統只能單向傳輸,半雙工通訊

管道:用於連線乙個讀程序和乙個寫程序以實現它們之間通訊的乙個共享檔案,又名pipe檔案。

管道機制必須提供下面三個協調能力:

訊息傳遞系統高階通訊方式

不借助任何共享儲存區和資料結構,以格式化的訊息為單位,將通訊的資料封裝在訊息中。利用作業系統提供的通訊命令,在程序間進行訊息的傳遞,完成程序間的資料交換。

直接通訊方式:傳送程序利用os提供的傳送原語,直接將訊息傳送給目標程序

間接通訊方式:傳送和接受程序,都通過共享中間實體的方式進行訊息的傳送和接收,完成程序間的通訊

實現方式

1. 直接通訊原語

send(receiver, message)

receive(sender, message)

傳送程序和接收程序都要顯示提供對方的識別符號。不足之處在於:一旦改變程序的名稱,可能需要檢查所有其它程序的定義,有關對該程序的舊名稱的所有引用都必須查詢到,以便將其修改為新名稱。

send(p, message)

receive(id, message)

在接收程序的原語中,不需要命名傳送程序,只填寫表示源程序的引數,即完成通訊後的返回值,而傳送程序仍需要命名接收程序

2.信箱通訊(間接通訊)

程序之間的通訊需要通過某種中間實體來完成。該實體建立在隨機儲存器的公用緩衝區上,用來暫存傳送程序傳送給目標程序的訊息。通常將中間實體稱為郵箱,每個郵箱都有乙個唯一的識別符號,訊息在郵箱中只允許核准的目標使用者隨時讀取。所以,郵箱通訊既可以實時通訊,又可以非實時通訊。

信箱的結構:

信箱頭:存放識別符號等描述資訊

信箱體:存放訊息

客戶機——伺服器系統

1.套接字

程序間的通訊方式,執行緒間的通訊方式 程序

當時做筆記的時候 忘了在 看到的了,有時間我再研究研究 管道 pipe 管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。有名管道 namedpipe 有名管道也是半雙工的通訊方式,但是它允許無親緣關係程序間的通訊。訊號量 semo...

程序間通訊的方式?執行緒間通訊的方式?

管道 命名管道 訊號量 訊息佇列 訊號及共享記憶體只適用於本地程序間通訊,套接字則可用於遠端通訊,因而一般用於網路程式設計。部分概念解釋 匿名管道是在快取中開闢的輸出和輸入檔案流的空間,只能用於父子關係的程序之間。因為父子程序的輸入和輸出檔案描述符是一致的。命名管道是一種實際存在的fifo檔案,稱作...

程序間通訊方式

謝謝作者 用於程序間通訊 ipc 的四種不同技術 共享記憶體,臨界區,管道,訊息 1.訊息傳遞 管道,fifo,posix和system v訊息佇列 2.同步 互斥鎖,條件變數,讀寫鎖,檔案和記錄鎖,posix和system v訊號燈 3.共享記憶體區 匿名共享記憶體區,有名posix共享記憶體區,...