リンカ・ローダと実行形式

位置独立コード(PIC)の説明として正しいものはどれか。

  1. AどのCPUでも同じように動く機械語
  2. B実行中に自分の置き場所を移動し続ける機械語
  3. Cメモリのどの番地に読み込んでも、コードを書き換えずに正しく動くように作られた機械語
答えと解説を見る

正解:C. メモリのどの番地に読み込んでも、コードを書き換えずに正しく動くように作られた機械語

共有ライブラリは、プロセスごとに違う番地に読み込まれることがあります。位置独立コードでは、関数やデータを固定の番地ではなく、PCからの距離や、番地をまとめた表(GOT)を通して参照します。こうすると、読み込む番地が変わってもコードのページを書き換えずに済むので、物理メモリ上の1つのコピーを多くのプロセスで共有できます。

  • A. 機械語はCPUのISAごとに違います。
  • B. 置き場所を動かし続けるわけではありません。
  • C. 正しい。共有ライブラリに欠かせません。
この分野を解く 分野ページへ

リンカ・ローダと実行形式のほかの問題

  1. 共有ライブラリで使われるGOT(グローバルオフセットテーブル)の役割として正しいものはどれか。
  2. 動的リンクで、PLT(プロシージャリンケージテーブル)を使った遅延束縛(レイジーバインディング)を行う場合の説明として正しいものはどれか。
  3. Linuxで動的リンクのプログラムを起動するときに働く動的リンカ(ld.soなど)の役割として正しいものはどれか。
  4. ASLR(アドレス空間配置のランダム化)の目的として正しいものはどれか。
  5. 実行ファイルをPIE(位置独立実行ファイル)として作る主な理由はどれか。