リンカ・ローダと実行形式
位置独立コード(PIC)の説明として正しいものはどれか。
- AどのCPUでも同じように動く機械語
- B実行中に自分の置き場所を移動し続ける機械語
- Cメモリのどの番地に読み込んでも、コードを書き換えずに正しく動くように作られた機械語
答えと解説を見る
正解:C. メモリのどの番地に読み込んでも、コードを書き換えずに正しく動くように作られた機械語
共有ライブラリは、プロセスごとに違う番地に読み込まれることがあります。位置独立コードでは、関数やデータを固定の番地ではなく、PCからの距離や、番地をまとめた表(GOT)を通して参照します。こうすると、読み込む番地が変わってもコードのページを書き換えずに済むので、物理メモリ上の1つのコピーを多くのプロセスで共有できます。
- A. 機械語はCPUのISAごとに違います。
- B. 置き場所を動かし続けるわけではありません。
- C. 正しい。共有ライブラリに欠かせません。