最終更新日:2026年8月7日
fe fe-technology computer-system
まず結論
オーバーレイ、ページング、スワッピングは、どれも主記憶を有効に使うための仕組みですが、何を単位に扱うかが違います。
| 用語 | 主に扱う単位 | 判断の合図 |
|---|---|---|
| オーバーレイ | プログラムを分割した部分 | 必要な部分だけ読み込む |
| ページング | 固定長のページ | 仮想記憶、ページ単位 |
| スワッピング | プロセス全体 | 一時停止、退避、再開 |
試験では、次のように切り分けます。
プログラムを分割して必要な部分だけ読む
→ オーバーレイ
固定長のページで管理する
→ ページング
プロセス全体を補助記憶へ退避する
→ スワッピング
さらに、オーバーレイ構造を図で問われたら、次の判断を追加します。
同じ主記憶領域を使うモジュール同士
→ 同時には主記憶に存在できない
→ 直接参照できない
別の主記憶領域を使うモジュール同士
→ 同時に存在できる
→ 参照できる
直感的な説明
主記憶は、作業机のようなものです。
机の広さには限りがあるため、大きなプログラムや多くの処理を同時に扱うには工夫が必要です。
オーバーレイ
大きな資料を章ごとに分け、今使う章だけ机に置くイメージです。
プログラム全体
├ 部分A
├ 部分B
└ 部分C
今使う部分だけ主記憶へ読み込む
ここで大切なのは、同時に使わない部分は、机の同じ場所を交代で使えることです。
たとえば、机の一つのスペースをモジュールBとモジュールCが共有するとします。
主記憶
┌────────────┐
│ 共通部分A │ ← 常に置いておく
├────────────┤
│ B または C │ ← 同じ場所を交代で使う
├────────────┤
│ 共通部分F │ ← 別の領域
└────────────┘
Bを使っているとき、その場所にはCは置けません。
Cを読み込むとBが上書きされます。
Bをロード
↓
同じ領域へCをロード
↓
Bは主記憶から消える
これが、オーバーレイ構造の図を読むときの基本イメージです。
ページング
資料を同じ大きさのページに分け、必要なページだけ机へ置くイメージです。
ページ1
ページ2
ページ3
...
スワッピング
一人分の作業セットを丸ごと机から片付け、別の作業セットと入れ替えるイメージです。
プロセスAを補助記憶へ退避
↓
プロセスBを主記憶へ読み込む
定義・仕組み
オーバーレイ
オーバーレイは、主記憶に収まらない大きなプログラムを複数の部分に分け、実行時に必要な部分だけを主記憶へ読み込む方式です。
大きなプログラム
↓ 分割
共通部分 + 部分A + 部分B + 部分C
同時に使わない部分を同じ主記憶領域へ交代で読み込むことで、限られた主記憶で大きなプログラムを実行します。
判断ポイントは次です。
プログラムを幾つかの部分に分割
+
指定された部分だけ読み込む
→ オーバーレイ
オーバーレイ構造では「同じ領域を使うか」を見る
オーバーレイ構造の図では、複数のモジュールが主記憶のどの領域に読み込まれるかが示されることがあります。
たとえば、次のような構造を考えます。
主記憶の上側
A
│
├─ B
│ ├─ D
│ └─ E
│
└─ C
---------------- ← 別の領域
F G
主記憶の下側
この図を読むときは、モジュール名そのものより、実行時にどの領域を共有するかを確認します。
同じ領域へ読み込まれるモジュールは、交代でその領域を使います。
Bを使う
↓
同じ領域にCを読み込む
↓
Bは上書きされる
したがって、同じ領域を共有するモジュール同士は同時に主記憶へ置けません。
一方、別の領域に置かれるモジュールなら同時に存在できます。
同じ領域
→ どちらか一方だけ
別の領域
→ 同時に存在できる
科目Aで「モジュールXからYを参照できるか」と問われたら、まず次を確認します。
XとYのロード領域が重なるか?
重なる
→ 同時に存在できない
→ 直接参照できない
重ならない
→ 同時に存在できる
→ 参照可能
この判断ができれば、オーバーレイ構造の図をすべて暗記する必要はありません。
ページング
ページングは、仮想記憶を実現する代表的な方式です。
プログラム側の仮想アドレス空間をページ、主記憶をページフレームという固定長の単位に分けます。
仮想記憶:ページ単位
主記憶 :ページフレーム単位
必要なページだけを主記憶へ配置するため、プログラム全体が主記憶に収まらなくても実行できます。
判断ポイントは次です。
固定長
+
ページ単位
+
仮想記憶
→ ページング
スワッピング
スワッピングは、実行中のプロセスを一時停止し、主記憶上の内容を補助記憶へ退避する方式です。
再び実行するときは、退避した内容を主記憶へ戻します。
主記憶上のプロセス
↓ スワップアウト
補助記憶
↓ スワップイン
主記憶へ戻す
判断ポイントは次です。
プロセスを一時停止
+
主記憶の内容を退避
+
再開時に戻す
→ スワッピング
このテーマは、基本情報技術者試験の「コンピュータシステム」に関係します。公式の出題範囲やシラバスは、IPA:基本情報技術者試験から確認できます。
科目Aでどう出る?
科目Aでは、説明文から用語を選ぶ問題に加えて、オーバーレイ構造の図からモジュールの参照可否を判断する問題があります。
何を単位に扱うかを見る
最初に、何を入れ替えているかを確認します。
| 問題文の表現 | 選ぶ用語 |
|---|---|
| プログラムを複数の部分に分ける | オーバーレイ |
| 固定長のページで管理する | ページング |
| プロセス全体を退避する | スワッピング |
オーバーレイ構造の図は「領域の重なり」を見る
参照可否を問う図では、矢印を追う前に主記憶の配置を確認します。
モジュールXとYが同じ領域を使う
→ 一方をロードすると他方が上書きされる
→ 同時に存在できない
→ 直接参照できない
逆に、領域が重ならなければ、両方を主記憶に置けます。
領域が重ならない
→ 同時に存在できる
→ 参照できる
試験では、次の順番で見ると判断しやすくなります。
1. 参照元モジュールの領域を見る
2. 参照先モジュールの領域を見る
3. 二つの領域が重なるか確認する
4. 重なるなら除外する
固定長が出たらページング
「固定長」は、ページングを選ぶ強い判断材料です。
プログラムと主記憶を固定長に分割
→ ページング
オーバーレイは、機能や処理のまとまりに沿ってプログラムを分けるため、固定長とは限りません。
一時停止・退避・再開ならスワッピング
次の表現が並んでいれば、スワッピングが有力です。
プログラムを一時停止
主記憶の内容を補助記憶へ退避
再開時に元へ戻す
試験中の判断手順
1. 分割対象はプログラムの部分か、固定長ページか、プロセス全体か
2. 固定長という表現があるか
3. 一時停止・退避・再開という表現があるか
4. 必要な部分だけ読むという表現があるか
5. オーバーレイ構造の図なら、参照元と参照先の領域が重なるか
どんな場面で使う?
オーバーレイ
主記憶容量が小さい環境で、大きなプログラムを実行するときに使われます。
プログラムのどの部分を同時に使うかを考えて分割し、同時に使わないモジュールには同じ主記憶領域を割り当てます。
現在の一般的なOSでは仮想記憶が広く使われていますが、基本情報技術者試験では、主記憶管理の考え方や図の読み取りとしてオーバーレイが問われることがあります。
ページング
現在のOSで広く使われる仮想記憶方式です。
プログラムから見ると大きな連続した記憶領域を使えるように見えますが、実際の主記憶上ではページ単位に分かれて配置されます。
スワッピング
複数のプロセスを切り替えて実行するときに、主記憶を空けるために使われます。
ただし、補助記憶とのデータ転送は主記憶内の処理より遅いため、頻繁に発生すると性能が低下します。
よくある誤解・混同
オーバーレイでは、モジュール同士を自由に参照できる
オーバーレイ構造では、同じ主記憶領域を共有するモジュール同士は同時には存在できません。
同じ領域を共有
→ 一方をロードすると他方が上書きされる
→ 直接参照できない
モジュール名の親子関係だけで判断せず、主記憶上で領域が重なるかを見ることが重要です。
オーバーレイとページングは同じ
どちらも必要な部分だけを主記憶へ置くように見えますが、分割方法と管理主体が異なります。
プログラムを論理的な部分に分ける
→ オーバーレイ
固定長のページに分けてOSが管理する
→ ページング
ページングとスワッピングは同じ
どちらも主記憶と補助記憶の間でデータを移動しますが、単位が異なります。
ページ単位
→ ページング
プロセス全体
→ スワッピング
ページイン・ページアウトとスワップイン・スワップアウト
用語が似ていますが、試験では次のように整理すると分かりやすいです。
| 用語 | 主な単位 |
|---|---|
| ページイン・ページアウト | ページ |
| スワップイン・スワップアウト | プロセス全体 |
スワッピングはCPUのプロセス切替えと同じ
CPUが実行対象を切り替えるコンテキストスイッチと、プロセスを主記憶から補助記憶へ退避するスワッピングは別の処理です。
CPUの実行対象を切り替える
→ コンテキストスイッチ
プロセスの記憶内容を補助記憶へ退避する
→ スワッピング
確認問題(基本情報技術者試験対策)
主記憶管理に関する説明として、スワッピングに該当するものはどれか。
- ア. プログラムを複数の部分に分け、必要な部分だけを主記憶へ読み込む
- イ. 仮想アドレス空間と主記憶を固定長の単位に分けて管理する
- ウ. 実行中のプロセスを一時停止し、主記憶上の内容を補助記憶へ退避する
- エ. 主記憶上の空き領域を連続した一つの領域にまとめる
▶ クリックして答えと解説を見る(ここを開く)
正解:ウ
プロセスを一時停止し、主記憶上の内容を補助記憶へ退避して、再開時に戻す方式はスワッピングです。
- アはオーバーレイです。
- イはページングです。
- エはメモリコンパクションに関する説明です。
オーバーレイ構造の確認
次のように、モジュールBとCが同じ主記憶領域を交代で使い、モジュールFが別の領域に配置される構造を考えます。
┌────────────┐
│ A │
├────────────┤
│ B または C │
├────────────┤
│ F │
└────────────┘
このとき、BとCは同時に主記憶へ存在できません。一方、BとF、CとFは別領域なので同時に存在できます。
試験では、参照可否を問われたら「モジュール名」よりも「領域が重なるか」を先に確認します。
まとめ(試験直前用)
- オーバーレイは、プログラムを分割して必要な部分だけ読み込む
- オーバーレイ構造では、同じ主記憶領域を共有するモジュール同士は同時に存在できない
- 参照可否は、参照元と参照先のロード領域が重なるかで判断する
- ページングは、固定長のページ単位で仮想記憶を管理する
- スワッピングは、プロセス全体を主記憶と補助記憶の間で入れ替える
- 固定長・ページ単位ならページング
- 一時停止・退避・再開ならスワッピング