2014-04-01 179 views
5

当我看使用内存映射

执行cat/proc/PID /图进程的内存映射

有条目是这样的:

00-40336000 r-xp 00000000 b3:15 875  /system/lib/libm.so 
40336000-40337000 r--p 00014000 b3:15 875  /system/lib/libm.so 
40337000-40338000 rw-p 00015000 b3:15 875  /system/lib/libm.so 
40338000-40345000 r-xp 00000000 b3:15 789  /system/lib/libcutils.so 
40345000-40346000 r--p 0000c000 b3:15 789  /system/lib/libcutils.so 
40346000-40347000 rw-p 0000d000 b3:15 789  /system/lib/libcutils.so 
40347000-40355000 rw-p 00000000 00:00 0 
40355000-403bc000 r-xp 00000000 b3:15 877  /system/lib/libmedia.so 
403bc000-403bd000 ---p 00000000 00:00 0 
403bd000-403d0000 r--p 00067000 b3:15 877  /system/lib/libmedia.so 
403d0000-403d1000 rw-p 0007a000 b3:15 877  /system/lib/libmedia.so 
403d1000-403d5000 rw-p 00000000 00:00 0 
403d5000-403d8000 rw-p 00000000 00:00 0 

我明白.so代表进程映射的共享库。似乎每一个。所以有3个项目和它们的权限是 R-XP [R - P RW-P

那么,如何解读?我可以假设r-xp是库的代码部分,因为它具有x(执行)权限? r - p和rw-p怎么样,他们是数据部分?

空条目怎么样?例如,关于libmedia的最后6个条目有三个空的条目(00:00 0)。这些是什么?

403bc000-403bd000 ---p 00000000 00:00 0 
403bd000-403d0000 r--p 00067000 b3:15 877  /system/lib/libmedia.so 
403d0000-403d1000 rw-p 0007a000 b3:15 877  /system/lib/libmedia.so 
403d1000-403d5000 rw-p 00000000 00:00 0 
403d5000-403d8000 rw-p 00000000 00:00 0 
+0

这似乎是(至少部分)的部分,没有相关的文件可能是匿名的地图用于在运行时分配的内存。 –

回答

3

我可以假设R-XP是库的代码部分,因为它有 的x(执行)权限?

是的,但这被称为文本段(存储指令)。您还应该注意,它没有写权限,因为它不应该有。

r-p和rw-p怎么样,它们是数据段吗?

是的,这些段存储静态/全局变量。然而,不变的全局变量将被存储到r-p段中,因为它不应该被任何程序修改。

空条目怎么样?例如,关于 libmedia的最后6个条目有三个空的条目(00:00 0)。这些是什么? 这些可能是保护段(内核插入这些段以保护溢出情况)。 “p”表示其私有。

编辑 有关完整信息,你可能需要参考以下链接:

http://linux.die.net/man/5/proc