令和4年度 春期 応用情報技術者試験 午前 問題 問16

ジョブ群と実行の条件が次のとおりであるとき,一時ファイルを作成する磁気ディスクに必要な容量は最低何Mバイトか。

〔ジョブ群〕

[図表: bb_8_1]

〔実行の条件〕

  • (1) ジョブの実行多重度を 2 とする。
  • (2) 各ジョブの処理時間は同一であり,他のジョブの影響は受けない。
  • (3) 各ジョブは開始時に 50 Mバイトの一時ファイルを新たに作成する。
  • (4) [図表: bb_8_2] の関係があれば,ジョブXの開始時に作成した一時ファイルは,直後のジョブYで参照し,ジョブYの終了時にその一時ファイルを削除する。直後のジョブが複数個ある場合には,最初に生起されるジョブだけが先行ジョブの一時ファイルを参照する。
  • (5) [図表: bb_8_3] はジョブXの終了時に,ジョブY, ZのようにジョブXと矢印で結ばれる全てのジョブが,上から記述された順に優先して生起されることを示す。
  • (6) [図表: bb_8_4] は先行するジョブX, Y両方が終了したときにジョブZが生起されることを示す。
  • (7) ジョブの生起とは実行待ち行列への追加を意味し,各ジョブは待ち行列の順に実行される。
  • (8) OSのオーバヘッドは考慮しない。
〔ジョブ群〕の有向グラフ
図の説明テキスト

「〔ジョブ群〕」という見出しのついた有向グラフ。丸で囲まれたノードA〜Fがあり、以下の遷移(矢印)が描かれている。

  • AからB
  • AからC
  • BからD
  • BからE
  • CからE
  • DからF
  • EからF
実行の条件(4)の図
図の説明テキスト

実行の条件(4)の行内にある図。丸で囲まれた「X」から、丸で囲まれた「Y」への右向き矢印。

実行の条件(5)の図
図の説明テキスト

実行の条件(5)の行内にある図。丸で囲まれた「X」から、右斜め上の丸で囲まれた「Y」と右斜め下の丸で囲まれた「Z」へ、それぞれ矢印が分岐している。

実行の条件(6)の図
図の説明テキスト

実行の条件(6)の行内にある図。丸で囲まれた「X」とその下にある丸で囲まれた「Y」の2つから、右側にある丸で囲まれた「Z」へ、それぞれ矢印が合流している。

解答・解説

正解: ウ. 200

ジョブの実行順序と、各時点での一時ファイルの作成・削除のタイミングを時間ステップごとに追いかけ、磁気ディスクの必要容量の最大値を求めます。

前提条件の整理

  • 実行多重度は 2 であり、各ジョブの処理時間は同一(これを 1 ステップとする)です。
  • 各ジョブは 開始時 に 50 Mバイトの一時ファイルを作成します。
  • 先行ジョブの一時ファイルは、直後のジョブ(複数ある場合は最初に生起されるジョブのみ)が参照し、そのジョブの 終了時 に削除されます。

各ステップの実行とファイル容量の推移

ステップ 1:ジョブ A の実行

  • 実行ジョブ: A
  • 一時ファイル作成: A(50 Mバイト)
  • 現在の容量: 5050 Mバイト
  • 終了時: ジョブ A が終了し、実行の条件(5)により上から順に B、C が生起(待ち行列に追加)されます。

ステップ 2:ジョブ B, C の実行

  • 実行ジョブ: B, C (多重度 2 のため同時に実行)
  • 一時ファイル作成: B, C(各 50 Mバイト)
  • 現在の容量: A(50) + B(50) + C(50) = 150150 Mバイト
  • 終了時:
    • B, C が終了します。
    • ジョブ A の一時ファイルは、直後の最初のジョブである B が参照を終えたため、B の終了時に削除されます。
    • B の終了により D が生起し、B と C の両方が終了したことで E が生起します(待ち行列: D, E)。
  • ステップ終了時の残存ファイル: B, C(計 100100 Mバイト)

ステップ 3:ジョブ D, E の実行

  • 実行ジョブ: D, E
  • 一時ファイル作成: D, E(各 50 Mバイト)
  • 現在の容量: B(50) + C(50) + D(50) + E(50) = 200200 Mバイト (★ここが最大)
  • 終了時:
    • D, E が終了します。
    • ジョブ B の一時ファイルは、直後のジョブ D, E のうち先に生起された D によって参照され、D の終了時に削除されます。
    • ジョブ C の一時ファイルは、直後のジョブ E によって参照され、E の終了時に削除されます。
    • D と E の両方が終了したことで F が生起します。
  • ステップ終了時の残存ファイル: D, E(計 100100 Mバイト)

ステップ 4:ジョブ F の実行

  • 実行ジョブ: F
  • 一時ファイル作成: F(50 Mバイト)
  • 現在の容量: D(50) + E(50) + F(50) = 150150 Mバイト
  • 終了時: F が終了し、D, E, F のファイルが削除されて容量は 00 になります。

以上の推移から、ステップ 3 の実行開始時点(ジョブ D, E が一時ファイルを作成した直後)で必要なディスク容量が最大となり、その値は 200 Mバイト です。

各選択肢の解説

  • ア (100): 誤り。同時に2つのジョブしか実行されないと勘違いし、先行ジョブのファイル残存を考慮していない場合の数値です。
  • イ (150): 誤り。ステップ 2 やステップ 4 における容量ですが、全体のピーク(最大値)ではありません。
  • ウ (200): 正解。ステップ 3 の開始時点における最大容量です。
  • エ (250): 誤り。不要に古いファイルが残存し続けていると計算した場合の誤った数値です。

Spineチーム