リンカ・ローダと実行形式
ELFのファイルにおける「セクション」と「セグメント」の違いとして正しいものはどれか。
- AセクションはWindows用、セグメントはLinux用の呼び方で、中身は同じである
- Bセクションはリンカが扱う細かい単位で、セグメントはローダがメモリに読み込む単位として権限の同じセクションをまとめたもの
- Cセグメントはディスク上にだけあり、メモリには読み込まれない
答えと解説を見る
正解:B. セクションはリンカが扱う細かい単位で、セグメントはローダがメモリに読み込む単位として権限の同じセクションをまとめたもの
ELFには2つの見方があります。リンカは.text、.rodata、.data、.bssなどの細かいセクションを単位に結合や再配置を行います。ローダはプログラムヘッダに書かれたセグメントを単位にメモリへ対応づけ、例えば読み取りと実行のセグメントに.textと.rodataを、読み書きのセグメントに.dataと.bssをまとめます。権限ごとにまとめると、ページ単位の保護を設定しやすくなります。
- A. どちらもELFの用語で、役割が違います。
- B. 正しい。リンクのための見方と実行のための見方です。
- C. セグメントこそメモリに読み込まれる単位です。