linux进程maps,了解Linux / proc / id / maps

ff4f8474e952cd56ad3510015e69d3d6.png

泛舟湖上清波郎朗

每行/proc/$PID/maps描述进程或线程中连续虚拟内存的区域。每行都有以下字段:address           perms offset  dev   inode   pathname08048000-08056000 r-xp 00000000 03:0c 64593   /usr/sbin/gpmaddress - 这是进程地址空间中区域的起始和结束地址permissions - 描述如何访问区域中的页面。有四种不同的权限:读取,写入,执行和共享。如果禁用读/写/执行,-则会出现a而不是r/ w/ x。如果某个区域未共享,则为私有区域,因此p将显示a而不是s。如果进程尝试以不允许的方式访问内存,则会生成分段错误。可以使用mprotect系统调用更改权限。offset - 如果区域是从文件(使用mmap)映射的,则这是映射开始的文件中的偏移量。如果内存未从文件映射,则它只是0。device - 如果区域是从文件映射的,则这是文件所在的主要和次要设备编号(十六进制)。inode - 如果区域是从文件映射的,则这是文件编号。pathname - 如果区域是从文件映射的,则这是文件的名称。匿名映射区域的此字段为空。此外还有一些与喜欢的名字特殊的区域[heap],[stack]或[vdso]。[vdso]代表虚拟动态共享对象。它被系统调用用于切换到内核模式。这是一篇很好的文章:“什么是linux-gate.so.1?”你可能会注意到很多匿名区域。这些通常由mmap任何文件创建,但不附加到任何文件。它们用于许多杂项内容,例如共享内存或未在堆上分配的缓冲区。例如,我认为pthread库使用匿名映射区域作为新线程的堆栈。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值