【ZZ】Linux進程間通訊簡介

     進程是一個獨立的 資源分配單位,不一樣進程之間的資源是相互獨立的,沒有關聯,不能在一個進程中直接訪問另外一個進程中的資源。可是,進程不是孤立的,不一樣的進程之間須要 信息的交換以及狀態的傳遞,所以須要 進程間數據傳遞、同步與異步的機制

  這些機制並非由哪些進程來進行直接管理,而是由操做系統進行管理。linux中提供了大量的進程間通訊機制來實現同一個主機間的進程間的通訊。同時,對於網絡間的主機進行通訊的機制,linux也同時提供。看下面的圖 linux

 

1、整體簡介

  【1】同主機進程間數據交互機制:無名管道(PIPE),有名管道(FIFO),消息隊列(message queue)和共享內存(share memory)。 網絡

  【2】同主機進程間同步機制:信號量(semaphore) 異步

  【3】同主機進程間異步機制:信號(signal) socket

  【4】網絡主機間數據交互機制:套接字(socket) 大數據

  2、unix進程間通訊機制 操作系統

  一、無名管道PIPE,只能用於具備親緣關係(父子進程)間的通訊,無名管道在通訊雙方退出後自動消失。 unix

  二、有名管道:克服了無名管道的瞬時性的問題,採用管道文件來實現同一主機間的任意兩個進程間的數據的傳遞。 隊列

  三、信號:信號實際上是一種軟中斷機制,採用一種異步的機制,在信號發生時處理特定的時間,可是要注意的是,這同硬件中的中斷,仍是有必定區別的。 進程

  3、system Ⅴ進程間通訊 ip

  一、消息隊列:消息隊列主要用來實現兩個進程間少許的數據的通訊,而且接收方能夠根據消息的類型,選擇接收消息。

  二、信號量:信號量是一種進程間的同步進制。對於二元信號量,能夠實現兩個進程間的同步,對於普遍的信號量,能夠表示資源的使用量。

  三、共享內存:共享內存進制能夠實現兩個進程間的大數據量的通訊,其在內存中專門開闢出一個獨立的內存,而後映射到各自的進程之中,進行數據的傳輸,其通訊效率較高。

  對於system Ⅴ進程間的通訊機制,可使用ipcs命令進程查看,以下

相關文章
相關標籤/搜索