c - 如何在 Linux 上设置没有 root 权限的可编程 ram 磁盘

标签 c linux memory-management ram

<分区>

我需要在我的 C 应用程序中设置和配置一个 ram-disk。是否可以? 据我了解,ram-disk 只能由 root 设置、安装和调整大小。 我的应用程序不会有这种特权。 如果 ram-disk 不可能,是否有可以编程的 ram-disk 的替代品? 目的是让数据在不同时间和通过网络运行的多个应用程序中可用。由于数据很大(~100-150 GB),应用程序内部的 ram-disk 实现会将数据保存在内存中,下一个应用程序将只使用它。这将节省大量数据从硬盘写入和读取的昂贵费用。

在此方面将不胜感激。

编辑:问题陈述更清晰一些。进程A在machine1上运行,通过NFS在machine2上写入100GB左右的数据后退出。进程 B 在 machine1 上运行,并通过 NFS 从 machine2 读取此数据 (100GB)。如此巨大的数据写入和读取成为了瓶颈。我怎样才能减少这种情况?

最佳答案

使用shm_open 创建一个named 共享内存对象,然后使用ftruncate 设置您需要的大小。然后您可以mmap 部分或全部用于写入,关闭 它,然后再次shm_open 它(使用相同的名称)和 mmap 稍后在另一个进程中。完成后,您可以shm_unlink它。

关于c - 如何在 Linux 上设置没有 root 权限的可编程 ram 磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7159354/

相关文章:

c - parent 是否在 child 退出时看到管道eof?

linux - Linux磁盘I/O如何处理不同大小的文件

memory-management - 如何在 Golang 中实现内存池

c - 从 C 函数返回字符串

c++ - 如何定义线程局部静态变量?

c - 将 "complex"结构写入 FIFO

c++ - 带有 cmake 的独立静态库 (.a)

c - Linux 管道作为输入和输出

c++ - 是否可以与另一个进程共享现有的 RAM block ?

C TCP/IP 服务器绑定(bind)错误 -- 非套接字上的套接字操作