Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了/ proc / $pid / maps显示x86_64 linux上没有rwx权限的页面大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

/ proc / $pid / maps显示x86_64 linux上没有rwx权限的页面. 我注意到当我在64位linux上读取/ proc / $pid / maps时,我有没有权限的内存页面,但是在32位linux中,它们不在那里. 我正在尝试监视我的进程的内存使用情况,但我很困惑.为什么有没有rwx权限的页面.他们正在消耗我的记忆! 这是64位Linux输出的“顶级”片段 % cat /p
/ proc / $pid / maps显示x86_64 linux上没有rwx权限的页面.
我注意到当我在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映射以保持库可高效共享并标记保护页,从而可以捕获缓冲区溢出.

请记住,这些映射仅使用部分虚拟地址空间,但它们实际上并没有消耗系统内存.

在这里您可以找到完整的解释:

http://www.greenend.org.uk/rjk/tech/dataseg.html

大佬总结

以上是大佬教程为你收集整理的/ proc / $pid / maps显示x86_64 linux上没有rwx权限的页面全部内容,希望文章能够帮你解决/ proc / $pid / maps显示x86_64 linux上没有rwx权限的页面所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。