Skip to the content.

最終更新日:2026年8月2日

まず結論

再配置とは、プログラムを主記憶へ読み込んだ位置に合わせて、プログラム内部のアドレス情報を補正する処理です。

基本情報技術者試験では、次の表現が決め手になります。

主記憶へロードする
ロード位置に合わせる
内部アドレスを補正する
→ 再配置

覚える一文はこれです。

プログラムを置いた場所に合わせて、内部アドレスを直すのが再配置。

直感的な説明

再配置は、引っ越し後に住所を書き換えるイメージです。

プログラムが、主記憶の0番地から配置される前提で作られていたとします。

ところが、実際には500番地から読み込まれた場合、内部で参照するアドレスも500番地分ずらす必要があります。

想定していた先頭位置
→ 0番地

実際の先頭位置
→ 500番地

内部アドレス
→ 配置位置に合わせて補正

この補正処理が再配置です。

定義・仕組み

なぜ再配置が必要なのか

主記憶には、OSやほかのプログラムがすでに配置されています。

そのため、新しく実行するプログラムが、毎回同じ位置へ読み込まれるとは限りません。

主記憶の空き位置が変わる
↓
プログラムの配置位置も変わる
↓
内部アドレスの補正が必要

ローダの役割

ローダは、実行可能プログラムを主記憶へ読み込み、実行できる状態にするプログラムです。

主な役割は次のとおりです。

  • 実行可能プログラムを主記憶へ読み込む
  • 必要な主記憶領域を確保する
  • ロード位置に合わせてアドレスを補正する
  • 実行開始位置へ制御を渡す
読み込む
→ ロード

配置位置に合わせて直す
→ 再配置

絶対アドレスと相対アドレス

絶対アドレスは、主記憶上の具体的な番地です。

相対アドレスは、プログラムの先頭位置からの距離で表します。

絶対アドレス
→ 主記憶上の具体的な番地

相対アドレス
→ プログラム先頭からの差

相対アドレスを利用すると、プログラムがどこへ配置されても、先頭位置を基準に参照先を求めやすくなります。

一方、絶対アドレスを含む部分では、配置位置に応じた補正が必要です。

再配置可能プログラム

ロード位置が変わっても、アドレスを補正することで実行できるプログラムを、再配置可能プログラムといいます。

決まった位置でしか動かない
→ 再配置が難しい

配置位置に合わせて補正できる
→ 再配置可能

このテーマは、基本情報技術者試験のOSやプログラム実行に関係する内容です。公式の出題範囲やシラバスは、IPA:基本情報技術者試験 から確認できます。

科目Aでどう出る?

科目Aでは、用語の説明から正しいものを選ぶ問題として出題されます。

再配置を選ぶ手掛かり

プログラムを主記憶へ読み込む
実際のロード位置
アドレス情報を補正する
配置先に合わせる

これらがあれば、再配置を考えます。

似た用語との切り分け

用語 主な意味
再コンパイル ソースコードから目的プログラムを作り直す
最適化 実行速度やメモリ使用量を改善する
再配置 ロード位置に合わせてアドレスを補正する
リロード プログラムやデータを再び読み込む
リンク 複数の目的モジュールやライブラリを結合する

問題文の動詞を見ると判断しやすくなります。

作り直す
→ 再コンパイル

効率を上げる
→ 最適化

配置位置へ合わせる
→ 再配置

もう一度読み込む
→ リロード

部品を結合する
→ リンク

どんな場面で使う?

複数のプログラムを実行する

主記憶では、複数のプログラムが同時に存在することがあります。

そのため、後から読み込まれるプログラムは、空いている位置へ配置されます。

プログラムA
→ ある領域を使用中

プログラムB
→ 別の空き領域へ配置

プログラムBの内部アドレス
→ 配置位置に合わせて補正

OSが主記憶を管理する

OSは、空いている領域を管理し、実行するプログラムを配置します。

配置位置が変わっても実行できるようにするため、再配置の考え方が必要です。

共有ライブラリを利用する

実行時にライブラリを読み込む場合も、実際に配置された位置を基準にアドレスを解決します。

試験では細かな実装よりも、

ロード後の位置に合わせてアドレスを直す

という役割を押さえれば十分です。

リンクとの違い

リンクは、複数の目的モジュールやライブラリを結合して、一つの実行可能プログラムを作る処理です。

再配置は、できあがったプログラムを主記憶へ置く際に、配置位置へ合わせてアドレスを補正する処理です。

複数の部品を一つにまとめる
→ リンク

主記憶上の位置に合わせて直す
→ 再配置

処理の流れで見ると、次のようになります。

ソースコード
↓ コンパイル
目的プログラム
↓ リンク
実行可能プログラム
↓ ロード・再配置
主記憶上で実行

静的再配置と動的再配置

再配置には、大きく分けて次の考え方があります。

静的再配置

プログラムを主記憶へ読み込むときに、アドレスを補正します。

ロード時に補正
→ 静的再配置

ロード後は、基本的に同じ位置で実行します。

動的再配置

実行中に、論理アドレスを物理アドレスへ変換します。

実行時に変換
→ 動的再配置

ベースレジスタなどを使い、プログラムが使う論理アドレスへ一定値を加えて、実際の物理アドレスを求めます。

科目Aでは、まず次の違いを押さえます。

ロード時に直す
→ 静的再配置

実行時に変換する
→ 動的再配置

よくある誤解・混同

再配置は再コンパイルのこと

違います。

ソースコードから作り直す
→ 再コンパイル

ロード位置に合わせて直す
→ 再配置

再配置では、ソースコードをコンパイルし直すとは限りません。

再配置は最適化のこと

違います。

最適化は、処理速度やメモリ使用量などを改善することです。

再配置は、アドレスを配置位置に合わせることです。

再配置はリロードのこと

違います。

リロードは、プログラムやデータを再び読み込むことです。

再配置は、読み込んだ位置に合わせてアドレスを補正することです。

再配置とリンクは同じ

違います。

外部参照を解決して部品を結合
→ リンク

主記憶上の配置位置へ合わせる
→ 再配置

すべてのアドレスを手作業で書き換える

実際には、ローダやアドレス変換機構が必要な補正を行います。

利用者が手作業で番地を書き換えるものではありません。

まとめ(試験直前用)

  • 再配置は、ロード位置に合わせて内部アドレスを補正する処理
  • プログラムは毎回同じ主記憶位置へ置かれるとは限らない
  • ローダは、読み込み・領域確保・再配置・実行開始を担当する
  • 絶対アドレスは具体的な番地
  • 相対アドレスはプログラム先頭からの距離
  • リンクは部品の結合、再配置は配置位置へのアドレス補正
  • 再コンパイルはソースから作り直す
  • 最適化は効率を改善する
  • リロードは再び読み込む
  • ロード時なら静的再配置、実行時なら動的再配置

リンクはプログラムをまとめる処理、再配置は置いた場所に合わせて直す処理。

© 2024-2026 stemtazoo. All rights reserved.