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