首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linux中共享库的内存映射

linux中共享库的内存映射
EN

Stack Overflow用户
提问于 2014-04-01 02:11:13
回答 1查看 4.6K关注 0票数 6

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

cat /proc/pid/映射

有这样的条目:

代码语言:javascript
复制
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)。这些是什么?

代码语言:javascript
复制
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 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-01 02:25:18

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

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

R-p和rw-p,它们是数据部分吗?

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

空条目呢?例如,关于libmedia的最后6个条目有三个空项(00:00 0)。这些是什么?这些可能是保护段(内核插入这些段以保护溢出场景)。"p"表示它的私有。

编辑以获取完整信息,您可能需要参考以下链接:

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22775570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档