标签:两种 特定 资源 允许 必须 个数 共享资源 用户态 信号量
linux常见的五大进程间通信方式包括:共享内存、管道、消息队列、信号量、Socket。
定义:将同一块物理内存映射到不同的进程的虚拟地址空间中,实现不同进程间对同一资源的共享。
特定:(1)不用从用户态到内核态的频繁切换和拷贝数据,直接从内存中读取就可以。
(2)共享内存是临界资源,所以需要操作时必须要保证原子性。使用信号量或者互斥锁都可以。
(1)无名管道:在内核中申请一块固定大小的缓冲区,程序拥有写入和读取的权利,仅适用于具有共同祖先的进程间的通信。
(2)命名管道:在内核中申请一块固定大小的缓冲区,程序拥有写入和读取的权利,适用于任意两个进程间的通信。
在内核中创建一队列,队列中每个元素是一个数据报。消息队列提供从?个进程向另?个进程发送?块数据的?法,因此不同的进程通过访问同一消息队列实现通信。
信号量是一种特殊的变量,用于解决进程或线程间共享资源引发的同步问题。对于信号量只允许进行+1和-1两个操作,对应的两种状态为:
(1)当信号量值等于0时,程序等待;
(2)当信号量值大于0时,信号量减1,程序继续运行。
标签:两种 特定 资源 允许 必须 个数 共享资源 用户态 信号量
原文地址:https://www.cnblogs.com/huaiheng/p/12977651.html