Linux中共享库的内存映射

jiawen :

当我使用查看进程的内存映射时

猫/ proc / pid /地图

有这样的条目:

40321000-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代表了流程映射的共享库。似乎每个.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 
曼托什·库玛(Mantosh Kumar):

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

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

r--p和rw-p分别是数据部分吗?

是的,这些段存储静态/全局变量。但是,常量全局变量将存储在r–p段中,因为它不能被任何程序修改。

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

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章