I-26-7. メモリの共有制御とプログラムパーティション

複数のアプリケーションがメモリを共有するための制御方式として、固定長方式や可変長方式があることを示し、それぞれの特徴、利点と欠点について説明する。さらにプログラムパーティションの管理、ガベージコレクションといった話題にも言及する。

【学習の要点】

* メモリを共有して利用する際には、可変長と固定長の制御方式がある。

* メモリの使用時間が経過するにつれ、メモリ利用効率の悪いフラグメンテーションという症状がどちらの方式でも発生する。

* ガベージコレクションにより利用されていないメモリの管理をすることで、メモリの利用効率を改善する。

図I-26-7. 外部フラグメンテーションと内部フラグメンテーション

【解説】

1) メモリ共有制御

* メモリを共有して利用する際には、可変長と固定長の制御方式がある。

- 可変長の方式では、メモリを確保するブロックのサイズを変更できる。

- 固定長の方式では、メモリを確保するブロックのサイズは一定である。

* どちらの方式にもフラグメンテ―ションの問題がある

- 固定長で管理する場合には、内部フラグメンテーションが起こる。

固定長の場合、メモリ領域の固定長サイズと実際に必要なサイズが合わずに未使用の領域を残す。空きブロックが無くなった際に、実際には未使用の領域があっても割り当てができない。

- 可変長で管理する場合には、外部フラグメンテーションが起こる。

可変長の場合、メモリからのブロックの出し入れが続くと、未使用メモリの多くが小さなブロックに細分化されてしまい、連続したメモリ領域への要求に対応できない。

2) ガベージコレクション

* プログラムが使用しなくなった不要なメモリ領域を解放し、利用可能なメモリ領域を増やす技術である。

* プログラムミスにより、未解放のメモリ領域が増えていく状況(メモリリーク)によるエラーを防ぐために有効な仕組みである。

* ガベージコレクションは、Java, Perl, Python, Rubyなどの言語が実装している。

OSS Course Naviのコンテンツは IPA OSS モデルカリキュラムを基としています。

フォーラム会員企業専用

記事配信

コンテンツ配信

ユーザログイン