/proc/$pid/maps显示x86_64 linux上没有rwx权限的页面

/proc/$pid/maps显示x86_64 linux上没有rwx权限的页面,linux,memory-management,memory-leaks,Linux,Memory Management,Memory Leaks,/proc/$pid/maps显示在x86\u 64Linux上没有rwx权限的页面。 我注意到,当我在64位Linux上阅读/proc/$pid/maps时,我的内存页没有权限,但在32位Linux中,它们不存在 我试图监视进程的内存使用情况,但我感到困惑。为什么页面没有rwx权限。他们在消耗我的记忆 这是64位Linux的输出片段,用于“top” % cat /proc/21367/maps 3154200000-315420d000 r-xp 00000000 fd:00 4835776

/proc/$pid/maps
显示在
x86\u 64
Linux上没有
rwx
权限的页面。 我注意到,当我在64位Linux上阅读
/proc/$pid/maps
时,我的内存页没有权限,但在32位Linux中,它们不存在

我试图监视进程的内存使用情况,但我感到困惑。为什么页面没有
rwx
权限。他们在消耗我的记忆

这是64位Linux的输出片段,用于“top”

% 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
%cat/proc/21367/maps
3154200000-315420d000 r-xp 00000000 fd:00 4835776/lib64/libproc-3.2.7.so
315420d000-315440d000**--p**0000d000 fd:004835776/lib64/libproc-3.2.7.so
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映射是为了保持库的高效共享,并标记保护页,以便捕获缓冲区溢出

请记住,这些映射只使用部分虚拟地址空间,但实际上并不消耗系统内存

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