応用情報技術者試験 平成30年春 午前問17 解説付き過去問
問題
三つのタスクA~Cの優先度と各タスクを単独で実行した場合のCPUと入出力(I/O)装置の動作順序と処理時間は、表のとおりである。
優先順位方式のタスクスケジューリングを行うOSの下で、三つのタスクが同時に実行可能状態になってから、タスクCが終了するまでに、タスクCが実行可能状態にある時間は延べ何ミリ秒か。
ここで、I/Oは競合せず、OSのオーバヘッドは考慮しないものとする。
また、表中の()内の数字は処理時間を示すものとする。

優先順位方式のタスクスケジューリングを行うOSの下で、三つのタスクが同時に実行可能状態になってから、タスクCが終了するまでに、タスクCが実行可能状態にある時間は延べ何ミリ秒か。
ここで、I/Oは競合せず、OSのオーバヘッドは考慮しないものとする。
また、表中の()内の数字は処理時間を示すものとする。

正解
解説
この問題は、優先順位方式のタスクスケジューリングにおける「実行可能状態」にある時間を正確に求めることが求められます。
特に、CPU待機中の状態とI/O中の状態を区別し、タスクCがCPUの割当てを待っていた時間を正しく特定することが重要です。
- 優先順位方式とは
優先順位方式は、複数のタスクが同時に実行可能状態にある場合、優先度の高いタスクから順にCPUを割り当てる方式です。
本問では、タスクAが最も高く、次にタスクB、最後にタスクCの順で優先順位が設定されています。 - 実行可能状態の定義
「実行可能状態」とは、CPUの処理を受ける準備が整っていて、かつCPUが割り当てられていない状態を指します。
一方、I/O装置を使用している間は「待機状態」にあり、実行可能状態には含まれません。 - 各タスクの処理構成
各タスクの構成は以下のとおりです。
・タスクA:CPU(2) → I/O(6) → CPU(4)
・タスクB:CPU(2) → I/O(4) → CPU(2)
・タスクC:CPU(2) → I/O(2) → CPU(3) - スケジューリングの時系列とタスクCの状態
処理の流れとタスクCの状態を以下に示します。
- 0~2:タスクAがCPUを使用。BとCは同時に実行可能状態にあるが、優先度が低いためCPUを使えない
- 2~4:タスクBがCPUを使用。AはI/O中、Cは引き続き実行可能状態
- 4~6:タスクCがCPUを使用(初回)
- 6~8:A、B、CすべてI/O中
- 8~12:タスクAがCPUを使用。BとCはI/Oを終えて実行可能状態
- 12~14:タスクBがCPUを使用。Cは引き続き実行可能状態
- 14~17:タスクCがCPUを使用し、処理完了
・0~4(タスクAとBの処理中) → 4ミリ秒
・8~14(タスクAとBの再処理中) → 6ミリ秒
合計:10ミリ秒 - 0~2:タスクAがCPUを使用。BとCは同時に実行可能状態にあるが、優先度が低いためCPUを使えない
- 結論
タスクCが実行可能状態にあった時間は、0~4ミリ秒および8~14ミリ秒の合計10ミリ秒です。
したがって、正解は10となります。
タスクCの実行可能状態を正しく見極めるには、I/O中とCPU待機中の状態を明確に区別する必要があります。
提示されたタイムチャートに従えば、CPU待機時間は合計10ミリ秒であることが分かります。