lieye_leaves 发表于 2014-07-09 11:08

那举个例子,如果我想从控制台上用cat mem显示内存信息时,我基本上是不可能的,因为系统后台在进行调度,当前进程应该是变化的,我只能靠运气了。
能否根据pgd 和mm_struct 等结构将不是当前进程的内存信息手工算出来。

humjb_1983 发表于 2014-07-09 11:44

lieye_leaves 发表于 2014-07-09 11:08 static/image/common/back.gif
那举个例子,如果我想从控制台上用cat mem显示内存信息时,我基本上是不可能的,因为系统后台在进行调度,当 ...
你具体想干嘛????

lieye_leaves 发表于 2014-07-09 12:35

本帖最后由 lieye_leaves 于 2014-07-09 12:38 编辑

我想了解各个进程的内存使用情况。

humjb_1983 发表于 2014-07-09 12:43

lieye_leaves 发表于 2014-07-09 12:35 static/image/common/back.gif
我想了解各个进程的内存使用情况。
物理内存,还是虚拟地址空间?
/proc/pid/smaps
/proc/pid/maps
中提供的信息应该比较清楚了吧。。。。

lieye_leaves 发表于 2014-07-09 13:09

本帖最后由 lieye_leaves 于 2014-07-09 13:23 编辑

humjb_1983 发表于 2014-07-09 12:43 static/image/common/back.gif
物理内存,还是虚拟地址空间?
/proc/pid/smaps
/proc/pid/maps


比较详细,但是主要都是虚拟地址空间中的数值,能否有虚拟地址和物理地址之间的映射信息。

humjb_1983 发表于 2014-07-09 13:45

lieye_leaves 发表于 2014-07-09 13:09 static/image/common/back.gif
比较详细,但是主要都是虚拟地址空间中的数值,能否有虚拟地址和物理地址之间的映射信息。
你是说页表中的内容么?

lieye_leaves 发表于 2014-07-09 14:05

那个信息能看到吗?当前进程能通过MMU映射,非当前进程能否计算出来,有的虚拟地址可能没有映射到物理内存的。

humjb_1983 发表于 2014-07-09 14:37

lieye_leaves 发表于 2014-07-09 14:05 static/image/common/back.gif
那个信息能看到吗?当前进程能通过MMU映射,非当前进程能否计算出来,有的虚拟地址可能没有映射到物理内存的 ...
每个进程的task_struct.pgd中都存放了其页目录的地址,通过pgd能逐个推算出每个PTE的内容,我记得网上应该有现成的内核模块可以实现相关功能。

zszkismet 发表于 2014-08-21 09:40

humjb_1983 发表于 2014-07-09 14:37 static/image/common/back.gif
每个进程的task_struct.pgd中都存放了其页目录的地址,通过pgd能逐个推算出每个PTE的内容,我记得网上应该 ...

请问楼上,这个模块叫什么名字,或搜什么关键字能搜到,谢谢了

humjb_1983 发表于 2014-08-21 13:58

大概搜了一下,看似有这个功能了?
http://lwn.net/Articles/267837/
google关键字 dump page table

页: 1 [2]
查看完整版本: 查看proc/pid/mem遇到的问题。