問題プレビューID: ad0170fe

問 18

三つのタスクの優先度と,各タスクを単独で実行した場合の CPU と入出力装置(I/O)の動作順序と処理時間は,表のとおりである。三つのタスクが同時に実行可能状態になってから,全てのタスクの実行が終了するまでの,CPU の遊休時間は何ミリ秒か。ここで,I/O は競合せず,OS のオーバヘッドは考慮しないものとする。また,表の( )内の数字は処理時間を示す。

優先度単独実行時の動作順序と処理時間(単位 ミリ秒)
高CPU(3) → I/O(5) → CPU(2)
中CPU(2) → I/O(6) → CPU(2)
低CPU(1) → I/O(5) → CPU(1)
解説

優先度の高いタスクが CPU を使用する。時刻 0 に三つのタスクが同時に実行可能になる。

  • 高:時刻 0〜3 で CPU(3) を実行し,時刻 3〜8 で I/O。
  • 中:時刻 3 から CPU(2) を実行するが,時刻 8 に高が戻ってくるため,時刻 3〜5 の 2 ミリ秒で CPU(2) を終え,時刻 5〜11 で I/O。
  • 低:時刻 5 から CPU(1) を実行し,時刻 5〜6 で終え,時刻 6〜11 で I/O。

この間,時刻 6〜8 は三つのタスクがすべて I/O 中で CPU は遊休する(2 ミリ秒)。時刻 8 に高が戻り,時刻 8〜10 で CPU(2) を実行して終了する。時刻 10〜11 は再び CPU が遊休する(1 ミリ秒)。時刻 11 に中と低が戻り,中が時刻 11〜13 で CPU(2),低が時刻 13〜14 で CPU(1) を実行する。したがって,CPU の遊休時間は 2+1=32 + 1 = 3 ミリ秒となり,正解は「ウ」である。