進程間通信概述

很多重要的程序都涉及到進程間通信(Interprocess Communication,IPC)的原因:把應用程序設計爲一組相互通信的小片段比將其設計爲單個龐大的程序更好。

從歷史角度看,應用程序有如下幾種構建方法。

(1)使用一個龐大的程序完成全部工作。程序的各部分可以實現爲函數,函數之間通過參數、返回值和全局變量來交換信息。

(2)使用多個程序,程序之間用某種形式的IPC進行通信。許多標準的Unix工具都是按照這樣的風格設計的,它們使用shell管道(IPC 的一種形式)在程序之間傳遞信息。

(3)使用一個包含多個線程的程序,線程之間使用某種IPC。這裏仍然使用術語IPC ,儘管通信是在線程之間而不是在進程之間進行的。

(4)將(2)和(3)綜合起來:用多個進程來實現,其中每個進程包含幾個線程;在這中情況下,進程內部的線程之間可以通信,不同的進程之間也可以通信。

總上所述,,可以把完成給定任務所需的工作分到多個進程中,或許還可以進一步分到進程內的多個線程中。在包含多個處理器(CPU)的系統中,多個進程也許可以(在不同的CPU上)同時運行,或許給定的進程內的多個線程也能同時運行。因此可以把多個任務分到多個進程或線程中來減少完成任務的指定時間。

四種不同的IPC 形式:

(1)消息傳遞(管道、FIFO和消息隊列)

(2)同步(互斥量、條件變量、讀寫鎖、文件和記錄鎖、信號量)

(3)共享內存(匿名的和具名的)

(4)遠程過程調用(Solaris門和Sun RPC)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章