2 6程序通訊

2021-08-29 04:11:56 字數 1801 閱讀 7581

程序通訊指程序之間的資訊交換。

高階通訊機制可歸結為四大類:

1.共享儲存器系統(shared-memory system)(操作儲存區方式)

(1).相互通訊的程序共享某些資料結構或共享儲存區,程序之間能夠通過這些空間進行通訊。

(2).型別:

①基於共享資料結構的通訊方式(低階)

諸程序公用某些資料結構,藉以實現諸程序之間的資訊交換

作業系統:僅提供共享儲存器。

程式設計師:負責對公用資料結構的設定及對程序間同步的處理。

特點:複雜、低效率,還只適合傳遞相對少量的資料。

②基於共享儲存區的通訊方式(高階)

在儲存器中劃出了一塊共享儲存區,諸程序可通過對共享儲存區中資料的讀或寫來實現通訊。

程序通訊前先向系統申請獲得共享儲存區中的乙個分割槽,並指定該分割槽的關鍵字。

若系統已經分給了其他程序,則將該分割槽的描述符返回給申請者,申請者把獲得的共享儲存分割槽連線到本程序上;此後,便可像讀、寫普通儲存器一樣地讀、寫該公用儲存分割槽。多程序借助該區通訊。

2.管道(pipe)通訊系統(中間檔案方式)

(1).管道:指用於連線一讀程序和一寫程序以實現通訊的乙個共享檔案,又名pipe檔案。

(2).向共享檔案輸入的寫程序以字元流形式將大量的資料送入管道;而接收管道輸出的讀程序則從管道中接收(讀)資料。

(3).首創於unix系統。其管道機制需提供三方面的協調能力:互斥、同步、確定對方是否存在。

2.訊息傳遞系統(message passing system)(發-收方式)

(1).最廣泛使用的一種,程序間的資料交換,以格式化的訊息為單位。遮蔽底層複雜操作。

(2).單機:作業系統底層程式設計中的訊息傳遞系統呼叫。

(3).計算機網路:訊息稱為報文。程式設計師直接利用系統提供的一組通訊命令(原語)進行通訊。

(4).實現方式:

①直接通訊方式:

傳送程序利用os所提供的傳送命令(原語),直接把訊息傳送給目標程序。此時,傳送程序和接收程序都以顯式方式提供對方的識別符號。通常利用系統通訊命令(原語):

send(receiver, message);

receive(sender, message);

②間接通訊方式:

基於共享資料結構的實體用來暫存傳送給目標程序的訊息;接收程序則從該實體中,取出對方傳送給自己的訊息。通常把這種實體稱為信箱。

訊息在信箱中可以安全地儲存,只允許核准的目標使用者隨時讀取。既可實時通訊,又可非實時通訊。

系統為信箱通訊提供原語:

1)信箱的建立和撤消

信箱名許可權屬性

私用信箱

只有擁有者有權讀傳送到信箱中的內容,可用單向鏈路實現。擁有者程序結束,信箱消失。

公用信箱

os建立,雙向鏈路,系統執行期間核准程序都可進行讀寫。

共享信箱

某程序建立,可指明被誰共享。擁有者和共享者均可讀信箱中發給自己的訊息。

2)信箱訊息的傳送和接收

程序之間利用信箱進行通訊時,必須使用共享信箱。

send(mailbox, message);

receive(mailbox, message);

1.客戶機-伺服器系統(client-server system)

實現方式:

(1)套接字:乙個套接字就是乙個通訊標識型別的資料結構,包含了通訊目的的位址,埠號,傳輸層協議、程序所在的網路位址,以及針對c\s程式提供的不同系統呼叫(api函式)等。

系統中所有的連線都持有唯一的一對套接字及埠連線,從而方便地區分來自不同應用程式程序或網路連線的通訊,確保通訊雙方間邏輯鏈路的唯一性。

(2)遠端過程呼叫和遠端方法呼叫

2 6 程序通訊

1.程序通訊是指程序之間的資訊交換。2.程序通訊低階的原因 1 效率低 2 通訊對使用者不透明 3.高階通訊機制四大類 共享儲存器系統 共享資料結構和共享儲存區 管道通訊系統 指用於連線乙個讀程序和乙個寫程序以實現他們之間通訊的乙個開啟的共享檔案,又名pipe檔案。訊息傳遞系統 直接通訊方式 間接通...

程序通訊 程序管道

程序間通訊的幾種常用方式 管道 命名管道 訊號 訊號量 共享記憶體 訊息佇列 套接字。管道 pipe 一種半雙工的通訊方式,資料只能單向流動且只能在具有共同祖先的程序間使用。命名管道 name pipe 也是一種半雙工的通訊方式,但他允許不相關程序間的通訊。訊號 sinal 乙個程序通過訊號通知其他...

程序與程序通訊

程序是可執行的程式的例項,包含兩部分,一部分是作業系統用來管理程序的核心物件,一部分是建立時系統分配的資源,主要是記憶體位址空間。2 程序通訊方法 在乙個程序內建立記憶體對映,卻能夠在其他都個程序中使用。這些程序共享的是物理儲存器的同乙個頁面,在把這些物理記憶體對映到虛擬記憶體時各個程序的虛擬位址並...