応用情報技術者試験 令和4年春 午前問16 解説付き過去問
問題
ジョブ群と実行の条件が次のとおりであるとき、一時ファイルを作成する磁気ディスクに必要な容量は最低何Mバイトか。
〔ジョブ群〕

〔実行の条件〕
〔ジョブ群〕

〔実行の条件〕
- ジョブの実行多重度を2とする。
- 各ジョブの処理時間は同一であり、他のジョブの影響は受けない。
- 各ジョブは開始時に50Mバイトの一時ファイルを新たに作成する。
- の関係があれば、ジョブXの開始時に作成した一時ファイルは、直後のジョブYで参照し、ジョブYの終了時にその一時ファイルを削除する。 直後のジョブが複数個ある場合には、最初に生起されるジョブだけが先行ジョブの一時ファイルを参照する。
- はジョブXの終了時に、ジョブY、ZのようにジョブXと矢印で結ばれる全てのジョブが、上から記述された順に優先して生起されることを示す。
- は先行するジョブX、Y両方が終了したときにジョブZが生起されることを示す。
- ジョブの生起とは実行待ち行列への追加を意味し、各ジョブは待ち行列の順に実行される。
- OSのオーバヘッドは考慮しない。
正解
解説
この問題は、ジョブ間の依存関係と一時ファイルのライフサイクルを追跡しながら、同時に存在する最大の一時ファイル数を特定し、その合計サイズから最小限必要なディスク容量を求める問題です。実行多重度とファイルの削除条件が鍵となります。
- 一時ファイルの生成と削除の条件
各ジョブは開始時に50Mバイトの一時ファイルを作成します。
このファイルは、ジョブ終了時に直後に生起されたジョブが参照する場合は削除されず、参照が終了した時点で削除されます。
また、直後のジョブが複数ある場合、先に生起された1つのジョブだけがファイルを参照するという制限があります。 - ジョブの依存関係と実行多重度
ジョブの実行多重度が2であるため、常に最大で2つのジョブが同時に実行される可能性があります。
また、ジョブの実行順序は依存関係と生起ルールに従って厳密に定まっており、ジョブの組み合わせによって一時ファイルの保持タイミングが異なります。 - 具体的なジョブの進行とディスク使用状況
ジョブA実行中に50Mバイトの一時ファイルが作成されます。
ジョブAの終了によりジョブBとCが生起され、多重度2のため同時に実行され、それぞれ50Mバイトの一時ファイルを作成します。
この時点でAの一時ファイルはBが参照中なので削除されず、合計で3ファイル(150Mバイト)が存在します。
B・C終了後、ジョブDとEが生起され再び同時実行されます。D・Eがそれぞれ50Mバイトのファイルを作成し、さらにB・Cの一時ファイルも残っているため、一時的に最大4つの一時ファイル(200Mバイト)が存在することになります。
以上の分析より、最も多くの一時ファイルが同時に存在するタイミングでは4つのファイルが重なり、その合計は200Mバイトです。よって、最低でも200Mバイトの磁気ディスク容量が必要です。