SMAPS未命名的内存段

时间:2010-05-07 08:38:52

标签: linux

我不知道这是否是提出这个问题的正确论坛,但我是stackoverflow的粉丝,因此决定继续在此发布。

如果我输出/ proc // smaps,我会发现几个没有任何名称的段,并且inode编号为0.根据linux内核文档,0表示没有inode与内存区域,与BSS(未初始化数据)的情况一样。

我尝试搜索BSS,但无法确切地了解它是什么。我得到的信息是BSS是负责整体化全局变量和静态变量的内存段。

我的问题是带有inode编号0的内存区域还包含什么?

我写了一个C程序,其中我得到以下内容: - (i)Malloc 4 Mb表示整数数组 (ii)Cat / proc // smaps (iii)在smaps中找到一个添加了inode编号为“0”的内存段。 (iv)将此数组的某些部分初始化为5。

STILL发现此内存段仅附加了inode编号0。另一个问题是这个内存段何时转换为堆?

1 个答案:

答案 0 :(得分:2)

带有inode编号0的映射是匿名映射 - 实际上是那些使用MAP_ANONYMOUS标记创建mmap()的映射。

这只是意味着它们与磁盘文件无关。 inode数量不会改变;对于该映射,它总是保持为0.

匿名映射不会转换为堆。事实上,“[heap]”只是内核在执行时设置并由brk()系统调用更改的匿名映射的便利标记。

相关问题