linux 跨主机共享内存,跨多台计算机共享内存?

我想在多台计算机周围共享某些内存区域,即C/C++项目.当计算机B上的某些东西访问当前在计算机A上的某个内存区域时,必须将其锁定在A上并发送给B.当它唯一的Linux可以兼容时,我很好.

提前致谢

解决方法:

您不能为简单的C/C++项目执行此操作.

通用计算机硬件没有直接支持此功能的物理属性:另一个系统无法读取一个系统上的内存.

为了使它们在共享内存的不同机器上看起来像C/C++程序,您必须编写提供此功能的软件.通常,您需要执行以下操作:

>在虚拟内存地址空间(每个进程)中分配一些页面.

>将这些页面标记为只读.

>设置处理程序以接收进程尝试写入只读内存时发生的异常. (此处理程序可能在操作系统中,作为某种内核扩展,或者它可能是您进程中的信号处理程序.)

>收到异常时,确定进程尝试写入内存的内容.将其写入页面(可能通过将其通过虚拟内存中的单独映射写入相同的物理内存,并将此额外映射标记为可写).

>通过网络通信向另一台机器发送消息,告知内存已更改.

>在写入内存的指令后继续执行.

此外,您需要确定如何处理内存一致性:如果两个进程几乎同时写入内存中的同一地址,会发生什么?如果进程A写入位置X然后读取位置Y,而几乎同时,进程B写入位置Y并读取X,他们看到了什么?如果这两个进程看到的数据不可能是单个时间内存写入序列的结果,那还可以吗?

最重要的是,这在时间上非常昂贵:存储需要异常处理和网络操作的内存需要数千倍,可能是正常存储到内存的数十万倍.每当他们写入此共享内存时,您的进程将以极其缓慢的速度执行.

标签:c-3,linux,memory,memory-management

来源: https://codeday.me/bug/20190725/1537822.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值