久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > Linux進程間通信方式

Linux進程間通信方式 時間:2018-09-29      來源:未知

 1、管道( pipe ):管道是一種半雙工的通信方式,數據只能單向流動,而且只能在具有親緣關系的進程間使用。進程的親緣關系通常是指父子進程關系。

 2、有名管道 (named pipe) : 有名管道也是半雙工的通信方式,但是它允許無親緣關系進程間的通信。

 3、信號量( semophore ) : 信號量是一個計數器,可以用來控制多個進程對共享資源的訪問。它常作為一種鎖機制,防止某進程正在訪問共享資源時,其他進程也訪問該資源。因此,主要作為進程間以及同一進程內不同線程之間的同步手段。

 4、消息隊列( message queue ) : 消息隊列是由消息的鏈表,存放在內核中并由消息隊列標識符標識。消息隊列克服了信號傳遞信息少、管道只能承載無格式字節流以及緩沖區大小受限等缺點。

 5、信號 ( sinal ) : 信號是一種比較復雜的通信方式,用于通知接收進程某個事件已經發生。

 6、共享內存( shared memory):共享內存就是映射一段能被其他進程所訪問的內存,這段共享內存由一個進程創建,但多個進程都可以訪問。共享內存是快的IPC方式,它是針對其他進程間通信方式運行效率低而專門設計的。它往往與其他通信機制,如信號量,配合使用,來實現進程間的同步和通信。

 7、套接字( socket ) : 套解口也是一種進程間通信機制,與其他通信機制不同的是,它可用于不同及其間的進程通信。

這里主要比較一下高級通信的這三種方式的特點。

管道通信(PIPE)

       兩個進程利用管道進行通信時.發送信息的進程稱為寫進程.接收信息的進程稱為讀進程。管道通信方式的中間介質就是文件.通常稱這種文件為管道文件.它就像管道一樣將一個寫進程和一個讀進程連接在一起,實現兩個進程之間的通信。寫進程通過寫入端(發送端)往管道文件中寫入信息;讀進程通過讀出端(接收端)從管道文件中讀取信息。兩個進程協調不斷地進行寫和讀,便會構成雙方通過管道傳遞信息的流水線。

       利用系統調用PIPE()可以創建一個無名管道文件,通常稱為無名管道或PIPE;利用系統調用MKNOD()可以創建一個有名管道文件.通常稱為有名管道或FIFO。無名管道是一種非永久性的管道通信機構.當它訪問的進程全部終止時,它也將隨之被撤消。無名管道只能用在具有家族聯系的進程之間。有名管道可以長期存在于系統之中.而且提供給任意關系的進程使用,但是使用不當容易導致出錯.所以操作系統將命名管道的管理權交由系統來加以控制管道文件被創建后,可以通過系統調用WRITE()和READ()來實現對管道的讀寫操作;通信完后,可用CLOSE()將管道文件關閉。

消息緩沖通信(MESSAGE)

       多個獨立的進程之間可以通過消息緩沖機制來相互通信.這種通信的實現是以消息緩沖區為中間介質.通信雙方的發送和接收操作均以消息為單位。在存儲器中,消息緩沖區被組織成隊列,通常稱之為消息隊列。消息隊列一旦創建后即可由多進程共享.發送消息的進程可以在任意時刻發送任意個消息到指定的消息隊列上,并檢查是否有接收進程在等待它所發送的消息。若有則喚醒它:而接收消息的進程可以在需要消息的時候到指定的消息隊列上獲取消息.如果消息還沒有到來.則轉入睡眠狀態等待。

共享內存通信(SHARED MEMORY)

       針對消息緩沖需要占用CPU進行消息復制的缺點.OS提供了一種進程間直接進行數據交換的通信方式一共享內存 顧名思義.這種通信方式允許多個進程在外部通信協議或同步,互斥機制的支持下使用同一個內存段(作為中間介質)進行通信.它是一種有效的數據通信方式,其特點是沒有中間環節.直接將共享的內存頁面通過附接.映射到相互通信的進程各自的虛擬地址空間中.從而使多個進程可以直接訪問同一個物理內存頁面.如同訪問自己的私有空間一樣(但實質上不是私有的而是共享的)。因此這種進程間通信方式是在同一個計算機系統中的諸進程間實現通信的快捷的方法.而它的局限性也在于此.即共享內存的諸進程必須共處同一個計算機系統.有物理內存可以共享才行。

三種方式的特點(優缺點):

 1.無名管道簡單方便.但局限于單向通信的工作方式.并且只能在創建它的進程及其子孫進程之間實現管道的共享:有名管道雖然可以提供給任意關系的進程使用.但是由于其長期存在于系統之中,使用不當容易出錯。

 2.消息緩沖可以不再局限于父子進程.而允許任意進程通過共享消息隊列來實現進程間通信.并由系統調用函數來實現消息發送和接收之間的同步.從而使得用戶在使用消息緩沖進行通信時不再需要考慮同步問題.使用方便,但是信息的復制需要額外消耗CPU的時間.不適宜于信息量大或操作頻繁的場合。

 3.共享內存針對消息緩沖的缺點改而利用內存緩沖區直接交換信息,無須復制,快捷、信息量大是其優點。但是共享內存的通信方式是通過將共享的內存緩沖區直接附加到進程的虛擬地址空間中來實現的.因此,這些進程之間的讀寫操作的同步問題操作系統無法實現。必須由各進程利用其他同步工具解決。另外,由于內存實體存在于計算機系統中.所以只能由處于同一個計算機系統中的諸進程共享。不方便網絡通信。

上一篇:.h文件與.c文件的基本寫法

下一篇:sigaction的使用

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部