基本情報技術者試験でよく出るけど、混同しやすい「再入可能プログラム」「再配置可能プログラム」「再帰的プログラム」、そして「仮想記憶」「オーバーレイ」について、まとめ
✅ 再入可能プログラム(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や、組み込みシステムでよく使われた
💡 ポイント:使うときだけ読み込む「メモリ節約術」!
📝 まとめ(用語比較)
用語 | 特徴 | 目的 |
---|---|---|
再入可能プログラム | 同じコードを複数で共有して使える | メモリ効率化 |
再配置可能プログラム | 任意の場所に配置可能 | 柔軟なロード |
再帰的プログラム | 自分自身を呼び出す | アルゴリズム実装 |
仮想記憶 | 物理メモリ以上の領域を使える | メモリの有効活用 |
オーバーレイ | 必要な部分だけ読み込む | メモリ節約 |