linux進程通訊

來源:互聯網
上載者:User

 linux 進程通訊基本是從Unix繼承過來的,而對這貢獻大的兩大機構是AT&T和bsd兩大機構在進程方面的側重點不同,前者則是是側重於早期處理序間通訊的擴充,形成了"System v IPC ",通訊進程局限於單個電腦內,而後者則是跳過了該限制,形成了基於套介面的處理序間通訊,Linux則是繼承了兩大方面。
    Linux通訊方式有如下幾種方式:
   1.管道及有名管道:管道可用於具有親緣關係之間的進程進行通訊,有名管道客服了管道沒有名字的限制,因此,除了具有管道的特性外,它還允許無親緣關係的進程間進行通訊
   2.訊號。訊號是比較複雜的通訊方式,用於通知進程有某種事情發生,除了通知進程間以外,還可以通知本身,linux除了支援signal外,還支援基於bsd的sigaction函數,該函數可以重新實現signal函數
   3.訊息佇列。訊息佇列是訊息的連結資料表,包括Posix的System V訊息佇列,有足夠許可權的進程可以向隊列中添加資訊,被賦予讀寫權限的進程可以從隊列中取走訊息,訊息佇列克服了訊號承載資訊比較少的缺點,管道只能承載無格式位元組流以及緩衝區受限的的不足
   4.共用記憶體。使得多個進程可以訪問同一個記憶體地區,是最快的可用的IPC形式,一般與訊號量結合使用,以達到進程間的同步與互斥
   5.訊號量。主要作為不同進程以及同一進程不同線程間的同步使用
   6.套介面。更為一般的處理序間通訊。可用於不同機器間的進程通訊。
一般Linux進程包括以下幾個要素
   1.含有一段可啟動並執行代碼
   2.有專有的系統堆棧空間
   3.核心中有系統控制塊,描述系統的狀態,時間,受核心可控制
   4.具有獨立的儲存空間
進程往往和線程沒有直接區分,而往往根據上下文進行分析。

作者“舞者部落格”

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.