[基本情報]再入可能・再配置可能・再帰的プログラムと仮想記憶・オーバーレイの違いを解説

エンジニア

基本情報技術者試験でよく出るけど、混同しやすい「再入可能プログラム」「再配置可能プログラム」「再帰的プログラム」、そして「仮想記憶」「オーバーレイ」について、まとめ

✅ 再入可能プログラム(Reentrant Program)とは

再入可能プログラムとは、「複数の実行単位(プロセスやスレッド)が、同時に同じプログラムコードを共有して実行できるプログラム」のことです。

  • プログラムのコード部分をメモリ上に1つだけ読み込み
  • 複数のユーザーやプロセスが同時に使える
  • 再入可能の条件:実行時のデータ(スタックや変数)が共有されず、個別に持たれる

例:OSに組み込まれる共有ライブラリなど

💡 ポイント:コードを共有しつつ、データは個別

✅ 再配置可能プログラム(Relocatable Program)とは

再配置可能プログラムは、「どのアドレスに配置されても動作できるプログラム」です。

  • 決まったメモリアドレスに依存しない
  • ロード時に使用するアドレスに合わせて自動的に修正される
  • 手続きの内部から自分自身を呼び出すことが出来る

💡 ポイント:プログラムの「引っ越し自由」

✅ 再帰的プログラム(Recursive Program)とは

再帰的プログラムは、「自分自身を呼び出すことで処理を進めるプログラム」です。

  • 終了条件が必要(ベースケース)
  • 各呼び出しはスタックに積まれて管理される
  • 数学的な処理や探索処理に使われる

// 例:再帰で階乗を求める関数(JavaScript) function factorial(n) { if (n === 0) return 1; return n * factorial(n - 1); }

💡 ポイント:自分を呼び出す関数!処理が「入れ子構造」になる

✅ 仮想記憶(Virtual Memory)とは

仮想記憶とは、「実際の物理メモリ(RAM)よりも大きなアドレス空間を使っているように見せる仕組み」です。

  • ハードディスクの一部を仮想メモリとして使用
  • 必要な部分だけを物理メモリに読み込む(ページング)
  • 主記憶装置の容量の大きさに制限がある時に有効な手段

💡 ポイント:メモリが足りなくても、あたかも「大容量」かのように使える!

✅ オーバーレイ(Overlay)とは

オーバーレイは、「メモリ容量が足りないときに、プログラムの一部を必要に応じて読み込んで実行する仕組み」です。

  • プログラムを複数のセクションに分ける
  • 実行時に必要な部分だけをメモリにロード
  • 古い時代のOSや、組み込みシステムでよく使われた

💡 ポイント:使うときだけ読み込む「メモリ節約術」!

📝 まとめ(用語比較)

用語特徴目的
再入可能プログラム同じコードを複数で共有して使えるメモリ効率化
再配置可能プログラム任意の場所に配置可能柔軟なロード
再帰的プログラム自分自身を呼び出すアルゴリズム実装
仮想記憶物理メモリ以上の領域を使えるメモリの有効活用
オーバーレイ必要な部分だけ読み込むメモリ節約
タイトルとURLをコピーしました