c++进程之间如何传递内存数据_技术文档丨Cyber RT 进程间通信

8c91c1fecf87f328cb18031e7a30ed5f.png

共享内存是指 (shared memory)在多处理器的计算机系统中,可以被不同中央处理器(CPU)访问的大容量内存。由于多个CPU需要快速访问存储器,这样就要对存储器进行缓存(Cache)

在Linux中,每个进程都有属于自己的进程控制块(PCB)地址空间(Addr Space),并且都有一个与之对应的页表,负责将进程的虚拟地址与物理地址进行映射,通过内存管理单元(MMU)进行管理。两个不同的虚拟地址通过页表映射到物理空间的同一区域,它们所指向的这块区域即共享内存。

进程通信是指进程之间的信息交换。PV操作是低级通信方式(P操作和V操作,P表示申请,V表示释放)。高级通信方式是指以较高的效率传输大量数据的通信方式。高级通信方法主要有以下三类:

  1. 共享存储

    在通信的进程之间存在一块可直接访问的共享空间,通过对这片共享空间进行写/读操作实现进程之间的信息交换。

    在对共享空间进行写/读操作时,需要使用同步互斥工具(如P操作,V操作),对共享空间的写/读进行控制。

  2. 消息传递系统

    在消息传递系统中,进程间的数据交换是以消息(Message)为单位的。程序员直接利用系统提供的一组通信命令(原语)来实现通信。

    操作系统隐藏了通信的实现细节,大大简化了通信程序编制的复杂性,因而获得了广泛的应用。在消息传递系统中,源进程可以直接或间接地将消息传送给目标进程。

  3. 管道通信系统

    管道通信是消息传递的一种特殊方式。所谓“管道”,是指用于连接一个读进程和一个写进程以实现它们之间通信的一个共享文件,又名pipe文件。它是读写进程的一个特殊文件(外存,数据量大),允许按照先来先服务的方式传送数据,也能使进程同步执行。

以下,ENJOY

2ae7e3c59ba038a70159376d5e4f80b9.png

用户基于Cyber RT进行开发时,会将自己的模块抽象为一系列的Component。这些Component既可以加载到同一个进程内运行,也可以加载到不同进程中运行。

目前,同主机不同进程的Component间默认通过共享内存进行通信。相比于其他进程间通信方式,共享内存具备以下几个优点:

  1. 由多个进程共享,适合多进程读/写;

  2. 通信过程中无系统调用,减少了运行态切换的开销;

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值