使用来自内核模块的用户进程的堆大小

时间:2012-05-15 03:34:23

标签: linux memory-management linux-kernel

我正在编写一个内核模块,它将接受用户进程id(PID)作为输入并转储该用户进程的所有地址空间,如堆​​栈,堆段。

我把mm->start_brk作为堆的开头,mm->brk作为堆的结尾,然后我看到,即使用户进程没有使用33页,堆大小显示为33页  (mm->brk - mm->start_brk)。 (我使用/proc/pid/maps验证了这一点)。堆栈的行为也类似。

那么有什么方法可以找出真正使用的堆从mm->start_brk开始,所以我只能转储使用过的堆。

1 个答案:

答案 0 :(得分:2)

进程可以使用brkmmap分配内存。后者不会更改堆,而是单独分配。

mm->mmap是由mmap创建的映射的链接列表。