メインコンテンツへ
ソフトウェアOS応用

空きメモリ領域がアドレス順に[100KB][500KB][200KB][300KB]と並んでいる。新たに150KBの領域要求があったとき、ベストフィット方式で割り当てられる領域として正しいものはどれか。

ア.100KBの領域(先頭にあるため)
イ.200KBの領域(150KBを満たす中で最も小さい)正解
ウ.500KBの領域(最大領域から取り出す)
エ.300KBの領域(中間サイズだから)

解説

ベストフィットは「ピッタリサイズの服を選ぶ几帳面なショッピング客」。要求サイズ以上で最も近い(ぴったり)領域を選ぶことで断片化を抑える方針です。逆に最大領域を取るのがワーストフィット、最初に見つけた領域を取るのがファーストフィット。

なぜ イ が正解か

イが正解。ベストフィット(best fit)は要求サイズ150KBを満たす最小の空き領域を選ぶ。100KBは要求を満たせないので除外。残る[500KB][200KB][300KB]の中で要求を満たす最小は200KBなので、200KBの領域から150KBを切り出して残り50KBが空き領域として残る。

なぜ ア は間違いか

100KBは要求(150KB)より小さく割り当てられない。先頭にあっても要求を満たせなければ選択肢にすらならないのがメモリ管理の基本ルール。

なぜ ウ は間違いか

500KBから取り出すのはワーストフィット(worst fit)の方針。大きな領域から取ることで残る空きを大きく保つ戦略だが、ベストフィットとは逆の発想。

なぜ エ は間違いか

中間サイズだからという理由はどの割り当て戦略にも該当しない。ベストフィットの基準は「要求を満たす最小」であり、サイズの順序ではない。

出典: AI生成問題(学習用)