1

重複の可能性:
共有ライブラリーのアドレス空間

実行中の共有ライブラリのメモリ レイアウトについて少し混乱しています。私が理解していることを入れさせてください。

.so ファイルは、各バイナリでコードが複製されていないため、単一のコピーが存在するファイルです。バイナリは GOT と他のテーブルを更新し、それで関数を使用します。

方法を理解しようとしている間。次のリンクを取得しましたhttp://www.openbsd.org/papers/nycbsdcon08-pie/mgp00010.html。これが表示された場合、すべての共有ライブラリがプロセス メモリに「mmap」されています。独自のメモリ空間になければならないので、これは明らかです。

BSS/Data セクションがある場合は、プロセスに固有であるため、プロセス間で複製する必要があります。.TEXT セクションはどうなりますか? 実行時に複製されますか、それともどこかにロードされ、各バイナリはそれを独自のユーザー空間にマップしますか?

4

0 に答える 0