メモリ管理におけるフラグメンテーションとメモリ割当て

フラグメンテーション(断片化)とは、メモリ領域の獲得と解放を繰り返すうちに、空きメモリ領域が細かく分断されて連続した大きな領域が失われる現象です。フラグメンテーションが進行すると、メモリ全体の空き容量の合計としては十分であっても、要求されたサイズの連続した空き領域が存在しないためにメモリ獲得に失敗(メモリ割当てエラー)することがあります。 可変長ブロック方式では、要求サイズに応じた領域確保と解放を繰り返すことで空き領域が虫食い状に分断されるため、外部フラグメンテーションが必ず発生します。 固定長ブロック方式では、あらかじめ決まったサイズで割り当てるため外部フラグメンテーションは発生せず、管理が単純で獲得・返却は高速です(ただしブロック内部に生じる内部フラグメンテーションは発生します)。 メモリ返却のたびにガーベジコレクション(コンパクション)を実行すると、メモリの移動やポインタ付け替えに膨大な処理時間がかかり、システムの実行性能が著しく低下するため現実的ではありません。

フラグメンテーションに関する記述のうち,適切なものはどれか。

出典令和4年度 春期 応用情報技術者試験 午前 問18
ア
可変長ブロックのメモリプール管理方式では,様々な大きさのメモリ領域の獲得や返却を行ってもフラグメンテーションは発生しない。
イ
固定長ブロックのメモリプール管理方式では,可変長ブロックのメモリプール管理方式よりもメモリ領域の獲得と返却を速く行えるが,フラグメンテーションが発生しやすい。
ウ
フラグメンテーションの発生によって,合計としては十分な空きメモリ領域があるにもかかわらず,必要とするメモリ領域を獲得できなくなることがある。
エ
メモリ領域の獲得と返却の頻度が高いシステムでは,フラグメンテーションの発生を防止するため,メモリ領域が返却されるたびにガーベジコレクションを行う必要がある。