为什么内存映射区域在Linux中增长下降
问题描述:
考虑this 因为这个区域映射文件就像动态加载的库,我觉得它应该理想地长大。这可以通过启动RLIMIT_STACK和堆开始之间的mmap区域来实现。在这种情况下会发生什么问题。为什么内存映射区域在Linux中增长下降
如果它增长下来,那么如何创建一个新的内存映射区域。假设我们希望将abc.so的代码映射到虚拟地址空间,那么我们必须创建sizeof(abc.so)空间,向下的方向以及从该区域底部开始的映射文件。 这是如何工作的?
答
你确定你没有在图表中将“向上”与“向上” 混淆在地址增加的意义上吗?请注意,该图有顶部的低地址 [编辑:其实,它有低的地址在底部 ,我的坏]。
映射区域朝向较低地址增长。为什么你觉得它应该在另一个方向发展?如果映射的 文件和堆在地址空间的相反方向上开始并朝向彼此增长,则可以在区域发生冲突之前最大化地址空间的利用率。
当你映射一个文件时,你只需映射一个地址范围 的文件(从低到高的地址,这就是你所期望的)。当您访问一个页面时,将发生页面错误,并且文件内容被复制到内存页面框架中。
我很确定地址0位于该图的底部.. – 2009-11-30 13:17:22
右边,堆栈也在向下的方向上增长,即朝向较低的地址。 – 2009-11-30 13:21:35
他们的眼睛是你失明的第一件事......对不起。 无论如何,这是非常随意的,因为它们是以块的形式分配的,所以堆和映射文件区域的增长方式是相当随意的。 – 2009-11-30 13:34:00