Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 将页面堆在/proc/<;pid>/地图_Linux_Memory Management_Linux Kernel - Fatal编程技术网

Linux 将页面堆在/proc/<;pid>/地图

Linux 将页面堆在/proc/<;pid>/地图,linux,memory-management,linux-kernel,Linux,Memory Management,Linux Kernel,我想写一个程序,可以解析 /proc//的输出映射了,以便进行分类 将其分为不同类别: Image:该页面要么是二进制文件的映射,要么是它所需的库之一 映射文件:该页面映射特定文件,例如字体 堆栈 Heap 私人数据 可共享的 正如您可能已经猜到的,主要思想是开发一个与sysinternals的vmmap工具等价的工具 对于Linux 我使用pathname字段来确定页面可以与哪个类别关联 如果路径名与/proc//exe符号链接的路径相同,或者如果 它是一个依赖项,因此它会转到Image

我想写一个程序,可以解析
/proc//的输出映射了
,以便进行分类 将其分为不同类别:

  • Image
    :该页面要么是二进制文件的映射,要么是它所需的库之一
  • 映射文件
    :该页面映射特定文件,例如字体
  • 堆栈
  • Heap
  • 私人数据
  • 可共享的
正如您可能已经猜到的,主要思想是开发一个与sysinternals的vmmap工具等价的工具 对于Linux

我使用
pathname
字段来确定页面可以与哪个类别关联

如果
路径名
/proc//exe
符号链接的路径相同,或者如果 它是一个依赖项,因此它会转到
Image

如果
pathname
是一个文件且不是图像的一部分,则它是一个
映射文件

如果
pathname
与类似
[stack:
[heap]
的模式匹配, 然后页面分别是
堆栈

当我在寻找一些关于
/proc//maps
的信息时,我突然来了 这篇stackoverflow文章中,我发现如果您使用size参数调用malloc 高于某个阈值时,会创建一个私有匿名映射 增加堆的大小

  • 我如何知道匿名映射是独立堆还是其他
  • 我是否应该将所有匿名映射视为
    [heap]
    ?若否,如何分类?
  • 哪些页面可以归入
    私有数据
    可共享
    类别

  • 谢谢

    匿名映射
    可以通过
    mmap
    MAP\u anonymous
    标志来完成,它不是
    [heap]
    。问题是heap也是匿名映射。有文件备份映射和匿名映射,仅此而已。堆栈,堆-它们是匿名内存,它们有单独的名称,因为它们的特殊角色或处理它们的特殊API(sbrk)@ChrisTsui谢谢!我从[例如,匿名映射可能表示一个
    BSS
    段,因此不是
    @AlexHoppus你知道我如何实现与Windows上的
    vmmap
    相同的工作吗?似乎我不能依赖
    /proc//maps