リンカ・ローダと実行形式
リンカが行う再配置(リロケーション)の説明として正しいものはどれか。
- Aコードとデータの最終的な番地が決まった後、命令やデータの中の番地を正しい値に書き換える
- Bプログラムを実行中に、別のコンピュータへ移して続きを実行する
- Cメモリが足りなくなったとき、ページをストレージに追い出す
答えと解説を見る
正解:A. コードとデータの最終的な番地が決まった後、命令やデータの中の番地を正しい値に書き換える
コンパイラは各ファイルを番地0から始まるものとして作り、ほかのファイルの関数や自分の変数の番地を使う場所を再配置情報として記録します。リンカはすべてのファイルを並べて実際の番地を決めた後、記録された場所ごとに正しい番地(またはPCからの距離)を計算して命令に書き込みます。動的リンクでは、同じような書き換えの一部を実行時に動的リンカが行います。
- A. 正しい。再配置情報の場所を書き換えます。
- B. それはプロセスの移送(マイグレーション)です。
- C. それはOSのページ置き換えです。