プログラムのモジュール単位に主記憶を割り当てる可変区画方式のコンピュータにおいて,五つのモジュールA〜Eを次の順序でロードしたり解放したりする。
最後のモジュールEをロードした時点で,主記憶の空き領域は何か所存在するか。
ここで,主記憶は500kバイトで初期状態では何もロードされていない。
また,モジュールは空き領域の先頭からロードするものとし,その他の条件は考慮しない。
〔ロードと解放の順序〕
Aのロード→Bのロード→Cのロード→Bの解放→Dのロード→Aの解放→Eのロード
〔モジュールの大きさ〕
モジュール|大きさ(kバイト)/A|200/B|100/C|150/D|80/E|90
正答1
解説
正解は1です。
可変区画方式で主記憶の割当てと解放を繰り返したときの空き領域を数える問題です。
主記憶は500kバイトで、モジュールは空き領域の先頭から順にロードします。
番地を0から500までのkバイト単位で追っていきます。
【計算】
Aのロード後:Aが0〜200を使い、空きは200〜500です。
Bのロード後:Bが200〜300を使い、空きは300〜500です。
Cのロード後:Cが300〜450を使い、空きは450〜500の1か所です。
Bの解放後:空きは200〜300(100)と450〜500(50)の2か所です。
Dのロード後:Dが200〜280を使い、空きは280〜300(20)と450〜500(50)です。
Aの解放後:空きは0〜200(200)、280〜300(20)、450〜500(50)の3か所です。
Eのロード後:Eが0〜90を使い、空きは90〜200(110)、280〜300(20)、450〜500(50)の3か所です。
【選択肢別解説】
1:○ Eをロードした時点の空き領域は、90〜200、280〜300、450〜500の3か所です。
2:× 4か所にはなりません。
Eは空き領域0〜200の先頭に入るので、空き領域の数は増えません。
3:× 5か所にはなりません。
解放した領域は、そのたびに後からロードしたモジュールで埋められています。
4:× 6か所にはなりません。
順番に追うと、空き領域は最大でも3か所です。
【ポイント】
可変区画方式では、割当てと解放を繰り返すと小さな空き領域が散らばります。
これを断片化(フラグメンテーション)といい、解消する処理をコンパクションといいます。