IPC对象通信

IPC对象通信

System V IPC 对象是由贝尔实验室发展而来的,主要包括三种通信方式 共享内存、消息对列、信号灯。

三种通信方式都需要一个标识符,共享内存标识符、消息队列标识符、信号灯标识符。 标识符只是IPC对象的内部名,如果多个进程需要在同一个IPC对象上进行回合通信,需要一个外部名。为此,使用了键 (key值)。

一、 IPC对象通信的三种方式

二、 IPC对象通信

2.1 IPC对象的外部名键值 key

2.2 共享内存

共享内存允许两个或者多个进程共享一定的存储区,因为数据不需要在客户进程和服务器进程间进行数据的复制,所以是一种最快的IPC通信的方式。

共享内存创建的流程:

1 调用ftok函数生成键值key

2 创建或打开共享内存

3 共享内存的映射

4 撤销共享内存的映射

5 删除共享内存

2.3 消息队列

消息队列是消息的链表,存放在内核中并由消息队列标识符标识。Linux中默认配置系统中,最大能创建的队列数是16个,最大的消息数是262144个。每个不同的系统是不一样的。

消息队列创建流程:

1 调用ftok函数生成key值

2 创建或者打开消息队列

3 添加消息到消息队列中

4 从消息队列中取出消息

5 对消息队列的控制,如 删除消息队列

2.4 信号灯

信号灯也叫信号量,它是不同进程间或者线程间进行同步的一种机制。它是一个计数器,用于多进程对共享数据的访问。信号量的实现是原子操作。一般和共享内存一起使用。

二值信号灯:值为0或者1。与互斥锁类似,资源可用时为1,资源不可用时为0。

计数信号灯:值在0到n之间。用来统计资源,其值代表可用的资源数。

1 调用ftok生成键值key

2 信号灯的创建或者打开

3 信号灯的pv操作

4 信号灯的操作,设置信号灯的初始值,删除信号灯集

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值