【问题标题】:Are anonymous memory mapping prefaulted on linux?匿名内存映射是否在 Linux 上预先设置?
【发布时间】:2020-05-20 02:21:47
【问题描述】:

如果在Linux上使用mmap系统调用使用匿名内存映射分配内存:

mmap(NULL, 512*4096, MAP_READ|MAP_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 0, 0);

我想知道是否映射内存是预先设置好的,还是只有在程序访问映射的虚拟内存时才实际分配物理页面?

我问这个是因为在映射时我不知道程序是否会实际使用所有分配的内存。所以如果内核真的只在内存被访问的时候才为匿名映射分配物理内存,我就不用担心会耗尽物理内存。

【问题讨论】:

    标签: linux memory-management mmap page-fault


    【解决方案1】:

    我通过查看文件“/proc//smaps”进行了测试。因此,以下是一个经验性答案,可能不适用于所有内核配置。

    Linux 不预设匿名页面:物理内存分配仅在写入虚拟内存时发生。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-27
      • 1970-01-01
      • 1970-01-01
      • 2013-09-02
      • 1970-01-01
      • 2014-09-05
      • 2015-01-26
      • 1970-01-01
      相关资源
      最近更新 更多