pmap -xコマンドを使用して、Linuxx86-64上のプロセスのメモリマップを表示しようとしました。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行目は、ページ権限がない場合でも常に2MBのサイズになります。すべてのライブラリで、RSSは常にゼロのようです。最後の2行も同じサイズ(ベースページサイズ)と同じ権限(少数のライブラリにはrwマッピングがありません)があります。
誰かがこれについていくつかの説明がありますか?おそらく、読み取り専用保護を使用したマッピングは、ライブラリのメタデータを読み取るためにローダーによって行われ、実行可能権限を持つ部分は実際にはライブラリのコードであると感じています。私は間違っているかもしれません。
しかし、私にはその真ん中の列についての手がかりがありません。許可も使用法もありませんか?誰かがここに知恵の言葉を持っていますか?
また、匿名メモリ上にあり、モードビットが設定されていないことが報告されているページもいくつか見ました。これらは何を表していますか?