カテゴリ: 4.記憶管理

フラグメンテーションに関して、過去問(H25秋AP午後問2)では、「メモリの確保や解放の処理を繰り返すと,サイズの小さな空きメモリが分散してしまい,サイズの大きな空きメモリの確保が難しくなることがある。このような現象をフラグメンテーションと呼ぶ。」とあります。


fragment・・・断片的。つまり途切れ途切れ

メモリ領域を以下のように3つの処理が使っていたとします。
(処理1)(処理2)(処理3)
■■■■|■■■■■■|■■|・・・
処理2が終わると
■■■■|        |■■|・・・
ここで、”処理2”よりメモリ領域の使用量が少ない新しい”処理4”が入ると
■■■■|■■■■  |■■|・・・
このように、メモリ領域が断片化する

対策はメモリコンパクションです。

■H27春DB午前
問5 フラグメンテーションに関する記述のうち,適切なものはどれか。
ア 可変長ブロックのメモリプール管理方式では,様々な大きさのメモリ領域の獲得や返却を行ってもフラグメンテーションは発生しない。
イ 固定長ブロックのメモリプール管理方式では,可変長ブロックのメモリプール管理方式よりもメモリ領域の獲得と返却を速く行えるが,フラグメンテーションが発生しやすい。
フラグメンテーションの発生によって,合計としては十分な空きメモリ領域があるにもかかわらず,必要とするメモリ領域を獲得できなくなることがある。
エ メモリ領域の獲得と返却の頻度が高いシステムでは,フラグメンテーションの発生を防止するため,メモリ領域が返却されるたびにガーベジコレクションを行う必要がある。

⇒正解は、ウ

・仮想記憶方式に関する過去問(H28春AP午前問18)に、以下の選択肢があります。どこが間違っているのでしょうか。  

エ ページングが繰り返されるうちに多数の小さな空きメモリ領域が発生することを,フラグメンテーションという。

ページングはページ単位で記憶領域を管理するため、小さな空きメモリ領域が発生しません。

H24秋AP午前

問18 ページング方式の仮想記憶を用いることによって,フラグメンテーションの問題を解決できる理由はどれか。
ア 一連のプログラムやデータを,不連続な主記憶に割り付けることができる。
イ 仮想記憶のページ数を主記憶のページ数よりも多くすることができる。
ウ プログラム全体を1ページに割り付けることができる。
エ プログラムのローディング時に主記憶を割り付けることができる。

⇒正解はア

過去問(H25秋AP午後問2)を見てみましょう。
〔メモリコンパクション〕
 メモリの確保や解放の処理を繰り返すと,サイズの小さな空きメモリが分散してしまい,サイズの大きな空きメモリの確保が難しくなることがある。このような現象を[ コ ]と呼ぶ。このとき,割当て済みのメモリブロックが連続するようにメモリブロックを移動し,移動したメモリブロックの後ろに大きな空きメモリを確保することをメモリコンパクションという(図5参照)。

memori

コンパクション(圧縮)という言葉がマッチしませんが、フラグメント化(断片化)した領域を再整理するものです。
応用情報技術者試験を勉強する成子
Windowsの機能で、デフラグというのもありますよね。
デフラグはデ・フラグメンテーションなので、逆フラグメントという意味ですから、同じことですか?
デフラグとメモリコンパクションは、どちらも考え方は同じで、断片化した領域を集めて再配置するものです。
メモリに関するものがメモリコンパクションで、Windowsデフラグにあるように、ディスク(ファイルシステム)に関するものがデフラグと考えればいいのではないでしょうか。

デフラグメンテーションに関して
■過去問(H19春AD午前問2)
問2 磁気ディスクのデフラグメンテーションをすることによって,期待できる効果はどれか。
ア エラーのあるクラスタを代替クラスタに置き換える。
イ ファイルの見かけの容量が減少する。
ウ ファイルの読み誤りが減少する。
エ ファイルを連続的に読み込むときのアクセス時間が短くなる。

⇒正解は、エ

■H20春AD午前
問2 デフラグメンテーションの説明はどれか。
ア エラーが起きるクラスタを別クラスタに再割付けする。
イ 使われていないクラスタを再配置する。
ウ 破損しているクラスタを削除する。
エ 物理的に分散して格納されているファイルを連続した領域に再配置する。

⇒ 正解はエ

あまり試験では問われないかもしれません。優先度は下げてもいいでしょう。

これと似たものに、フラグメンテーションの対策となるメモリコンパクションがあります。情報技術者試験でも、両者を分けていますので、別物と考えてください。

ガーベジコレクション(garbage collection)
garbage=ゴミ 
collection=収集
ゴミの収集つまり、どこからも使用されなくなったメモリ領域(garbage)を集めて(collection)、再び利用できるようにします。
ガーベジコレクションに関して過去問(H25秋AP午前問18)では、「記憶領域の動的な割当て及び解放を繰り返すことによって,どこからも利用できない記憶領域が発生することがある。このような記憶領域を再び利用可能にする機能」と述べられています。
また、過去問(H24秋高度午前1問7)では、「プログラム実行時の主記憶管理に関する記述」として,「プログラムが使用しなくなったヒープ領域を回収して再度使用可能にすることを,ガーベジコレクションという」と述べています。

参考ですが、参考ですが、Javaガーベジコレクションの機能を持っているので、自動でメモリ領域の解放が行われます。

試験には出ないでしょうが、「メモリリーク(Memory leak)」という言葉があります。”秘密をリークする”など、leakは漏れるの意味です。。過去問(平成18年午前問4)を参考にすると、メモリーリークは「アプリケーションやOSバグなどが原因で,動作中に確保した主記憶領域が解放されないことであり,これが発生すると主記憶中の利用できる部分が減少する」ことです。この対策の一つが、ガーベジコレクション(garbage collection)です。

平成28年秋期 午前 問16

問16 プログラム実行時の主記憶管理に関する記述として,適切なものはどれか。

ア 主記憶の空き領域を結合して一つの連続した領域にすることを,可変区画方式という。
イ プログラムが使用しなくなったヒープ領域を回収して再度使用可能にすることを,ガーベジコレクションという。
ウ プログラムの実行中に主記憶内でモジュールの格納位置を移動させることを,動的リンキングという。
エ プログラムの実行中に必要になった時点でモジュールをロードすることを,動的再配置という。

正解は、イです。

↑このページのトップヘ