进程间通信,别说你只知道RPC

本文探讨了在Linux操作系统下,如何利用共享内存进行进程间通信,以实现更高效的通信方式。文章介绍了共享内存的原理、创建步骤、性能优势以及在实际应用中的例子,强调了其在减少数据复制和提高吞吐量方面的优势,同时也指出了需要额外的同步机制以确保访问安全。最后,提到了共享内存适用于单服务器部署的多进程场景。
摘要由CSDN通过智能技术生成

导读:

微服务架构下,依赖dubbo的rpc框架就能实现进程间通信。其实还有更快的进程间通信方式-共享内存,这值得我们去学习和借鉴思维模式。

前言:

本文讨论说明的操作系统为linux操作系统。“一切皆文件”的设计理念下的操作系统内的多进程通信,自然地会想到采用获取fd句柄的方式来实现。接下来先了解共享内存的原理,并分享一个采用共享内存通信的应用案例。

原理:

  • 多进程通过共享内存通信
    • 这是一个典型的采用共享内存方式实现进程间数据通信的过程:进程B将输入文件读入到共享内存区中,采用信号量通知进程A。进程A从共享内存区中读取数据写到输出文件中。这带来一个优势:用户态到内核态的数据拷贝,只发生了两次。
    • 那怎么实现的呢?以posix共享内存举例来看
    • 比把大象放冰箱少一步,共两步。第一步:先创建或者打开内存映射文件/共享内存区对象。第二步:调用mmap实现共享内存区映射到进程的地址空间。接下来就可以像访问内存一样,访问共享内存了。只是这块内存属于多进程共享。
    • 为了实现共享内存访问安全和有效性,我们需要用到锁或者信号量来协助。资源只能在同一时间被一个进程读、写。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值