gpt4 book ai didi

linux - SMAPS 未命名的内存段

转载 作者:太空狗 更新时间:2023-10-29 12:22:00 28 4
gpt4 key购买 nike

我不知道这是不是问这个问题的正确论坛,但我是 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 发现此内存段仅附加了编号为 0 的 inode。另一个问题是此内存段何时转换为堆?

最佳答案

inode 编号为 0 的映射是匿名映射 - 本质上是那些使用 MAP_ANONYMOUS 标志创建到 mmap() 的映射。

这只是意味着它们不与磁盘文件相关联。 inode 编号不会改变;对于该映射,它将始终保持为 0。

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

关于linux - SMAPS 未命名的内存段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2787241/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com