本文介绍了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?

谢谢!

推荐答案

那些是匿名映射,由带有 MAP_ANONYMOUS 标志的 mmap() 创建.在这种情况下,它们可能对应于映射二进制文件的 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 的详细输出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-05 17:07