进程间通信方式

Posted huaiheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程间通信方式相关的知识,希望对你有一定的参考价值。

1 概述

   linux常见的五大进程间通信方式包括:共享内存、管道、消息队列、信号量、Socket。

2 共享内存

    定义:将同一块物理内存映射到不同的进程的虚拟地址空间中,实现不同进程间对同一资源的共享。

    特定:(1)不用从用户态到内核态的频繁切换和拷贝数据,直接从内存中读取就可以。

             (2)共享内存是临界资源,所以需要操作时必须要保证原子性。使用信号量或者互斥锁都可以。

3 管道

    (1)无名管道:在内核中申请一块固定大小的缓冲区,程序拥有写入和读取的权利,仅适用于具有共同祖先的进程间的通信。

    (2)命名管道:在内核中申请一块固定大小的缓冲区,程序拥有写入和读取的权利,适用于任意两个进程间的通信。

4 消息队列

   在内核中创建一队列,队列中每个元素是一个数据报。消息队列提供从?个进程向另?个进程发送?块数据的?法,因此不同的进程通过访问同一消息队列实现通信。

5 信号量

   信号量是一种特殊的变量,用于解决进程或线程间共享资源引发的同步问题。对于信号量只允许进行+1和-1两个操作,对应的两种状态为:

   (1)当信号量值等于0时,程序等待;

   (2)当信号量值大于0时,信号量减1,程序继续运行。

以上是关于进程间通信方式的主要内容,如果未能解决你的问题,请参考以下文章

进程间通信的4种方式

进程间通信--信号(进程间通信唯一的异步方式)

进程间通信方式

进程间通信

进程间通信方式及特点

Unix进程小结进程间通信方式总结