戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

応用情報技術者 2012年 秋期 午前220


問題文

三つの媒体 A〜C に次の条件でファイル領域を割り当てた場合、割り当てた領域の総量が大きい順に媒体を並べたものはどれか。   〔条件〕 (1)ファイル領域を割り当てる際の媒体選択アルゴリズムとして、空き領域が最大の媒体を選択する方式を採用する。 (2)割当て要求されるファイル領域の大きさは、順に 90, 30, 40, 40, 70, 30 (Mバイト)であり、割り当てられたファイル領域は、途中で解放されない。 (3) 各媒体は容量が同一であり、割当て要求に対して十分な大きさをもち、初めは全て空きの状態である。 (4) 空き領域の大きさが等しい場合には,A,B,Cの順に選択する。

選択肢

A, B, C
A, C, B
B, A, C
C, B, A(正解)

🔒 解説は解答すると表示されます

最大空き領域方式【午前2解説】

正解の理由

最大空き領域方式は「現在の空き領域が最も大きい媒体」を選ぶため、容量が同一で初期に全て空きの場合、各割当後は「割り当て済み合計が最小の媒体」を選ぶのと等価です。したがって順次、以下の割当を行うと最終的な割当合計は C=110、B=100、A=90 となり、割当合計が大きい順は (C, B, A)になります。以降の節で各割当ごとの媒体別割当量を逐次示し、なぜこうなるかを明確にします。

解法ステップ

  1. 初期状態を A=0, B=0, C=0(各媒体の割当済み合計)とする。
  2. 各要求(90, 30, 40, 40, 70, 30)を順に処理する。容量が同一のため「空き最大媒体」は「割当合計が最小の媒体」と同義。
  3. 割当先が複数ある(割当合計が同値)場合は、優先順 A → B → C を適用する。
  4. 各要求ごとにどの媒体を選んだかと、その後の合計を記録する。
逐次割当(手順と結果)
  1. 要求 90:初期は A,B,C が同値 → 優先順で A を選択 → A=90, B=0, C=0
  2. 要求 30:最小は B,C(0)→ 優先順で B を選択 → A=90, B=30, C=0
  3. 要求 40:最小は C(0)→ C を選択 → A=90, B=30, C=40
  4. 要求 40:最小は B(30)→ B を選択 → A=90, B=70, C=40
  5. 要求 70:最小は C(40)→ C を選択 → A=90, B=70, C=110
  6. 要求 30:最小は B(70)→ B を選択 → A=90, B=100, C=110
最終合計:C=110 > B=100 > A=90 となり、よって並びは C, B, A(選択肢 )。

選択肢別の誤答解説

  • ア: A, B, C
    誤りです。もし A が最も大きくなるなら最後に A が他より大きな追加割当を受けている必要がありますが、逐次割当の結果 A は最初の 90 だけで終わり、C が 70 と 40 を受け取るため A が最大になることはありません。
  • イ: A, C, B
    誤りです。A が最も大きく、C が B より大きいという順序ですが、逐次処理では C が 110、B が 100、A が 90 であり A は最小です。したがってこの順序とは矛盾します。
  • ウ: B, A, C
    誤りです。B が最も大きいとするには B が合計110以上を受ける必要がありますが、実際は B は 30+40+30 = 100 にとどまります。逐次の割当ルール上、C が 70 を受け取る場面があり C が最大になります。
  • エ: C, B, A
    正しい順序です。上の逐次計算と一致します(詳細は「解法ステップ」を参照)。

よくある誤解

  • 「最初に A に 90 を割り当てた後は次に C を選ぶ」と考える誤り
    実際は A が 90、B と C が 0 のとき B と C が同順位であり、優先順 A→B→C により B が次に選ばれます。これが誤答発生の最も多い原因です。
  • 空き容量比較を「割当済み合計が大きい方を選ぶ」と逆に理解するミス
    本方式は「空きが最大」なので、割当済み合計が小さい媒体を選ぶのが正解です。
  • 同容量でも途中での解放を想定する誤り
    問題で「途中で解放されない」と明記されている点を見落とすと入れ替わりがあると誤認します。

補足コラム

  • 等容量の媒体に対する「最大空き領域方式」は実装上、各媒体の“現在の割当合計”を追跡し、最小のものを選べばよく、これにより比較が容易になります。
  • 実際に検算するための簡単なPythonシミュレーション例を示します(学習用)。
requests = [90, 30, 40, 40, 70, 30]
names = ['A','B','C']
alloc = {'A':0,'B':0,'C':0}
for r in requests:
    # 空き最大は割当合計が最小の媒体を選ぶ
    # 同値時の優先順は A,B,C
    target = min(names, key=lambda n: (alloc[n], names.index(n)))
    alloc[target] += r
    print(f"req {r} -> {target}, totals: {alloc}")
print("final order:", sorted(alloc.items(), key=lambda x:-x[1]))

FAQ

Q1: 容量が異なる場合はどうするべきですか?
A1: 各媒体の「現在の空き容量(絶対値)」を比較して最大のものを選びます。等容量の場合のみ「割当合計が最小」と同義になります。
Q2: 同値時の優先順が異なれば結果は変わりますか?
A2: はい。優先順は割当結果に直接影響するため、異なる優先順では別の媒体が同値時に選ばれ、最終順序が変わる可能性があります。
Q3: この方式は負荷分散に適していますか?
A3: 比較的均等に割り当てられる傾向がありますが、大きな要求が偏ると一部媒体に集中することもあり、用途に応じて他方式(ラウンドロビン、最小割当など)と比較検討する必要があります。

関連キーワード: 最大空き領域, 空き領域選択, ファイル割当て, 割当アルゴリズム, タイブレークルール
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

応用情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について