两台Linux机器之间共享内存?

时间:2018-08-21 19:33:38

标签: c process shared-memory

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

这可能吗?我该怎么办?

感谢一百万!

1 个答案:

答案 0 :(得分:1)

  

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

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

如果您确实要执行此操作,则实际上有两个选择:

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

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

总而言之,完全使用另一种方法可能会更好。详细信息取决于您的应用程序。