(二)进程间通信方式

1 概述

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

2 共享内存

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

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

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

3 管道

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

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

4 消息队列

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

5 信号量

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

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

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

(二)进程间通信方式

原文地址:https://www.cnblogs.com/huaiheng/p/12977651.html

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注