文件系统API与/ dev / shm的mmap

时间:2018-08-17 07:04:47

标签: shared-memory mmap

我很难理解推荐在Linux系统上使用共享内存的方式,尤其是我应该如何共享它们。

  • /dev/shm由页面缓存支持。本质上,这是一个内存文件系统。
  • mmap()是一个系统调用,它允许创建一个新的虚拟内存块,该块由新的新内存或现有文件支持。

我喜欢/dev/shm,因为它使我可以使用几乎所有可用于常规文件系统的工具。 我也喜欢mmap,因为它允许我访问文件而无需缓冲。

我只是无法真正了解mmap中文件中/dev/shm的用法。

如果我想为一组进程创建共享内存,仅在/dev/shm中创建一个文件并使用所有现有的文件系统调用(openread就足够了,write,...)?考虑到子进程只需要一个与共享内存类似的文件接口。

为什么我看到大多数人mmap/dev/shm中共享记忆? write中的read / /dev/shm是否以任何方式进行缓冲?为什么不直接在其中直接open(/dev/shm/something)read() / write()

还可以让我的子进程同时通过共享API的read / write文件系统API(例如memcpy)在共享内存的不同位置同时写入吗?< / p>

基本上,我的最终目标是创建一个与远程文件大小相同的共享内存,然后让多个进程同时在共享内存中下载文件块,最后加载生成的文件进行处理。

0 个答案:

没有答案