linux操作系統(tǒng)下的進程通信設(shè)計

linux下的進程通信手段基本上是從Unix平臺上的進程通信手段繼承而來的。而對Unix發(fā)展做出重大貢獻的兩大主力AT&T的貝爾實驗室及BSD(加州大學(xué)伯克利分校的伯克利軟件發(fā)布中心)在進程間通信方面的側(cè)重點有所不同。前者對Unix早期的進程間通信手段進行了系統(tǒng)的改進和擴充,形成了“system V IPC”,通信進程局限在單個計算機內(nèi);后者則跳過了該限制,形成了基于套接口(socket)的進程間通信機制。Linux則把兩者繼承了下來,如圖示:

其中,最初Unix IPC包括:管道、FIFO、信號;System V IPC包括:System V消息隊列、System V信號燈、System V共享內(nèi)存區(qū);Posix IPC包括:Posix消息隊列、Posix信號燈、Posix共享內(nèi)存區(qū)。有兩點需要簡單說明一下:

1)由于Unix版本的多樣性,電子電氣工程協(xié)會(IEEE)開發(fā)了一個獨立的Unix標準,這個新的ANSI Unix標準被稱為計算肪車目梢浦殘圓僮饗低辰緱媯≒SOIX),F(xiàn)有大部分Unix和流行版本都是遵循POSIX標準的,而Linux從一開始就遵循POSIX標準;

2)BSD并不是沒有涉足單機內(nèi)的進程間通信(socket本身就可以用于單機內(nèi)的進程間通信)。事實上,很多Unix版本的單機IPC留有BSD的痕跡,如4.4BSD支持的匿名內(nèi)存映射、4.3+BSD對可靠信號語義的實現(xiàn)等等。

linux下進程間通信的幾種主要手段簡介:

1.管道

管道是進程間通信中最古老的方式,它包括無名管道和有名管道兩種,前者可用于具有親緣關(guān)系進程間的通信,即可用于父進程和子進程間的通信,后者額克服了管道沒有名字的限制,因此,除具有前者所具有的功能外,它還允許無親緣關(guān)系進程間的通信,即可用于運行于同一臺機器上的任意兩個進程間的通信。

無名管道由pipe()函數(shù)創(chuàng)建:

#include

int pipe(int filedis);

參數(shù)filedis返回兩個文件描述符:filedes[0]為讀而打開,filedes為寫而打開。filedes的輸出是filedes[0]的輸入。

在Linux系統(tǒng)下,有名管道可由兩種方式創(chuàng)建:命令行方式mknod系統(tǒng)調(diào)用和函數(shù)mkfifo。下面的兩種途徑都在當(dāng)前目錄下生成了一個名為myfifo的有名管道:

方式一:mkfifo("myfifo","rw");

方式二:mknod myfifo p

生成了有名管道后,就可以使用一般的文件I/O函數(shù)如open、close、read、write等來對它進行操作。

2.消息隊列

消息隊列是消息的鏈接表,包括Posix消息隊列system V消息隊列。消息隊列用于運行于同一臺機器上的進程間通信,它和管道很相似,有足夠權(quán)限的進程可以向隊列中添加消息,被賦予讀權(quán)限的進程則可以讀走隊列中的消息。消息隊列克服了信號承載信息量少,管道只能承載無格式字節(jié)流以及緩沖區(qū)大小受限等缺點。

我們可以用流管道或者套接口的方式來取代它。

3.共享內(nèi)存

共享內(nèi)存是運行在同一臺機器上的進程間通信最快的方式,因為數(shù)據(jù)不需要在不同的進程間復(fù)制。通常由一個進程創(chuàng)建一塊共享內(nèi)存區(qū),其余進程對這塊內(nèi)存區(qū)進行讀寫。共享內(nèi)存往往與其它通信機制,如信號量結(jié)合使用,來達到進程間的同步及互斥。

來源:21IC電子網(wǎng)


微信掃描分享本文到朋友圈
掃碼關(guān)注5G通信官方公眾號,免費領(lǐng)取以下5G精品資料
  • 1、回復(fù)“YD5GAI”免費領(lǐng)取《中國移動:5G網(wǎng)絡(luò)AI應(yīng)用典型場景技術(shù)解決方案白皮書
  • 2、回復(fù)“5G6G”免費領(lǐng)取《5G_6G毫米波測試技術(shù)白皮書-2022_03-21
  • 3、回復(fù)“YD6G”免費領(lǐng)取《中國移動:6G至簡無線接入網(wǎng)白皮書
  • 4、回復(fù)“LTBPS”免費領(lǐng)取《《中國聯(lián)通5G終端白皮書》
  • 5、回復(fù)“ZGDX”免費領(lǐng)取《中國電信5GNTN技術(shù)白皮書
  • 6、回復(fù)“TXSB”免費領(lǐng)取《通信設(shè)備安裝工程施工工藝圖解
  • 7、回復(fù)“YDSL”免費領(lǐng)取《中國移動算力并網(wǎng)白皮書
  • 8、回復(fù)“5GX3”免費領(lǐng)取《R1623501-g605G的系統(tǒng)架構(gòu)1
  • 本周熱點本月熱點

     

      最熱通信招聘

    業(yè)界最新資訊


      最新招聘信息