HackerNews

共有ライブラリのロード時再配置 (2011)

Load-time relocation of shared libraries (2011)

https://eli.thegreenplace.net/2011/08/25/load-time-relocation-of-shared-libraries/


この記事では、現代のオペレーティングシステムがどうやって共有ライブラリをロード時に再配置できるかを説明しています。特に32ビットx86のLinux OSを例にとっていますが、一般原則は他のOSやCPUにも適用されます。共有ライブラリは実行可能ファイルとは異なり、特定のメモリアドレスにロードされることはなく、実行時にアドレスが決定されます。そのため、リンク時に共有ライブラリのアドレスを予測できず、これを解決するために動的ローダーが使用されます。動的ローダーは、プログラムが要求したときに共有ライブラリをディスクからメモリにロードし、新しいロード位置に適応させます。LinuxのELF共有ライブラリには、ロード時再配置と位置独立コード(PIC)の2つの主要アプローチがあり、この記事では主にロード時再配置について焦点を当てています。