程序通訊是指程序之間的資訊交換。pv操作是低階通訊方式,高階通訊方式是指以較高的效率傳輸大量資料的通訊方式。高階通訊方法主要有以下三個類。
在通訊的程序之間存在一塊可直接訪問的共享空間,通過對這片共享空間進行寫/讀操作實現程序之間的資訊交換。在對共享空間進行寫/讀操作時,需要使用同步互斥工具(如p操作、v操作),對共享空間的寫/讀進行控制。共享儲存又分為兩種:低階方式的共享是基於資料結構的共享;高階方式則是基於儲存區的共享。作業系統只負責為通訊程序提供可共享使用的儲存空間和同步互斥工具,而資料交換則由使用者自己安排讀/寫指令完成。
需要注意的是,使用者程序空間一般都是獨立的,要想讓兩個使用者程序共享空間必須通過特殊的系統呼叫實現,而程序內的執行緒是自然共享程序空間的。
在訊息傳遞系統中,程序間的資料交換是以格式化的訊息(message)為單位的。若通訊的程序之間不存在可直接訪問的共享空間,則必須利用作業系統提供的訊息傳遞方法實現程序通訊。程序通過系統提供的傳送訊息和接收訊息兩個原語進行資料交換。
1) 直接通訊方式:傳送程序直接把訊息傳送給接收程序,並將它掛在接收程序的訊息緩衝佇列上,接收程序從訊息緩衝佇列中取得訊息。
2) 間接通訊方式:傳送程序把訊息傳送到某個中間實體中,接收程序從中間實體中取得訊息。這種中間實體一般稱為信箱,這種通訊方式又稱為信箱通訊方式。該通訊方式廣泛應用於計算機網路中,相應的通訊系統稱為電子郵件系統。
管道通訊是訊息傳遞的一種特殊方式。所謂「管道」,是指用於連線乙個讀程序和乙個寫程序以實現它們之間通訊的乙個共享檔案,又名pipe檔案。向管道(共享檔案)提供輸入的傳送程序(即寫程序),以字元流形式將大量的資料送入(寫)管道;而接收管道輸出的接收程序(即讀程序),則從管道中接收(讀)資料。為了協調雙方的通訊,管道機制必須提供以下三方面的協調能力:互斥、同步和確定對方的存在。
程序間通訊 共享儲存
一 什麼是共享儲存 共享儲存允許兩個或更多程序共享一給定的儲存區。因為資料不需要在程序a和程序b之間複製,所以共享儲存是最快的一種ipc。那麼使用共享儲存需要注意的問題是什麼呢?因為是多個程序訪問乙個共同的儲存區,所以需要注意的問題就是多個程序如何實現對同一儲存區實現同步訪問。若程序a正在將資料放入...
linux程序間通訊之訊息傳遞
linux 程序間通訊中訊息傳遞主要分為管道,fifo,訊息佇列 1 管道 管道由pipe函式建立,提供乙個單路 單向 資料流。pipe函式返回兩個檔案描述符 fd 0 和fd 1 前者開啟來讀,後者開啟來寫。管道沒有名字,所以只能由有親緣關係的程序使用。儘管管道是由單個程序建立的,它卻很少在單個程...
15 9 程序間通訊 共享儲存
因為資料不需要在客戶程序和伺服器程序之間複製,所以共享儲存是最快的一種ipc。使用共享儲存時要掌握的唯一竅門是多個程序之間對一給定儲存區的同步訪問。通常,訊號量或記錄鎖被用來實現對共享儲存訪問的同步。返回值 若成功則返回指向共享儲存的指標,若出錯則返回 1 shmget獲得乙個共享儲存識別符號。si...