进程之间的通信方式及适用场景

it2022-05-06  4

进程通信是指进程之间的信息交换,根据传输数据的大小,可以把进程通信分为

低级通信机制(效率低,例如信号量机制)高级通信机制(OS封装了细节,直接高效使用原语)

在进程之间要传递大量数据时,应当使用高级通信机制,高级通信机制一般分为四大类:

共享存储器系统管道通信系统消息传递系统客户机-服务器系统

具体的进程通信方式有以下几种:

==============================================================

一、共享内存通信

共享内存是指多个进程共享一块内存,是专门用来解决不同进程之间的通信问题的,由于是直接对内存进行数据传输操作,所以是速度最快的IPC(inter-process communication)方式,因为是共享内存,所以需要配合信号量机制实现同步。

二、管道通信

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

当一个管道建立时,它会创建两个文件描述符:fd[0]为读而打开,fd[1]为写而打开。如下图:

高级管道(popen):将另一个程序当做一个新的进程在当前程序进程中启动,则它算是当前程序的子进程,这种方式我们成为高级管道方式。

有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。

三、消息队列通信

消息队列( message queue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。

四、套接字通信

套接字( socket ) : 套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信。


最新回复(0)