Linux程序 程序間通訊IPC

2022-02-18 11:38:10 字數 1675 閱讀 2198

一 linux程序

1) 程序的記憶體映像

2)解釋

bss段:在採用段式記憶體管理的架構中,bss段(bss segment)通常是指用來存放程式中未初始化的全域性變數的一塊記憶體區域。bss是英文block started by symbol的簡稱。bss段屬於靜態記憶體分配。

資料段:在採用段式記憶體管理的架構中,資料段(data segment)通常是指用來存放程式中已初始化的全域性變數的一塊記憶體區域。資料段屬於靜態記憶體分配。

**段:在採用段式記憶體管理的架構中,**段(code segment / text segment)通常是指用來存放程式執行**的一塊記憶體區域。這部分區域的大小在程式執行前就已經確定,並且記憶體區域通常屬於唯讀, 某些架構也允許**段為可寫,即允許自修改程式。 在**段中,也有可能包含一些唯讀的常數變數,例如字串常量等。

棧(stack)在電腦科學中,是一種特殊的鍊錶形式的資料結構,它的特殊之處在於只能允許在鍊錶的一端(稱為棧頂,英文為top)進行新增和刪除操作。另外堆疊資料結構的實現也可以通過陣列來完成。棧stack是存放程式中區域性變數的記憶體區,另外棧stack用來儲存函式呼叫的現場。棧stack由系統自動分配,使用者不需要關心其分配和釋放。

堆是指heap,程式執行時供程式設計師來支配的一段記憶體。 用於程序執行時動態分配記憶體。堆的大小不固定,可根據程式執行動態變化。由程式中的new/delete等控制。

二 linux的程序間通訊ipc(inter-process communication)

1)linux的ipc

2)解釋

管道: 管道可以分為普通管道和命名管道。普通管道用於具有親緣關係的程序(父子程序)間的通訊。命名管道則在普通管道提供的功能的基礎上,通過給管道命名的方法,使管道變成檔案系統中的管道檔案, 從而允許無親緣關係的程序間通過訪問管道檔案進行通訊。

訊號:訊號類似windows下的訊息,用於通知程序有某種事件發生。只要知道程序的程序號,就可以向程序傳送訊號。而程序可以自行定義對訊號的處理方法。

訊息佇列:訊息佇列是訊息的鍊錶。程序可以向訊息佇列中傳送某種型別的訊息,也可以從訊息佇列中讀取某種型別的訊息。訊息記憶體則可以根據需要自行定義,從而使訊息佇列克服了訊號承載資訊量過少的缺點,在實際程式設計中應用較廣。

共享記憶體:共享記憶體是在系統核心分配的一塊緩衝區,多個程序都可以訪問該緩衝區。由於程序可以直接讀寫記憶體,避免了在核心空間與使用者空間的切換,所以共享記憶體讀寫效率很高。共享記憶體類似與windows環境程式設計中的記憶體映像檔案。在linux系統中,多用於儲存應用程式的配置資訊。

訊號量:也成為訊號燈,主要用於程序間的同步。

套介面: 也成為套接字,可以用於跨越主機邊界的通訊。套介面最初是在bsd版本的unix系統上實現的,由於其功能強大,介面友好,現在已經在大多數作業系統中實現,成為事實上的網路程式設計介面。

三 參考

part1/

part2/index1.html

part2/index2.html

part3/

part4/

part5/index1.html

part5/index2.html

part6/

完!

Linux程序間通訊 IPC

linux下的程序通訊手段基本上是從unix平台上的程序通訊手段繼承而來的。而對unix發展做出重大貢獻的兩大主力at t的貝爾實驗室及bsd 加州大學伯克利分校的伯克利軟體發布中心 在程序間通訊方面的側重點有所不同。前者對unix早期的程序間通訊手段進行了系統的改進和擴充,形成了 system v...

Linux程序間通訊(IPC)

程序通訊有例如以下一些目的 a 傳輸資料 乙個程序須要將它的資料傳送給還有乙個程序。傳送的資料量在乙個位元組到幾m位元組之間 b 共享資料 多個程序想要操作共享資料。乙個程序對共享資料的改動,別的程序應該立馬看到。c 通知事件 乙個程序須要向還有乙個或一組程序傳送訊息。通知它 它們 發生了某種事件 ...

程序間通訊IPC

這兩天學習了 unix 的程序間通訊 ipc,這裡面有幾個很重要的基本概念,特別是訊息佇列和我的畢設很有關係,因此多說幾句。以前學習的程序間通訊方式,一般都是經由 fork 或exec 開啟檔案,或經過檔案系統。而 ipc是程序間通訊方式的統稱。下面一一道來。一 管道 管道是最老的 ipc形式。管道...