linux下的程序通訊手段基本上是從unix平台上的程序通訊手段繼承而來的。而對unix發展做出重大貢獻的兩大主力at&t的貝爾實驗室及bsd(加州大學伯克利分校的伯克利軟體發布中心)在程序間的通訊方面的側重點有所不同。前者是對unix早期的程序間通訊手段進行了系統的改進和擴充,形成了「system v ipc」,其通訊程序主要侷限在單個計算機內;後者則跳過了該限制,形成了基於套介面(socket)的程序間通訊機制。而linux則把兩者的優勢都繼承了下來。
最左邊的表示兩個程序共享檔案系統中某個檔案的資訊,為了訪問其中的資訊,必須通過核心。
中間的表示兩個程序共享在核心中的某些資訊,較為常見的有管道,訊息佇列,訊號量。
最右邊的表示在使用者空間中有乙個兩個程序都能訪問到的共享記憶體區,可不通過核心進行訊息通訊,是速度最快的一種,其本質是對核心中的記憶體空間做了對映,對映到使用者空間。
程序持續:一直存在直到開啟的最後乙個程序結束。(如pipe和fifo)。
核心持續:一直存在直到核心自舉或顯式刪除(如system v訊息佇列、共享記憶體、訊號量)。
檔案系統持續:一直存在直到顯式刪除,即使核心自舉還存在。(posix訊息佇列、共享記憶體、訊號量如果是使用對映檔案來實現)。
程序間通訊IPC
這兩天學習了 unix 的程序間通訊 ipc,這裡面有幾個很重要的基本概念,特別是訊息佇列和我的畢設很有關係,因此多說幾句。以前學習的程序間通訊方式,一般都是經由 fork 或exec 開啟檔案,或經過檔案系統。而 ipc是程序間通訊方式的統稱。下面一一道來。一 管道 管道是最老的 ipc形式。管道...
程序間通訊 IPC
part2 index1.html part2 index2.html linux至少支援如下ipc機制 同時支援posix和system v方式 streams ipc機制,linux本身不支援,有乙個單獨的安裝包 可以跨pc的程序通訊 互斥鎖或條件變數 動態初始化 不能使靜態分配 在共享記憶體中...
程序間通訊IPC
乙個大型的應用系統,往往需要眾多程序協作,程序間通訊的重要性顯而易見。首先,程序間通訊至少可以通過傳送開啟檔案來實現,不同的程序通過乙個或多個檔案來傳遞資訊,事實上,在很多應用系統裡,都使用了這種方法。但一般說來,程序間通訊 ipc interprocess communication 不包括這種似...