程序間通訊就是在不同程序之間傳播或交換資訊。程序間通訊的目的如下:
①資料傳輸:乙個程序需要將它的資料傳送給另乙個程序,傳送的資料量在乙個位元組到幾兆位元組之間。
②共享資料:多個程序想要操作共享資料,乙個程序對共享資料的修改,別的程序應該立刻看到。
③通知事件:乙個程序需要向另乙個或一組程序傳送訊息,通知它(它們)發生了某種事件(如程序終止時要通知父程序)。
④資源共享:多個程序之間共享同樣的資源。為了作到這一點,需要核心提供鎖和同步機制。
⑤程序控制:有些程序希望完全控制另乙個程序的執行(如debug程序),此時控制程序希望能夠攔截另乙個程序的所有陷入和異常,並能夠及時知道它的狀態改變。
程序間通訊的主要方式有:管道、系統ipc(inter-process communication,程序間通訊)(包括訊息佇列、訊號、訊號量、共享記憶體)、 套接字(socket)。
各種通訊方式的介紹如下:
①管道( pipe ):管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係或兄弟程序關係。 #
②有名管道 (named pipe) :有名管道也是半雙工的通訊方式,但是它允許無親緣關係程序間的通訊。
③訊號量( semophore ) : 訊號量是乙個計數器,可以用來控制多個程序對共享資源的訪問。它常作為一種鎖機制,防止某程序正在訪問共享資源時,其他程序也訪問該資源。因此,主要作為程序間以及同一程序內不同執行緒之間的同步手段。
④訊息佇列( message queue ) : 訊息佇列是由訊息的鍊錶,存放在核心中並由訊息佇列識別符號標識。訊息佇列克服了訊號傳遞資訊少、管道只能承載無格式位元組流以及緩衝區大小受限等缺點。
⑤訊號 ( sinal ) : 訊號是一種比較複雜的通訊方式,用於通知接收程序某個事件已經發生。
⑥共享記憶體( shared memory):共享記憶體就是對映一段能被其他程序所訪問的記憶體,這段共享記憶體由乙個程序建立,但多個程序都可以訪問。共享記憶體是最快的ipc方式,它是針對其他程序間通訊方式執行效率低而專門設計的。它往往與其他通訊機制,如訊號量,配合使用,來實現程序間的同步和通訊。 #
⑦套接字( socket ) : 套解口也是一種程序間通訊機制,與其他通訊機制不同的是,它可用於不同機器間的程序通訊。
程序間通訊方式總結
一 linux系統程序間通訊的方式 二 windows程序間通訊的各種方法 程序是裝入記憶體並準備執行的程式,每個程序都有私有的虛擬位址空間,由 資料以及它可利用的系統資源 如檔案 管道等 組成。多程序 多執行緒是windows作業系統的乙個基本特徵。microsoft win32 api 提供了大...
程序間通訊方式總結
而對unix發展做出重大貢獻的兩大主力at t的貝爾實驗室及bsd 加州大學伯克利分校的伯克利軟體發布中心 在程序間通訊方面的側重點有所不同。前者對unix早期的程序間通訊手段進行了系統的改進和擴充,形成了 system v ipc 通訊程序侷限在單個計算機內 後者則跳過了該限制,形成了基於套介面 ...
程序間通訊方式總結
至 linux下的程序間通訊手段,程序間通訊 inter process communication 簡稱ipc 1.管道 pipe 以及有名管道 named pipe 管道可用於具有親緣關係程序間的通訊,有名管道克服了管道沒有名字的限制,因此,除具有管道所具有的功能外,它還允許無親緣關係程序間的通...