0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

進程間通信的機制有哪些

麥辣雞腿堡 ? 來源:嵌入式Linux系統(tǒng)開發(fā) ? 作者:嵌入式Linux系統(tǒng)開 ? 2023-07-21 11:23 ? 次閱讀

進程間通信(interprocess communication,簡稱IPC)指兩個進程之間的通信。系統(tǒng)中的每一個進程都有各自的地址空間,并且相互獨立、隔離,每個進程都處于自己的地址空間中,因此相互通信比較難,Linux內(nèi)核提供了多種進程間通信的機制。

同一個進程的不同模塊(譬如不同的函數(shù))之間進行通信都是很簡單的,譬如使用全局變量等。

通常情況下,大部分的程序是不要考慮進程間通信的,因為大家所接觸絕大部分程序都是單進程程序(可以有多個線程),對于一些復(fù)雜、大型的應(yīng)用程序,則會根據(jù)實際需要將其設(shè)計成多進程程序。

進程間通信的機制有哪些?

Linux 內(nèi)核提供了多種 IPC 機制,基本是從 UNIX 系統(tǒng)繼承而來,而對 UNIX 發(fā)展做出重大貢獻的兩大主力 AT&T的貝爾實驗室及 BSD(加州大學(xué)伯克利分校的伯克利軟件發(fā)布中心)在進程間通信方面的側(cè)重點有所不同。

前者對 UNIX 早期的進程間通信手段進行了系統(tǒng)的改進和擴充,形成了“System VIPC”,通信進程局限在單個計算機內(nèi);后者則跳過了該限制,形成了基于套接字(Socket,也就是網(wǎng)絡(luò))的進程間通信機制。Linux則把兩者繼承了下來,如下如所示:

圖片

早期的 UNIX IPC 包括:管道、FIFO、信號;System V IPC 包括:System V 信號量、System V消隊列、SystemV 共享內(nèi)存;上圖中還出現(xiàn)了 POSIX IPC,事實上,較早的 System V IPC 存在著一些不足之處,而 POSIX IPC 則是在 System VIPC 的基礎(chǔ)上進行改進所形成的,彌補了 System V IPC 的一些不足之處。POSIX IPC 包括:POSIX 信號量、POSIX消息隊列、POSIX 共享內(nèi)存。

總結(jié)如下:

UNIX IPC:管道、FIFO、信號;

System V IPC:信號量、消息隊列、共享內(nèi)存;

POSIX IPC:信號量、消息隊列、共享內(nèi)存;

Socket IPC:基于 Socket 進程間通信。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 通信
    +關(guān)注

    關(guān)注

    18

    文章

    6049

    瀏覽量

    136221
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11329

    瀏覽量

    209969
  • IPC
    IPC
    +關(guān)注

    關(guān)注

    3

    文章

    352

    瀏覽量

    51979
收藏 人收藏

    評論

    相關(guān)推薦

    Linux下進程通信方式-管道

    Linux下進程通信方式-管道分享到: 本文關(guān)鍵字: linux 管道通信,linux 進程通信
    發(fā)表于 08-29 15:29

    Linux下進程通信

    華清遠見嵌入式linux學(xué)習(xí)資料《Linux下進程通信》,通過前面的學(xué)習(xí),讀者已經(jīng)知道了進程是一個程序的一次執(zhí)行,是系統(tǒng)資源分配的最小單元。這里所說的
    發(fā)表于 09-04 10:07

    進程通信

    相信不管是學(xué)習(xí)嵌入式的還是單片機的進程通信都是需要學(xué)習(xí)的,找到的這個資料不錯,至于是哪的還是老規(guī)矩 我就不說了避嫌 想看的自己看
    發(fā)表于 11-14 16:52

    進程通信的分類及機制中的數(shù)據(jù)結(jié)構(gòu)

      進程通信就是在不同進程之間傳播或交換信息,進程控制信息的交換稱為低級
    發(fā)表于 08-05 08:09

    進程通信的方式哪些?

    進程通信的方式哪些?
    發(fā)表于 12-24 06:46

    怎樣通過匿名管道去實現(xiàn)進程通信

    進程通信是指什么?怎樣通過匿名管道去實現(xiàn)進程通信呢?哪些步驟?
    發(fā)表于 12-24 06:45

    哪些方式可以實現(xiàn)Linux系統(tǒng)下的進程通信

    哪些方式可以實現(xiàn)Linux系統(tǒng)下的進程通信進程與線程哪些不同之處呢?
    發(fā)表于 12-24 06:38

    進程通信之Linux下進程通信概述

    人們現(xiàn)在廣泛使用的手機等方式。本章就是講述如何建立這些不同的通話方式,就像人們多種通信方式一樣。 Linux下的進程通信手段基本上是從UNIX平臺上的
    發(fā)表于 10-18 16:21 ?0次下載

    進程與線程通信方式

    進程通信則不同,它的數(shù)據(jù)空間的獨立性決定了它的通信相對比較復(fù)雜,需要通過操作系統(tǒng)。以前進程
    的頭像 發(fā)表于 04-09 15:58 ?8943次閱讀
    <b class='flag-5'>進程</b><b class='flag-5'>間</b>與線程<b class='flag-5'>間</b>的<b class='flag-5'>通信</b>方式

    Linux進程通信

    一、進程通信概述進程通信有如下一些目的:A、數(shù)據(jù)傳輸:一個進程需要將它的數(shù)據(jù)發(fā)
    發(fā)表于 04-02 14:46 ?517次閱讀

    常見的進程通信方式

    關(guān)系的進程間使用。進程的親緣關(guān)系,通常指父子進程關(guān)系。 有名管道: 有名管道也是,半雙工的通信方式,但是它允許無親緣關(guān)系
    的頭像 發(fā)表于 10-08 15:48 ?1378次閱讀
    常見的<b class='flag-5'>進程</b><b class='flag-5'>間</b><b class='flag-5'>通信</b>方式

    進程通信方式總結(jié)

    進程通信(IPC): 進程通信的方式很多,這里
    的頭像 發(fā)表于 11-09 09:25 ?792次閱讀
    <b class='flag-5'>進程</b><b class='flag-5'>間</b><b class='flag-5'>通信</b>方式總結(jié)

    如何實現(xiàn)一套linux進程通信機制

    我們知道linux的進程通信的組件管道,消息隊列,socket, 信號量,共享內(nèi)存等。但是我們?nèi)绻约簩崿F(xiàn)一套進程
    的頭像 發(fā)表于 11-10 14:56 ?663次閱讀
    如何實現(xiàn)一套linux<b class='flag-5'>進程</b><b class='flag-5'>間</b><b class='flag-5'>通信</b>的<b class='flag-5'>機制</b>

    進程通信的原理

    一.為什么進程需要通信? 1).數(shù)據(jù)傳輸 一個進程需要將它的數(shù)據(jù)發(fā)送給另一個進程; 2).資源共享 多個
    的頭像 發(fā)表于 11-10 17:05 ?1193次閱讀
    <b class='flag-5'>進程</b><b class='flag-5'>間</b><b class='flag-5'>通信</b>的原理

    進程通信的消息隊列介紹

    消息隊列是一種非常常見的進程通信方式。
    的頭像 發(fā)表于 04-08 17:27 ?325次閱讀