【ZZ】Linux进程间通信简介

     进程是一个独立的 资源分配单位,不同进程之间的资源是相互独立的,没有关联,不能在一个进程中直接访问另一个进程中的资源。但是,进程不是孤立的,不同的进程之间需要 信息的交换以及状态的传递,因此需要 进程间数据传递、同步与异步的机制

  这些机制并不是由哪些进程来进行直接管理,而是由操作系统进行管理。linux中提供了大量的进程间通信机制来实现同一个主机间的进程间的通信。同时,对于网络间的主机进行通信的机制,linux也同时提供。看下面的图

【ZZ】Linux进程间通信简介_第1张图片

 

一、总体简介

  【1】同主机进程间数据交互机制:无名管道(PIPE),有名管道(FIFO),消息队列(message queue)和共享内存(share memory)。

  【2】同主机进程间同步机制:信号量(semaphore)

  【3】同主机进程间异步机制:信号(signal)

  【4】网络主机间数据交互机制:套接字(socket)

  二、unix进程间通信机制

  1、无名管道PIPE,只能用于具有亲缘关系(父子进程)间的通信,无名管道在通信双方退出后自动消失。

  2、有名管道:克服了无名管道的瞬时性的问题,采用管道文件来实现同一主机间的任意两个进程间的数据的传递。

  3、信号:信号其实是一种软中断机制,采用一种异步的机制,在信号发生时处理特定的时间,但是要注意的是,这同硬件中的中断,还是有一定区别的。

  三、system Ⅴ进程间通信

  1、消息队列:消息队列主要用来实现两个进程间少量的数据的通信,并且接收方可以根据消息的类型,选择接收消息。

  2、信号量:信号量是一种进程间的同步进制。对于二元信号量,可以实现两个进程间的同步,对于广泛的信号量,可以表示资源的使用量。

  3、共享内存:共享内存进制可以实现两个进程间的大数据量的通信,其在内存中专门开辟出一个独立的内存,然后映射到各自的进程之中,进行数据的传输,其通信效率较高。

  对于system Ⅴ进程间的通信机制,可以使用ipcs命令进程查看,如下

【ZZ】Linux进程间通信简介_第2张图片

 

 

你可能感兴趣的:(【ZZ】Linux进程间通信简介)