Linux/proc/< pid>/maps的详细输出 [英] Output of Linux /proc/<pid>/maps in detail

查看:337
本文介绍了Linux/proc/< pid>/maps的详细输出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在下面,您可以看到正在运行的wu-ftpd的"cat proc/pid/maps"输出:

In the following, you can see the 'cat proc/pid/maps' output of my running wu-ftpd:

00400000-00427000 r-xp 00000000 ca:01 64883                              /usr/sbin/wu-ftpd
00626000-00627000 r--p 00026000 ca:01 64883                              /usr/sbin/wu-ftpd
00627000-00629000 rw-p 00027000 ca:01 64883                              /usr/sbin/wu-ftpd
00629000-00644000 rw-p 00000000 00:00 0
0245f000-02480000 rw-p 00000000 00:00 0                                  [heap]
7f1db9d70000-7f1db9d7c000 r-xp 00000000 ca:01 483644                     /lib/x86_64-linux-gnu/libnss_files-2.15.so
7f1db9d7c000-7f1db9f7b000 ---p 0000c000 ca:01 483644                     /lib/x86_64-linux-gnu/libnss_files-2.15.so
7f1db9f7b000-7f1db9f7c000 r--p 0000b000 ca:01 483644                     /lib/x86_64-linux-gnu/libnss_files-2.15.so
7f1db9f7c000-7f1db9f7d000 rw-p 0000c000 ca:01 483644                     /lib/x86_64-linux-gnu/libnss_files-2.15.so
7f1db9f7d000-7f1db9f7f000 r-xp 00000000 ca:01 483655                     /lib/x86_64-linux-gnu/libdl-2.15.so
7f1db9f7f000-7f1dba17f000 ---p 00002000 ca:01 483655                     /lib/x86_64-linux-gnu/libdl-2.15.so
7f1dba17f000-7f1dba180000 r--p 00002000 ca:01 483655                     /lib/x86_64-linux-gnu/libdl-2.15.so
7f1dba180000-7f1dba181000 rw-p 00003000 ca:01 483655                     /lib/x86_64-linux-gnu/libdl-2.15.so
7f1dba181000-7f1dba336000 r-xp 00000000 ca:01 483640                     /lib/x86_64-linux-gnu/libc-2.15.so
7f1dba336000-7f1dba536000 ---p 001b5000 ca:01 483640                     /lib/x86_64-linux-gnu/libc-2.15.so
7f1dba536000-7f1dba53a000 r--p 001b5000 ca:01 483640                     /lib/x86_64-linux-gnu/libc-2.15.so
7f1dba53a000-7f1dba53c000 rw-p 001b9000 ca:01 483640                     /lib/x86_64-linux-gnu/libc-2.15.so
7f1dba53c000-7f1dba541000 rw-p 00000000 00:00 0
7f1dba541000-7f1dba54d000 r-xp 00000000 ca:01 482456                     /lib/x86_64-linux-gnu/libpam.so.0.83.0
7f1dba54d000-7f1dba74d000 ---p 0000c000 ca:01 482456                     /lib/x86_64-linux-gnu/libpam.so.0.83.0
7f1dba74d000-7f1dba74e000 r--p 0000c000 ca:01 482456                     /lib/x86_64-linux-gnu/libpam.so.0.83.0
7f1dba74e000-7f1dba74f000 rw-p 0000d000 ca:01 482456                     /lib/x86_64-linux-gnu/libpam.so.0.83.0
7f1dba74f000-7f1dba758000 r-xp 00000000 ca:01 483641                     /lib/x86_64-linux-gnu/libcrypt-2.15.so
7f1dba758000-7f1dba958000 ---p 00009000 ca:01 483641                     /lib/x86_64-linux-gnu/libcrypt-2.15.so
7f1dba958000-7f1dba959000 r--p 00009000 ca:01 483641                     /lib/x86_64-linux-gnu/libcrypt-2.15.so
7f1dba959000-7f1dba95a000 rw-p 0000a000 ca:01 483641                     /lib/x86_64-linux-gnu/libcrypt-2.15.so
7f1dba95a000-7f1dba988000 rw-p 00000000 00:00 0
7f1dba988000-7f1dba9aa000 r-xp 00000000 ca:01 483652                     /lib/x86_64-linux-gnu/ld-2.15.so
7f1dbab9e000-7f1dbaba2000 rw-p 00000000 00:00 0
7f1dbaba8000-7f1dbabaa000 rw-p 00000000 00:00 0
7f1dbabaa000-7f1dbabab000 r--p 00022000 ca:01 483652                     /lib/x86_64-linux-gnu/ld-2.15.so
7f1dbabab000-7f1dbabad000 rw-p 00023000 ca:01 483652                     /lib/x86_64-linux-gnu/ld-2.15.so
7fff20555000-7fff20576000 rw-p 00000000 00:00 0                          [stack]
7fff205fe000-7fff20600000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]

有一些内存范围,例如:

There are some memory ranges, for example:

  • 00629000-00644000(第4行)或
  • 7f1dba95a000-7f1dba988000(/lib/x86_64-linux-gnu/libcrypt-2.15.so之后的第21行)

没有描述(例如堆,堆栈或共享库). 这些地区是什么?他们用什么?

which do not have a description (like heap, stack or the shared library). What are these regions? For what are they used?

谢谢!

推荐答案

这些是匿名映射,由mmap()使用MAP_ANONYMOUS标志创建.在这种情况下,它们可能对应于映射二进制文件的BSS段(例如,第一个是/usr/sbin/wu-ftpd的BSS段).

Those are anonymous mappings, created by mmap() with the MAP_ANONYMOUS flag. In this case they probably correspond to the BSS segments of the mapped binaries (eg the first one is the BSS segment of /usr/sbin/wu-ftpd).

BSS是映射为初始化为零的静态分配对象的地方-它是一个段,它不占用二进制文件本身的空间,因为没有意义存储零堆.

The BSS is where statically allocated objects initialised to zero are mapped - it's a segment that doesn't take up space in the binary itself, because there's no point in storing a heap of zeroes.

使用malloc()进行大量分配也可能导致匿名映射-堆可以满足少量分配,但是大型分配通常会获得自己的匿名映射.

It's also possible to have anonymous mappings resulting from large allocations made with malloc() - small allocations are satisfied from the heap, but large allocations often get their own anonymous mapping.

这篇关于Linux/proc/< pid>/maps的详细输出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆