基本情報技術者の勉強 記憶領域
現在のコンピュータはノイマン型コンピュータと呼ばれ、プログラム内蔵方式で構成されています。この方式では、補助記憶装置に保存されているプログラムを、主記憶の空き領域に読み込んで、実行していくことになります。これをロードと言います。
しかし、ただプログラムを主記憶に読み込めばいいわけではありません。主記憶にも限りがあるし、効率的に使っていく必要があります。
ここでは、プログラムを主記憶に読み込むときに、どのように記憶領域を管理しているのかを見ていきましょう。
記憶領域の割り当て
主記憶装置の記憶領域を効率的に使っていく手法にはいくつか種類あります。
基本情報技術者に出題されやすいのは、固定区画方式と可変区画方式です。
順番に見ていきましょう。
固定区画方式
固定区画方式はその名の通り、主記憶装置の記憶領域を固定区画に分ける方式です。区画のことをパーティションと言ったりもします。
固定区画方式では、あらかじめ決めたサイズで主記憶を分割しておきます。4 MBとか、 8 MBとか、決めて分割して置きます。その領域にプログラムをロードして実行していくのです。
単純な仕組みなので記憶管理はとても簡単ですが、あまり効率がいいとは言えません。例えば、6 MBのプログラムを読み込むときは 8 MBの領域を使用することになります。この場合、余っている 2 MB分の記憶領域が無駄になってしまいます。
可変区画方式
可変区画方式では、記憶領域を決められた大きさで区切るのではなく、プログラムをロードするタイミングで、必要なサイズのメモリ領域を割り当てます。
例えば、6 MBのプログラムをロードすれば、6 MB分の領域をそのまま割り当てることができます。
この方式ではめちゃくちゃ効率的にメモリ領域を使えると思いますよね?
しかし、可変区画方式にも問題はあるのです。
フラグメンテーション
その問題の一つがフラグメンテーションです。
この画像を見てください。左の画像では空き容量が 100 と 600 あり、合計で 700 あります。そして 200 のプログラム D を読み込んでいます。ここまでは問題ありません。
しかし、右の画像を見てください。プログラムは読み込んだ順に終了するとは限りません。なので、プログラム B よりも D が先に終了してしまった場合、空き領域が散らばった状態ができてしまうのです。
このような現象のことをフラグメンテーションといいます。合計の空き容量は 600 あるのに、400 までしかロードできません。
これを解決するためにメモリコンパクションを行います。
メモリコンパクションは、散り散りになった空き領域を一か所にまとめます。こうすれば 600 の空き領域を作ることができます。
まとめ
- 固定区画方式では、メモリ領域をあらかじめ決められた大きさに分割しておく
- 可変区画方式では、ロードするたびに必要なメモリ領域を割り当てる
- フラグメンテーションが起こるとメモリコンパクションで解決する
過去問に挑戦
記憶領域の動的な割当て及び解放を繰り返すことによって,どこからも利用されない記憶領域が発生することがある。このような記憶領域を再び利用可能にする処理はどれか。
- ガーベジコレクション
- スタック
- ヒープ
- フラグメンテーション
様々なサイズのメモリ資源を使用するリアルタイムシステムのメモリプール管理において,可変長方式と比べた場合の固定長方式の特徴として,適切なものはどれか。
- メモリ効率が良く,獲得及び返却の処理速度は遅く一定である。
- メモリ効率が良く,獲得及び返却の処理速度は遅く不定である。
- メモリ効率が悪く,獲得及び返却の処理速度は速く一定である。
- メモリ効率が悪く,獲得及び返却の処理速度は速く不定である。
引用元:平成24年春期 問23