進程間通信方式簡述及區別(bie)
時間(jian):2018-09-25 來源(yuan):未知
# 管(guan)道(dao)( pipe ):管(guan)道(dao)是(shi)一種半雙(shuang)工的(de)通信(xin)方式,數據(ju)只能單(dan)向(xiang)流動,而(er)且只能在具有親(qin)緣(yuan)關系的(de)進程間使用。進程的(de)親(qin)緣(yuan)關系通常是(shi)指父子進程關系。
# 有名管道 (named pipe) : 有名管道也是半雙工的通信方式,但是它(ta)允(yun)許無親緣關(guan)系(xi)進程間的通信。
# 信(xin)號量( semaphore ) : 信(xin)號量是一個(ge)計(ji)數(shu)器(qi),可(ke)以用來控制多(duo)個(ge)進(jin)(jin)程(cheng)(cheng)對共(gong)(gong)享資(zi)(zi)源的訪問(wen)。它(ta)常(chang)作為一種鎖(suo)機制,防止某進(jin)(jin)程(cheng)(cheng)正在訪問(wen)共(gong)(gong)享資(zi)(zi)源時,其他進(jin)(jin)程(cheng)(cheng)也(ye)訪問(wen)該資(zi)(zi)源。因此(ci),主要(yao)作為進(jin)(jin)程(cheng)(cheng)間(jian)以及(ji)同(tong)(tong)(tong)一進(jin)(jin)程(cheng)(cheng)內不同(tong)(tong)(tong)線程(cheng)(cheng)之間(jian)的同(tong)(tong)(tong)步手段。
# 消(xiao)息隊列(lie)( message queue ) : 消(xiao)息隊列(lie)是由消(xiao)息的鏈表,存放(fang)在內核中并由消(xiao)息隊列(lie)標識(shi)符標識(shi)。消(xiao)息隊列(lie)克服了信號傳遞信息少、管道只(zhi)能承載無格式字節流(liu)以及緩沖區大小受限等(deng)缺點(dian)。
# 信號 ( signal ) : 信號是一種比較復雜的通信方式,用于(yu)通知(zhi)接收進程某個事件已經發生。
# 共(gong)享(xiang)內(nei)(nei)存( shared memory ) :共(gong)享(xiang)內(nei)(nei)存就是(shi)(shi)映射一段(duan)(duan)能(neng)被其他進(jin)(jin)程(cheng)所訪問(wen)(wen)的(de)(de)內(nei)(nei)存,這段(duan)(duan)共(gong)享(xiang)內(nei)(nei)存由一個進(jin)(jin)程(cheng)創建,但多個進(jin)(jin)程(cheng)都可以訪問(wen)(wen)。共(gong)享(xiang)內(nei)(nei)存是(shi)(shi)快的(de)(de) IPC 方(fang)式,它是(shi)(shi)針(zhen)對其他進(jin)(jin)程(cheng)間通信方(fang)式運(yun)行效率低而(er)專門設計的(de)(de)。它往往與(yu)其他通信機制,如信號兩,配(pei)合使用,來實(shi)現(xian)進(jin)(jin)程(cheng)間的(de)(de)同步(bu)和通信。
# 套接字(zi)(zi)( socket ) : 套接字(zi)(zi)也是一種進(jin)程(cheng)間通(tong)信(xin)機(ji)(ji)制,與其他通(tong)信(xin)機(ji)(ji)制不(bu)同的是,它可用(yong)于(yu)不(bu)同主機(ji)(ji)間的進(jin)程(cheng)通(tong)信(xin)。

