ジョブ群と実行の条件が次のとおりであるとき,一時ファイルを作成する磁気ディスクに必要な容量は最低何Mバイトか。
〔ジョブ群〕
図に示すとおり,ジョブA,B,C,D,E,Fが依存関係をもって実行される。
〔実行の条件〕
(1) ジョブの実行多重度を2とする。
(2) 各ジョブの処理時間は同一であり,他のジョブの影響は受けない。
(3) 各ジョブは開始時に50Mバイトの一時ファイルを新たに作成する。
(4) X→Y の関係があれば,ジョブXの開始時に作成した一時ファイルは,直後のジョブYで参照し,ジョブYの終了時にその一時ファイルを削除する。
直後のジョブが複数個ある場合には,最初に生起されるジョブだけが先行ジョブの一時ファイルを参照する。
(5) Xから上にY,下にZへ矢印が延びる図(X→Y,X→Zで,Yが上,Zが下に記述される)はジョブXの終了時に,ジョブY,ZのようにジョブXと矢印で結ばれる全てのジョブが,上から記述された順に優先して生起されることを示す。
(6) 上にX,下にYが並び共にZへ矢印が延びる図(X→Z,Y→Zで,Xが上,Yが下に記述される)は先行するジョブX,Y両方が終了したときにジョブZが生起されることを示す。
(7) ジョブの生起とは実行待ち行列への追加を意味し,各ジョブは待ち行列の順に実行される。
(8) OSのオーバヘッドは考慮しない。
正答3
解説
正解は3です。
ジョブの実行順と一時ファイルの作成・削除の時点を、時間の区切りごとに追跡します。
図では、AからBとCへ矢印が分かれ、BからDとEへ、CからEへ、DとEからFへ矢印が延びています。
Bが上、Cが下に描かれ、BからはD(上)とE(下)の両方に矢印があります。
【計算】
1区間目は、Aだけが実行され、Aの一時ファイルが作られます。
合計50Mバイトです。
Aが終わると、図の上から順にB、Cが生起されます。
2区間目は、多重度2なのでBとCが同時に実行されます。
Aのファイルは最初に生起されたBが参照するため、Bの終了まで残ります。
この区間はA、B、Cの3ファイルで150Mバイトです。
2区間目の終わりにBが終わり、Aのファイルが削除されます。
BとCの両方が終わるので、DとEが生起されます。
Bのファイルは最初に生起されたDが参照し、Cのファイルは直後のEが参照します。
3区間目は、DとEが実行され、DとEのファイルが新たに作られます。
この区間はB、C、D、Eの4ファイルで200Mバイトです。
3区間目の終わりにBとCのファイルが削除されます。
4区間目はFが実行され、D、E、Fの3ファイルで150Mバイトです。
最大は3区間目の200Mバイトです。
【選択肢別解説】
1:× 100Mバイトでは2ファイル分しかありません。
2区間目には3ファイル、3区間目には4ファイルが同時に存在するので不足します。
2:× 150Mバイトは、2区間目や4区間目の使用量です。
3区間目には4ファイルが同時に存在するため不足します。
3:○ DとEの実行中に、参照中のBとCのファイルと、新たに作られたDとEのファイルの4つが同時に存在します。
50Mバイト×4=200Mバイトが最低限必要な容量です。
4:× 250Mバイトは5ファイル分です。
どの時点でも同時に存在するファイルは最大4つなので、最低限の容量としては過大です。
【ポイント】
この種の問題は、区間ごとに「作成されるファイル」と「削除されるファイル」を書き出すと確実に解けます。
削除は参照するジョブの終了時なので、次のジョブが始まる時点まで前のファイルが残る点に注意します。