本地通信 共享内存 消息队列 信号量

本文介绍了Linux系统中的共享内存机制,包括创建、链接、删除以及其高效性和生命周期。同时涉及消息队列和信号量的概念,强调了它们在处理并发和资源管理中的关键作用,特别是信号量的原子性和阻塞操作。
摘要由CSDN通过智能技术生成
只说相关函数和理论 具体实现建议自行尝试或者详细文章 这里推荐下”一只大喵咪1201“
共享内存

最快的通信方式(无需进入内核进行系统调用 不需要内核态与用户态之间的数据拷贝)

传递方式:内存中的共享内存空间 通过自身的物理地址 经页表映射到 双方进程的虚拟地址 然后二者就建立链接了

真正释放:只有映射为零才会真正删除但不会释放这块空间 生命周期随内核(重启释放)

创建:

引子:不止一口锅,吃这口锅里饭的有多少人,这口锅是哪部分人的,这伙人之前有没有锅,这口锅给没给过去

shmget创建共享内存 设置key进行标识 ftok生成key防止重复 size表示大小 

标志位有三种方式

IPC_CREAT:不存在 创建 存在 获取相关信息

IPC_EXCL:无法单独使用 必须与其他标志组合使用

IPC_CREAT | IPC_EXCL:不存在 创建 存在 错误返回(使用率高)

生命周期:随内核 不随进程

删除共享内存:ipcrm -m shimd(命令 手动)shmctl(函数 自动)

链接:shmat 链接 shmdt 断链

消息队列(了解) 

简述:一方把不同的通信内容一块块以队列的方式排好 另一方从队头一个接一个慢慢找(队头可跳)很随意 不是严格的先进先出

常用共享内存 消息队列的函数不想细说啦😝

信号量(了解)

这里先了解临界资源 临界区 共享资源 共享区

临界资源和共享资源的区别在于是否可重入 就是多个进程一起访问 临界资源不可 

临界区 访问临界资源的代码的区域 共享区就是hhhhh没有共享区这个名词

信号量就是资源计数器 表示现在还有多少资源

有人拿掉一个减一(p操作) 访问完释放后加一(v操作)

防止大家一起上来抢的局面 就必须排好队 所以pv操作具有原子性(一次性做完任务 不可以中止) 和阻塞操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值