【问题标题】:Do files in /dev/shm take up memory when grown with ftruncate but are not written?/dev/shm 中的文件在使用 ftruncate 增长但未写入时会占用内存吗?
【发布时间】:2020-02-22 14:00:01
【问题描述】:

我正在使用 mmap 创建共享内存段,我想知道是否可以预先创建我可能在 /dev/shm 中使用的所有段,而不会触发任何内存使用。我怀疑这可能是可能的原因是我知道大多数文件系统都有一个全零页面的概念,并且当您在进行任何写入之前最初增大文件以使文件不会因为这些而真正占用空间时,这是可能的孔页。但是对于 tmpfs(/dev/shm 的文件系统)是否如此?只要我不写信,我可以在 /dev/shm 中创建大文件而不触发内存使用吗?

【问题讨论】:

    标签: c linux posix shared-memory


    【解决方案1】:

    在 Linux 上,tmpfs 文件系统支持稀疏文件。仅调整文件大小不会分配内存(超出内部tmpfs 数据结构)。就像支持稀疏文件(有洞的文件)的常规文件系统一样,您要么必须实际写入数据,要么使用fallocate 来分配后备存储。据我所知,从 Linux 2.6 天开始就是这样。

    【讨论】:

    • 太好了,谢谢。即使您对文件进行映射,您是否知道这是否仍然有效?如果你映射它并锁定页面怎么办?我想锁定必须强制它......?
    猜你喜欢
    • 2018-11-17
    • 1970-01-01
    • 2017-08-26
    • 2013-08-11
    • 2020-09-30
    • 2017-08-28
    • 2012-04-02
    • 1970-01-01
    相关资源
    最近更新 更多