/ proc / $pid / maps显示x86_64
linux上没有rwx权限的页面.
我注意到当我在64位linux上读取/ proc / $pid / maps时,我有没有权限的内存页面,但是在32位linux中,它们不在那里.
我注意到当我在64位linux上读取/ proc / $pid / maps时,我有没有权限的内存页面,但是在32位linux中,它们不在那里.
我正在尝试监视我的进程的内存使用情况,但我很困惑.为什么有没有rwx权限的页面.他们正在消耗我的记忆!
这是64位Linux输出的“顶级”片段
% cat /proc/21367/maps 3154200000-315420d000 r-xp 00000000 fd:00 4835776 /lib64/libproc-3.2.7.so <br/> 315420d000-315440d000 **---p** 0000d000 fd:00 4835776 /lib64/libproc-3.2.7.so <br/> 315440d000-315440e000 rw-p 0000d000 fd:00 4835776 /lib64/libproc-3.2.7.so
请指教.
解决方法
这些映射用于共享库:
通常,对于每个加载的共享库,我们将有四个映射:
3b7cc00000-3b7cd86000 r-xp 00000000 fd:00 661350 /lib64/libc-2.12.so 3b7cd86000-3b7cf86000 ---p 00186000 fd:00 661350 /lib64/libc-2.12.so 3b7cf86000-3b7cf8a000 r--p 00186000 fd:00 661350 /lib64/libc-2.12.so 3b7cf8a000-3b7cf8b000 rw-p 0018a000 fd:00 661350 /lib64/libc-2.12.so
第一个是具有可执行权限的代码段,第二个是PROT_NONE(无权限)映射,最后两个是数据段(只读部分和读写).
创建PROT_NONE映射以保持库可高效共享并标记保护页,从而可以捕获缓冲区溢出.
请记住,这些映射仅使用部分虚拟地址空间,但它们实际上并没有消耗系统内存.
在这里您可以找到完整的解释:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。