进程通信概念和进程通信方式

进程通信(IPC,Inter-Porcess Communcation)是进程进行通信和同步的机制。

IPC提供两个基本操作:

  1. 发送(send message)
  2. 接收(receive message)

进程通信流程:

  • 在通信进程之间建立通信链路
  • 通过send/receive交换信息

进程通信方式:

进程通信概念和进程通信方式_第1张图片

直接通信:
进程必须正确命名对方,比如send(p,message)向p发送信息,receive(q,message)从q中接收信息
通信链路有如下属性:自动建立连接;一条链路恰好对应一对通信进程;每对进程之间只有一个链接存在;链路可以是单向的,但是通常为双向的

间接通信:
通过OS维护的消息队列实现进程之间的通信(接收发送信息)
每个消息队列都有一个唯一标识,只有共享了相同消息队列的进程才能够通信
通信链路有如下属性:只有共享了相同消息队列的进程才能建立连接,比如send(a,message)向消息队列a发送信息,receive(a,message)从消息队列a中接收信息 ;连接单向或者双向;消息队列可以与多个进程相互关联;每个进程共享多个消息队列(也就是进程和消息队列是多对多的关系)

阻塞通信(同步)与非阻塞通信(异步)

同步通信:

阻塞发送:发送者发送消息后进入等待(阻塞)直到接受者成功接受
阻塞接收:接收者请求接收信息后等待(阻塞)直到成功接受一条消息

异步通信:

非阻塞发送:发送者发送消息后,可立即进行其他操作
非阻塞接收:接收者请求接收信息后,如果没有消息发送就接收不到信息,不需要等待

通信链路缓冲:

  1. 0容量:发送方必须等待接受方
  2. 有限容量:缓冲队列满,发送方必须等待
  3. 无限容量:发送方不需要等待


上面是关于IPC通信的基本概念,下面我们看一看一些常见的进程通信方式。

MOOC讲了四种进程通信方式:

信号,管道, 消息队列, 共享内存,由于都是基本概念,我偷个懒直接复制下来了:


信号:


管道:

进程通信概念和进程通信方式_第2张图片

进程通信概念和进程通信方式_第3张图片

进程通信概念和进程通信方式_第4张图片


消息队列:

进程通信概念和进程通信方式_第5张图片

进程通信概念和进程通信方式_第6张图片


共享内存:

进程通信概念和进程通信方式_第7张图片

你可能感兴趣的:(Linux/操作系统)