为什么内存映射区域在Linux中增长

时间:2009-11-30 13:05:52

标签: linux mmap virtual-memory

考虑this 因为这个区域映射了像动态加载的库这样的文件,我觉得它应该理想地长大。这可以通过在RLIMIT_STACK和堆开始之间启动mmap区域来实现。在这种情况下会出现什么问题。

如果它变大,那么如何创建新的内存映射区域。假设我们希望在虚拟地址空间中映射abc.so的代码,那么我们必须在向下方向创建sizeof(abc.so)空间,并从该区域的底部开始创建映射文件。 这是怎么回事?

1 个答案:

答案 0 :(得分:1)

你确定你没有在图中用“up”混淆“up” 在增加地址的意义上?请注意,该图有 顶部的低地址[编辑:实际上没有,它有低 地址在底部,我的不好。

映射区域朝向较低地址增长。你为什么 觉得它应该向另一个方向发展?如果映射 文件和堆以相反的方向开始 解决空间并朝着彼此的方向发展,最大化 在区域碰撞之前解决空间利用问题。

当您映射文件时,您只需映射一个连续的地址范围 由文件支持(从低地址到高地址,这就是你 期待)。当您访问页面时,将发生页面错误 文件内容被复制到内存页面框架中。