情報処理試験を勉強していると、「実記憶管理って何?固定区画と可変区画ってどう違うの?」と混乱しがちです。この記事では、実記憶管理の2つの方式を日常の例え話と図解で整理し、試験で得点できる状態まで導きます。
対象試験と出題頻度
実記憶管理(固定区画/可変区画)は、応用情報技術者試験で出題されるテーマです。
OS(オペレーティングシステム)の記憶管理機能のうち、仮想記憶を使わずに主記憶を直接管理する方式として問われます。フラグメンテーションやメモリコンパクションとセットで出題されるのが定番です。
詳細をクリックして確認
応用情報技術者
★★★☆☆
ランクC(応用)余裕があれば覚える
用語の定義
実記憶管理(Real Memory Management)とは、一言で言うと
「物理的な主記憶(メモリ)の領域を、実行するプログラムに直接割り当てて管理する仕組み」
のことです。
イメージとしては、「駐車場の区画管理」です。
駐車場(主記憶)のスペースをどのように区切って、来場する車(プログラム)に割り当てるか。この「区切り方」に2つの方式があります。
固定区画方式は「すべての区画を同じサイズで事前に区切っておく駐車場」、
可変区画方式は「車のサイズに合わせてロープで区切りを変える駐車場」と考えてください。
📊 実記憶管理の基本情報
| 項目 | 内容 |
|---|---|
| 英語名 | Real Memory Management |
| 分類 | OSの記憶管理機能(実記憶) |
| 主な方式 | 固定区画方式(Fixed Partition)/可変区画方式(Variable Partition) |
| 関連用語 | フラグメンテーション、メモリコンパクション、スワッピング、オーバーレイ |
解説
コンピュータがプログラムを実行するには、プログラムを主記憶に読み込む必要があります。しかし主記憶の容量は有限であり、複数のプログラムが同時に動く環境では「どのプログラムにどれだけの領域を渡すか」をOSが管理しなければなりません。
この割り当て方法が「固定区画方式」と「可変区画方式」の2つに分かれます。
固定区画方式
主記憶をあらかじめ決まったサイズの区画に分割しておき、プログラム実行時にいずれかの区画を丸ごと割り当てる方式です。
管理が単純で高速に割り当てられる反面、プログラムが区画より小さい場合は残りの領域が無駄になります。この「区画内部の無駄」を内部フラグメンテーションと呼びます。
可変区画方式
プログラムのサイズに応じて、必要な分だけ主記憶を区切って割り当てる方式です。
区画内部の無駄は発生しませんが、プログラムの読み込みと解放を繰り返すうちに、小さな空き領域が飛び飛びに散らばります。これが外部フラグメンテーションです。
合計すれば十分な空き容量があるのに、連続領域が確保できずプログラムを読み込めない状態に陥ります。
図解:固定区画方式と可変区画方式の違い
固定区画方式
⚠ 区画1で40KB、区画3で70KBが無駄(内部フラグメンテーション)
可変区画方式
⚠ 空き合計220KBあるが飛び飛び(外部フラグメンテーション)
フラグメンテーションへの対策
可変区画方式で発生する外部フラグメンテーションの代表的な対策がメモリコンパクションです。散らばった使用中の領域を主記憶の一方に寄せて、空き領域を連続した1つの塊にまとめます。
ただし、コンパクション実行中はプログラムの移動とアドレスの再計算が必要になるため、処理負荷が高い点に注意してください。
メモリコンパクションのイメージ
コンパクション前
コンパクション後
※ 使用中の領域を一方に詰め、空き領域を1つにまとめる
割当てアルゴリズム(ファーストフィット/ベストフィット)
可変区画方式では、複数ある空き領域の中から「どの空き領域にプログラムを入れるか」を決めるアルゴリズムも重要です。代表的なものは以下の3つです。
| アルゴリズム | 選び方 | 特徴 |
|---|---|---|
| ファーストフィット (最初適合) |
空き領域リストを先頭から探索し、最初に見つかった十分な大きさの領域を割り当てる | 探索が速い。大きな空き領域が後方に残りやすい |
| ベストフィット (最適適合) |
全空き領域を走査し、要求サイズに最も近い(余りが最小の)領域を割り当てる | 無駄は小さいが、使いにくい微小な空きが多数残りやすい |
| ワーストフィット (最悪適合) |
最も大きい空き領域を割り当てる | 割り当て後も比較的大きな空きが残る |
2方式の比較まとめ
| 比較項目 | 固定区画方式 | 可変区画方式 |
|---|---|---|
| 区画の大きさ | 事前に固定 | プログラムに応じて可変 |
| メモリ効率 | 低い(内部に無駄が出る) | 高い(ぴったり割り当て可能) |
| フラグメンテーション | 内部フラグメンテーション | 外部フラグメンテーション |
| 管理の複雑さ | 単純 | やや複雑(割当アルゴリズムが必要) |
| 対策 | 区画サイズの見直し | メモリコンパクション |
では、この用語が試験でどのように出題されるか見ていきましょう。
💡 実記憶管理の核心を3行で
・固定区画方式は区画サイズが固定 → 内部フラグメンテーションが発生する
・可変区画方式はプログラムに合わせて区切る → 外部フラグメンテーションが発生する
・外部フラグメンテーションの対策がメモリコンパクション(領域を詰めて空きを連続化)
試験ではこう出る!
実記憶管理に関する問題は、応用情報技術者の午前問題で繰り返し出題されています。単独で「固定区画方式とは何か」を問うのではなく、主記憶管理に関する複数の用語の正誤判定として出される形式が中心です。
📊 過去問での出題実績
| 試験回 | 出題内容 | 問われたポイント |
|---|---|---|
| AP R3春期 午前 問18 |
主記憶管理に関する記述の正誤を問う問題。 | ・「ガーベジコレクション」の正しい定義が正解 ・「空き領域の結合=可変区画方式」がひっかけ(正しくはメモリコンパクション) |
| AP H28秋期 午前 問16 |
上記R3春期 問18と同一構成の問題(流用)。 | ・動的リンキングと動的再配置の説明を入れ替えたひっかけが定番 |
| AP R4春期 午前 問18 |
フラグメンテーションに関する記述の正誤を問う問題。 | ・「合計では十分な空きがあるのに連続領域を確保できない」が正解 ・固定長方式ではフラグメンテーションが起きないことも選択肢で問われた |
| AP H26秋期 午前 問17 |
固定区画方式でベストフィット割当て後の使用不能領域を計算する問題。 | ・100KB/200KB/300KB/400KBの区画に250KB/250KB/50KBを割り当てる計算問題 ・正解は250KB |
| AP R7秋期 午前 問5 |
ベストフィット方式の特徴を問う問題。 | ・ファーストフィットとの違いを正確に区別できるかがカギ |
📝 IPA試験での出題パターン
パターン1:「主記憶管理の用語の正誤判定」
可変区画方式・メモリコンパクション・ガーベジコレクション・動的リンキング・動的再配置などの定義を入れ替えた選択肢が並ぶ。ここだけは確実に押さえてください――「空き領域の結合」はメモリコンパクションであり、可変区画方式ではありません。
パターン2:「割当て後の空き領域の計算」
区画サイズとプログラムサイズが与えられ、ベストフィットやファーストフィットで割り当てた結果を計算させる形式。手を動かして1つずつ割り当てていけば確実に正解できます。
試験ではここまででOKです。各アルゴリズムの数学的な最適性の証明などは深追い不要です。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. 主記憶の実記憶管理に関する記述として、最も適切なものはどれでしょうか?
- A. 可変区画方式では区画サイズが固定であるため、プログラムが区画より小さい場合に内部フラグメンテーションが発生する。
- B. メモリコンパクションとは、主記憶上の不要なデータを自動的に削除してメモリを解放する処理である。
- C. 可変区画方式では、プログラムの割当てと解放を繰り返すことで外部フラグメンテーションが発生し、合計では十分な空き領域があっても連続した領域を確保できなくなることがある。
正解と解説を見る
正解:C
解説:
可変区画方式ではプログラムサイズに応じて領域を割り当てるため、解放後に小さな空き領域が飛び飛びに散らばる外部フラグメンテーションが発生します。合計すれば十分な容量があっても、連続領域が足りずプログラムを配置できなくなる――これがまさに外部フラグメンテーションの問題です。
選択肢Aは固定区画方式の説明です。「区画サイズが固定」「内部フラグメンテーション」は固定区画方式の特徴であり、可変区画方式には当てはまりません。選択肢Bはガーベジコレクションの説明と混同した内容です。メモリコンパクションは「使用中の領域を一方に詰めて空き領域を連続化する処理」であり、不要データの削除ではありません。
よくある質問(FAQ)
Q. 実記憶管理と仮想記憶管理は何が違いますか?
実記憶管理は物理的な主記憶の領域だけを対象にした管理方式です。一方、仮想記憶管理は補助記憶(HDDやSSD)の一部を主記憶の延長として利用し、物理メモリ以上のアドレス空間をプログラムに提供します。現在のOSはほぼ仮想記憶管理を採用していますが、実記憶管理は仮想記憶の土台となる概念であり、IPA試験では両方を対比して理解しているかが問われます。
Q. スワッピングやオーバーレイも実記憶管理の一部ですか?
IPAのシラバスでは、固定区画方式・可変区画方式に加えて、スワッピング方式とオーバーレイ方式も実記憶管理の手法として位置づけられています。スワッピングは実行待ちのプログラムを一時的に補助記憶へ退避させて主記憶を空ける方式、オーバーレイはプログラムを分割して必要な部分だけを入れ替えながら実行する方式です。どちらも主記憶の物理的な制約を乗り越えるための工夫という点で共通しています。
Q. ガーベジコレクションとメモリコンパクションは何が違いますか?
ガーベジコレクションは「プログラムが確保したが使わなくなったメモリ領域を自動的に回収する機能」で、JavaやPythonなどのプログラミング言語のランタイムが行う処理です。メモリコンパクションは「使用中の領域を移動して空き領域を連続化する処理」で、OSの記憶管理が行います。過去問では両者の定義を入れ替えたひっかけ選択肢が頻出なので、「回収=ガーベジコレクション」「移動して詰める=メモリコンパクション」と区別してください。
Q. 固定区画方式でも外部フラグメンテーションは発生しますか?
発生しません。固定区画方式では区画の大きさが最初から決まっており、割り当て単位が変わらないため、区画と区画の間に断片的な空き領域が生じる余地がありません。発生するのは「区画内部の使われない余り」である内部フラグメンテーションだけです。AP R4春期 午前問18でも、この点が選択肢の正誤判定に使われています。