我很难理解推荐在Linux系统上使用共享内存的方式,尤其是我应该如何共享它们。
/dev/shm
由页面缓存支持。本质上,这是一个内存文件系统。mmap()
是一个系统调用,它允许创建一个新的虚拟内存块,该块由新的新内存或现有文件支持。我喜欢/dev/shm
,因为它使我可以使用几乎所有可用于常规文件系统的工具。
我也喜欢mmap
,因为它允许我访问文件而无需缓冲。
我只是无法真正了解mmap
中文件中/dev/shm
的用法。
如果我想为一组进程创建共享内存,仅在/dev/shm
中创建一个文件并使用所有现有的文件系统调用(open
,read
就足够了,write
,...)?考虑到子进程只需要一个与共享内存类似的文件接口。
为什么我看到大多数人mmap
在/dev/shm
中共享记忆? write
中的read
/ /dev/shm
是否以任何方式进行缓冲?为什么不直接在其中直接open(/dev/shm/something)
和read()
/ write()
?
还可以让我的子进程同时通过共享API的read
/ write
文件系统API(例如memcpy
)在共享内存的不同位置同时写入吗?< / p>
基本上,我的最终目标是创建一个与远程文件大小相同的共享内存,然后让多个进程同时在共享内存中下载文件块,最后加载生成的文件进行处理。