訊息傳遞通訊的實現方式

2021-10-09 05:13:11 字數 2098 閱讀 5377

直接訊息傳遞系統 —— 利用os所提供的傳送命令(原語)

直接通訊原語

1)對稱定址方式 —— 要求傳送程序和接收程序都必須以顯式方式提供對方的識別符號。

系統提供以下兩條通訊命令:

send(receiver,message);

receive(sender,message);

不足:一旦改變程序的名稱,則可能需要檢查所有其他程序的定義,有關對該程序舊名稱的所有引用都必須查詢到,以便將其修改為新名稱,顯然,這樣的方式不利於實現程序定義的模組化。

2)非對稱定址方式 —— 接收程序可能需要與多個傳送程序通訊,無法事先指定傳送程序。因此,在接受程序的原語中,不需要命名傳送程序,只填寫表示源程序的引數,即完成通訊後的返回值,而傳送程序仍需要命名接收程序。

send(receiver,message);

receive(id,message); 接收來自任何程序的訊息,id變數可設定為進行通訊的傳送方程序id或名字。

訊息格式

比較短的定長訊息格式 —— 減少對訊息的處理和儲存開銷

變長的訊息格式 —— 處理、儲存方面付出更多的開銷,方便使用者

程序的同步方式

在完成訊息的傳送或接收後,存在三種情況:

1)傳送程序阻塞,接收程序阻塞 —— 這種情況主要用於程序之間緊密同步,傳送程序和接收程序之間無緩衝時。

2)傳送程序不阻塞,接收程序阻塞 —— 傳送程序不阻塞,因而它可以盡快地把乙個或多個訊息傳送給多個目標;而接收程序平時處於阻塞狀態,直到傳送程序發來訊息時才被喚醒

3)傳送程序不阻塞,接收程序不阻塞 —— 傳送程序和接收程序都在忙於自己的事情,僅當發生某事件使它無法繼續執行時,才把自己阻塞起來等待

通訊鏈路

通訊雙方建立鏈路,兩種方式:

1)由傳送程序在通訊之前用顯式的「建立連線」命令(原語)請求系統為之建立一條通訊鏈路,在鏈路使用完成後拆除鏈路 —— 主要用於計算機網路

2)傳送程序無須明確提出建立鏈路的請求,只須利用系統提供的傳送命令(原語),系統會自動地為之建立一條鏈路 —— 主要用於單機系統中

根據通訊方式的不同,把鏈路分成兩種:

1)單向通訊鏈路

2)雙向通訊鏈路

間接通訊方式 —— 信箱通訊

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

信箱的結構 —— 一種資料結構,兩個部分

1)信箱頭,用以存放有關信箱的描述資訊 —— 信箱識別符號、信箱的擁有者、信箱口令、信箱的空格數等

2)信箱體 —— 由若干個可以存放訊息的信箱格組成,信箱格的數目以及每格的大小是在建立信箱時確定的

信箱通訊原語

1)郵箱的建立和撤銷

程序可利用郵箱建立原語來建立乙個新郵箱,建立者程序應給出郵箱名字、郵箱屬性(公用、私用或共享);對於共享郵箱,還應給出共享者的名字,當程序不再需要讀郵箱時,可用郵箱撤銷原語將之撤銷。

2)訊息的傳送和接收。當程序之間要利用郵箱進行通訊時,必須使用共享郵箱,並利用系統提供的通訊原語進行通訊。

send(mailbox,message);

receive(mailbox,message);

信箱的型別

1)私用郵箱。使用者程序可為自己建立乙個新郵箱,並作為該程序的一部分。郵箱的擁有者有權從郵箱中讀取訊息,其他使用者則只能將自己構成的訊息傳送到該郵箱中,可採用單向通訊鏈路的郵箱來實現。當擁有該郵箱的程序結束時,郵箱也隨之消失。

2)公用郵箱。由作業系統建立,並提供給系統種的所有核准程序使用。核准使用者既可把訊息發到該郵箱,也可從郵箱讀取給自己的訊息,應採用雙向通訊鏈路的郵箱來實現。在系統執行期間始終存在。

3)共享郵箱。由某程序建立,在建立時或建立後指明它是可共享的,同時須指出共享程序的名字。郵箱的擁有者和共享者都有權從郵箱中取走傳送給自己的訊息。

傳送程序和接收程序存在以下四種關係:

1)一對一

2)多對一

3)一對多

4)多對多

C OSIII 任務通訊(訊息傳遞)

使用情況 乙個任務或者中斷服務程式與另乙個任務交流資訊 使用方法 訊息佇列服務函式的實現 在os q.c檔案中,在編譯時,將os cfg.h檔案中的配置常數os cfg q en設為1就可啟用這些服務函式。常用訊息佇列的服務函式有 void osqcreate os q p q,指向訊息佇列控制塊的...

分布式通訊方式 分布式訊息傳遞

談到系統間的協作,目前常用兩種方式 1 基於http協議 通過客戶端發起的get post請求,服務端接收request請求,處理請求,得到響應內容,通過網路傳送到客戶端,由瀏覽器解析出乙個視覺化的頁面。這種互動最大的優勢是實時性,通過http請求連線各個子系統,從而跨伺服器來完成乙個完整的業務流程...

程序的通訊 共享儲存 訊息傳遞和管道通訊

程序通訊是指程序之間的資訊交換。pv操作是低階通訊方式,高階通訊方式是指以較高的效率傳輸大量資料的通訊方式。高階通訊方法主要有以下三個類。在通訊的程序之間存在一塊可直接訪問的共享空間,通過對這片共享空間進行寫 讀操作實現程序之間的資訊交換。在對共享空間進行寫 讀操作時,需要使用同步互斥工具 如p操作...