フラグメンテーション(断片化)
メモリのフラグメンテーションとは
フラグメンテーション(英:fragmentation)とは、メモリの管理上の単位が小さく分割されてしまい、そのままでは有効活用できない状態のことをいいます。
プログラム内蔵方式を採用しているコンピュータは、プログラムを実行するとき補助記憶装置に保存してあるプログラムを主記憶装置(メインメモリ)にロードしてから実行します。
このとき、主記憶装置(メインメモリ)にロードしたプログラムがロードした順番に終了するとは限りません。
例えば、次の図のように「プログラムA」「プログラムB」「プログラムC」「プログラムD」の順番に主記憶装置にロードし、各プログラムを実行したとします。
そして、「プログラムB」と「プログラムD」の処理が終了すると、次の図のように「プログラムB」と「プログラムD」をロードしていた領域は空き領域に変わります。
その結果、本来であれば主記憶装置には合計「11MB」の空き領域があるので「10MB」の「プログラムE」をロードできるはずだが、空き領域がバラバラになっているため「プログラムE」をロードすることができません。
このような現象をフラグメンテーション(断片化)といいます。
フラグメンテーションはメモリだけではなく、ハードディスクなどのストレージ(外部記憶装置)でも発生する現象です。
メモリコンパクションとは
フラグメンテーション(断片化)を解消するための手法がメモリコンパクションです。
メモリコンパクションは、ロードされているプログラムを再配置します。
次の図はメモリコンパクションのイメージ例です。
メモリコンパクションにより、ロードされているプログラムが再配置され、小さく分割されてしまった空き領域が連続した1つの領域になっています。その結果、「10MB」の「プログラムE」をロードすることが可能になりました。