понимание вывода pmap

Я пытался увидеть карту памяти процесса в Linux x86-64 с помощью команды pmap -x. Я запутался, глядя на вывод pmap. В частности, для записей для сопоставления динамических библиотек. Для них есть несколько записей (на самом деле 4 для всех, большинство из них, а некоторые имеют 3 записи). Ниже приведен пример.

  Address           Kbytes   RSS   Dirty Mode   Mapping

00000036ca200000      88      64       0 r-x--  libpthread-2.5.so
00000036ca216000    2044       0       0 -----  libpthread-2.5.so
00000036ca415000       4       4       4 r----  libpthread-2.5.so
00000036ca416000       4       4       4 rw---  libpthread-2.5.so

Вторая строка для каждой библиотеки всегда имеет размер 2 МБ, хотя у нее нет прав доступа к странице. Во всех библиотеках кажется, что его RSS ВСЕГДА равен нулю. Последние две строки также имеют одинаковый размер (который является базовым размером страницы) и одинаковые разрешения (несколько библиотек не имеют сопоставления rw).

Есть ли у кого-нибудь объяснение этому? У меня есть ощущение, что, возможно, сопоставление с защитой только для чтения выполняется загрузчиком для чтения метаданных библиотеки, в то время как часть с правами на выполнение фактически является кодом для библиотеки. Хотя я могу ошибаться.

Но я понятия не имею о среднем ряду. Без разрешения и без обычаев? У кого-нибудь есть мудрые слова?

Я также видел несколько страниц, о которых сообщается, что они находятся в анонимной памяти и не имеют установленного бита режима. Что они обозначают?

20
задан Alois Mahdal 26 October 2015 в 20:58
поделиться