Linux进程+进程间通信IPC
?
一 Linux進(jìn)程
1) 進(jìn)程的內(nèi)存映像
2)解釋
BSS段:在采用段式內(nèi)存管理的架構(gòu)中,BSS段(bss segment)通常是指用來存放程序中未初始化的全局變量的一塊內(nèi)存區(qū)域。BSS是英文Block Started by Symbol的簡稱。BSS段屬于靜態(tài)內(nèi)存分配。
?
數(shù)據(jù)段:在采用段式內(nèi)存管理的架構(gòu)中,數(shù)據(jù)段(data segment)通常是指用來存放程序中已初始化的全局變量的一塊內(nèi)存區(qū)域。數(shù)據(jù)段屬于靜態(tài)內(nèi)存分配。
?
代碼段:在采用段式內(nèi)存管理的架構(gòu)中,代碼段(code segment / text segment)通常是指用來存放程序執(zhí)行代碼的一塊內(nèi)存區(qū)域。這部分區(qū)域的大小在程序運(yùn)行前就已經(jīng)確定,并且內(nèi)存區(qū)域通常屬于只讀, 某些架構(gòu)也允許代碼段為可寫,即允許自修改程序。 在代碼段中,也有可能包含一些只讀的常數(shù)變量,例如字符串常量等。
棧(stack)在計(jì)算機(jī)科學(xué)中,是一種特殊的鏈表形式的數(shù)據(jù)結(jié)構(gòu),它的特殊之處在于只能允許在鏈表的一端(稱為棧頂,英文為top)進(jìn)行添加和刪除操作。另外堆棧數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)也可以通過數(shù)組來完成。棧Stack是存放程序中局部變量的內(nèi)存區(qū),另外棧stack用來保存函數(shù)調(diào)用的現(xiàn)場。棧stack由系統(tǒng)自動(dòng)分配,用戶不需要關(guān)心其分配和釋放。
?
堆是指Heap,程序運(yùn)行時(shí)供程序員來支配的一段內(nèi)存。?用于進(jìn)程運(yùn)行時(shí)動(dòng)態(tài)分配內(nèi)存。堆的大小不固定,可根據(jù)程序運(yùn)行動(dòng)態(tài)變化。由程序中的new/delete等控制。
?
?二 Linux的進(jìn)程間通信IPC(Inter-process communication)
?1)Linux的IPC
2)解釋
管道: 管道可以分為普通管道和命名管道。普通管道用于具有親緣關(guān)系的進(jìn)程(父子進(jìn)程)間的通信。命名管道則在普通管道提供的功能的基礎(chǔ)上,通過給管道命名的方法,使管道變成文件系統(tǒng)中的管道文件,?從而允許無親緣關(guān)系的進(jìn)程間通過訪問管道文件進(jìn)行通信。
?
信號:信號類似windows下的消息,用于通知進(jìn)程有某種事件發(fā)生。只要知道進(jìn)程的進(jìn)程號,就可以向進(jìn)程發(fā)送信號。而進(jìn)程可以自行定義對信號的處理方法。
?
消息隊(duì)列:消息隊(duì)列是消息的鏈表。進(jìn)程可以向消息隊(duì)列中發(fā)送某種類型的消息,也可以從消息隊(duì)列中讀取某種類型的消息。消息內(nèi)存則可以根據(jù)需要自行定義,從而使消息隊(duì)列克服了信號承載信息量過少的缺點(diǎn),在實(shí)際編程中應(yīng)用較廣。
?
共享內(nèi)存:共享內(nèi)存是在系統(tǒng)內(nèi)核分配的一塊緩沖區(qū),多個(gè)進(jìn)程都可以訪問該緩沖區(qū)。由于進(jìn)程可以直接讀寫內(nèi)存,避免了在內(nèi)核空間與用戶空間的切換,所以共享內(nèi)存讀寫效率很高。共享內(nèi)存類似與windows環(huán)境編程中的內(nèi)存映像文件。在Linux系統(tǒng)中,多用于存儲(chǔ)應(yīng)用程序的配置信息。
?
信號量:也成為信號燈,主要用于進(jìn)程間的同步。
?
套接口: 也成為套接字,可以用于跨越主機(jī)邊界的通信。套接口最初是在BSD版本的UNIX系統(tǒng)上實(shí)現(xiàn)的,由于其功能強(qiáng)大,接口友好,現(xiàn)在已經(jīng)在大多數(shù)操作系統(tǒng)中實(shí)現(xiàn),成為事實(shí)上的網(wǎng)絡(luò)編程接口。
?
三?參考
http://www.ibm.com/developerworks/cn/linux/l-ipc/?
http://www.ibm.com/developerworks/cn/linux/l-ipc/part1/
http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index1.html
http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index2.html
http://www.ibm.com/developerworks/cn/linux/l-ipc/part3/
http://www.ibm.com/developerworks/cn/linux/l-ipc/part4/
http://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index1.html
http://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index2.html
http://www.ibm.com/developerworks/cn/linux/l-ipc/part6/
http://www.ibm.com/developerworks/cn/aix/library/au-interprocess_ace/
?
http://en.wikipedia.org/wiki/Inter-process_communication
?
完!
轉(zhuǎn)載于:https://www.cnblogs.com/itech/archive/2010/06/29/1767056.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的Linux进程+进程间通信IPC的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IntelliJ Idea 2017 免
- 下一篇: linux 其他常用命令