我希望能够在多台计算机之间共享特定的内存区域,也就是针对 C/C++ 项目。当计算机 B 访问当前位于计算机 A 上的某个内存区域时,必须在 A 上将其锁定并发送到 B。如果仅限于 Linux 兼容性,那我很满意。
谢谢! :D
谢谢! :D
对于简单的C/C++项目,您无法这样做。
通常计算机硬件没有直接支持此功能的物理属性:一个系统上的内存不能被另一个系统读取。
为了使不同机器上的C/C++程序看起来像是共享内存,您需要编写提供此功能的软件。通常,您需要执行以下操作:
此外,您还需要确定如何处理内存一致性:如果两个进程几乎同时写入内存中的同一地址,会发生什么?如果进程A将X位置写入,然后读取Y位置,而几乎在同一时间,进程B将Y位置写入并读取X位置,他们会看到什么?如果两个进程看到不可能是单个时间序列对内存的写入结果的数据,这是否可以接受?
最重要的是,这需要大量的时间支出:需要进行异常处理和网络操作的内存存储需要比正常内存存储花费多很多,可能高达数千次或数十万次。每当进程写入此共享内存时,您的进程将非常缓慢地执行。
正如评论中所提到的,有软件解决方案。这些解决方案利用节点处理器中的分页硬件来检测访问,并使用本地网络结构传播内存更改。另一种硬件替代方案是反射性内存 - 您可以在此处阅读更多信息:
https://en.wikipedia.org/wiki/Reflective_memory http://www.ecrin.com/embedded/downloads/reflectiveMemory.pdf
http://www.dolphinics.com/solutions/embedded-system-reflective-memory.html
反射式内存提供低延迟(每个跳一微秒左右)的环形或树形配置。