【问题标题】:Shared memory between two Linux machines?两台Linux机器之间的共享内存?
【发布时间】:2019-01-28 01:06:15
【问题描述】:

我正试图弄清楚我如何能够在两台 Linux 机器之间使用共享内存。理想情况下,每台机器都有自己的共享内存段并运行两个进程(一个从机器的共享内存中读取,一个从机器的共享内存中写入)。当一台机器的共享内存被写入或更新时,我需要通知另一台机器并使其自己的共享内存与第一台机器的共享内存同步。

这可能吗?我该怎么做?

谢谢一百万!

【问题讨论】:

  • 你做了哪些研究?你已经尝试过什么了吗?
  • 这听起来很疯狂。在客户端/服务器配置中使用文件存储这些数据有什么问题?

标签: c process shared-memory


【解决方案1】:

我正试图弄清楚如何才能在两台 Linux 机器之间使用共享内存。

这是个坏主意。同步访问共享内存很困难;即使在一台机器上,您也很难防止多个客户端相互干扰。跨多台机器,情况只会变得更糟。

如果你真的想这样做,你基本上有两个选择:

  1. 简单的方法。 创建一个文件来表示共享内存并将其存储在网络文件共享中。使用mmap() 将其映射到每台机器的内存中。确保使用msync() 将更改刷新到磁盘并使缓存无效。

  2. 复杂的方式。 使用 Infiniband 链接连接机器并执行远程内存访问。具体操作方式取决于您使用的 Infiniband 供应商。

话虽如此,完全使用另一种方法可能会好得多。详细信息将取决于您的应用程序。

【讨论】:

  • 感谢您的帮助!您可以以任何方式向我指出任何可以帮助我弄清楚如何以您建议的第一种方式实现这一点的资源吗?我不太了解网络文件共享等。提前致谢!
猜你喜欢
  • 1970-01-01
  • 2014-10-13
  • 2012-03-22
  • 1970-01-01
  • 2014-05-08
  • 2010-12-24
  • 2015-02-19
  • 1970-01-01
相关资源
最近更新 更多