定義作用
進程間通信( IPC, Inter-Process Communication),指至少兩個進程或執行緒間傳送數據或信號的一些技術或方法。進程是計算機系統分配資源的最小單位(嚴格說來是執行緒)。每個進程都有自己的一部分獨立的系統資源,彼此是隔離的。為了能使不同的進程互相訪問資源並進行協調工作,才有了進程間通信。舉一個典型的例子,使用進程間通信的兩個套用可以被分類為客戶端和伺服器,客戶端進程請求數據,服務端回復客戶端的數據請求。有一些套用本身既是伺服器又是客戶端,這在分散式計算中,時常可以見到。這些進程可以運行在同一計算機上或網路連線的不同計算機上。
進程間通信技術包括訊息傳遞、同步、共享記憶體和遠程過程調用。IPC是一種標準的Unix通信機制。
使用IPC 的理由:
•信息共享:Web伺服器,通過網頁瀏覽器使用進程間通信來共享web檔案(網頁等)和多媒體;
•加速:維基百科使用通過進程間通信進行交流的多伺服器來滿足用戶的請求;
•模組化;
•私有權分離。
與直接共享記憶體地址空間的多執行緒編程相比,IPC的缺點:
•採用了某種形式的核心開銷,降低了性能;
•幾乎大部分IPC都不是程式設計的自然擴展,往往會大大地增加程式的複雜度。
主要方法
方法 | 提供方(作業系統或其他環境) |
檔案 | 多數作業系統 |
信號 | 多數作業系統 |
Berkeley套接字 | 多數作業系統 |
訊息佇列 | 多數作業系統 |
管道 | 所有的POSIX系統,Windows |
命名管道 | 所有的POSIX系統,Windows |
信號量 | 所有的POSIX系統,Windows |
共享記憶體 | 所有的POSIX系統,Windows |
Message Passing | 用於MPI規範,Java RMI,CORBA,MSMQ,MailSlot以及其他 |
Memory-Mapped File | 所有的POSIX系統,Windows |