前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >看图理解进程间通信IPC

看图理解进程间通信IPC

作者头像
石瞳禅
发布2018-09-18 18:06:32
2.5K0
发布2018-09-18 18:06:32
举报
文章被收录于专栏:石瞳禅的互联网实验室
5709266-1a6acc8cb9577645.png
5709266-1a6acc8cb9577645.png

什么是进程间通讯

进程间通信(inter-process communication或interprocess communication,简写IPC)是指两个或两个以上进程(或线程)之间进行数据或信号交互的技术方案。

通常,IPC一般包含客户端和服务器,客户端请求数据,服务器响应请求(比如分布式计算中就是这样)。

有哪些IPC方法

IPC方法适用的环境

5709266-d543a70327a4de43.png
5709266-d543a70327a4de43.png

文件(File)

存储在磁盘上的记录,或由文件服务器按需合成的记录,可以由多个进程访问。

5709266-345a90d5044a49f7.png
5709266-345a90d5044a49f7.png

信号(Signal)

系统消息从一个进程发送到另一个进程,一般不用于传输数据,而是用于远程传输命令。

5709266-bc52bfc7a89dfee4.png
5709266-bc52bfc7a89dfee4.png

套接字(Socket)

通过网络接口将数据量发送到本机的不同进程或远程计算机。

5709266-ccc181523c40ec60.png
5709266-ccc181523c40ec60.png

Unix域套接字(Unix domain socket)

用于在同一台机器上运行的进程之间的通信。虽然因特网域套接字可用于同一目的,但UNIX域套接字的效率更高。UNIX域套接字仅仅复制数据;它们并不执行协议处理,不需要添加或删除网络报头,无需计算检验和,不要产生顺序号,无需发送确认报文。

5709266-cc7354cc271845c5.png
5709266-cc7354cc271845c5.png

消息队列(Message queue)

类似于套接字的数据流,但消息有自己的结构,它允许多个进程只需要读写消息队列,而不需要直接相互连接。

5709266-36b6db62bb6c4a81.png
5709266-36b6db62bb6c4a81.png

管道(Pipe)

管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。

5709266-523462cea67e1d73.png
5709266-523462cea67e1d73.png

命名管道(Named pipe或FIFO)

命名管道可在同一台计算机的不同进程之间或在跨越一个网络的不同计算机的不同进程之间,支持可靠的、单向或双向的数据通信。

5709266-4eca614f99ac711b.png
5709266-4eca614f99ac711b.png

共享内存(Shared memory)

允许多个进程访问同一个内存块,该内存块作为一个共享缓冲区,供进程间相互通信。

5709266-29aa3e3d61e30c2a.png
5709266-29aa3e3d61e30c2a.png

消息传递(Message passing)

一般在并发模型中,允许多个程序使用消息队列或者托管通道通信。

5709266-aed5f7562f4ed162.png
5709266-aed5f7562f4ed162.png

内存映射文件(Memory-mapped file)

类似于标准的文件,内存映射文件映射到RAM,可以直接对内存地址进行更改,而不是更改输出流。

5709266-0c5c38ffb2a1fef2.png
5709266-0c5c38ffb2a1fef2.png
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-07-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是进程间通讯
  • 有哪些IPC方法
    • IPC方法适用的环境
      • 文件(File)
        • 信号(Signal)
          • 套接字(Socket)
            • Unix域套接字(Unix domain socket)
              • 消息队列(Message queue)
                • 管道(Pipe)
                  • 命名管道(Named pipe或FIFO)
                    • 共享内存(Shared memory)
                      • 消息传递(Message passing)
                        • 内存映射文件(Memory-mapped file)
                        相关产品与服务
                        消息队列 CMQ
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档