進程通信是指進程之間的信息交換。PV操作是低級通信方式,高級通信方式是指以較高的效率傳輸大量數據的通信方式。高級通信方法主要有以下三個類。
共享存儲
在通信的進程之間存在一塊可直接訪問的共享空間,通過對這片共享空間進行寫/讀操作實現進程之間的信息交換。在對共享空間進行寫/讀操作時,需要使用同步互斥工具(如P操作、V操作),對共享空間的寫/讀進行控制。共享存儲又分為兩種:低級方式的共享是基於數據結構的共享;高級方式則是基於存儲區的共享。操作系統只負責為通信進程提供可共享使用的存儲空間和同步互斥工具,而數據交換則由用戶自己安排讀/寫指令完成。
需要注意的是,用戶進程空間一般都是獨立的,要想讓兩個用戶進程共享空間必須通過特殊的系統調用實現,而進程內的線程是自然共享進程空間的。
消息傳遞
在消息傳遞系統中,進程間的數據交換是以格式化的消息(Message)為單位的。若通信的進程之間不存在可直接訪問的共享空間,則必須利用操作系統提供的消息傳遞方法實現進程通信。進程通過系統提供的發送消息和接收消息兩個原語進行數據交換。
1) 直接通信方式:發送進程直接把消息發送給接收進程,並將它掛在接收進程的消息緩沖隊列上,接收進程從消息緩沖隊列中取得消息。
2) 間接通信方式:發送進程把消息發送到某個中間實體中,接收進程從中間實體中取得消息。這種中間實體一般稱為信箱,這種通信方式又稱為信箱通信方式。該通信方式廣泛應用於計算機網絡中,相應的通信系統稱為電子郵件系統。
管道通信
管道通信是消息傳遞的一種特殊方式。所謂“管道”,是指用於連接一個讀進程和一個寫進程以實現它們之間通信的一個共享文件,又名pipe文件。向管道(共享文件)提供輸入的發送進程(即寫進程),以字符流形式將大量的數據送入(寫)管道;而接收管道輸出的接收進程(即讀進程),則從管道中接收(讀)數據。為了協調雙方的通信,管道機制必須提供以下三方面的協調能力:互斥、同步和確定對方的存在。