問題プレビューID: 2e7fbd40

問 20

2 台の CPU からなるシステムがあり,使用中でない CPU は実行要求のあったタスクに割り当てられるようになっている。このシステムで,二つのタスク A,B を実行する際,それらのタスクは共通の資源 R を排他的に使用する。それぞれのタスク A,B の CPU 使用時間,資源 R の使用時間と実行順序は図に示すとおりである。二つのタスクの実行を同時に開始した場合,二つのタスクの処理が完了するまでの時間は何ミリ秒か。ここで,タスク A,B を開始した時点では,CPU,資源 R ともに空いているものとする。

(タスクA: CPU=10ms →\to 資源R=50ms →\to CPU=60ms) (タスクB: CPU=40ms →\to 資源R=50ms →\to CPU=30ms)

解説

CPU は 2 台あり,資源 R は 1 つで排他的に使用される。二つのタスクを同時に開始したときの動作は次のとおりである。

  • 時刻 0:タスク A が CPU を使用開始し(10 ミリ秒),タスク B も CPU を使用開始する(40 ミリ秒)。
  • 時刻 10:タスク A が CPU の使用を終え,空いている資源 R を使用開始する(50 ミリ秒,時刻 60 まで)。
  • 時刻 40:タスク B が CPU の使用を終えるが,資源 R はタスク A が使用中なので解放を待つ。
  • 時刻 60:タスク A が資源 R を解放し,CPU を使用開始する(60 ミリ秒,時刻 120 まで)。同時にタスク B が資源 R を使用開始する(50 ミリ秒,時刻 110 まで)。
  • 時刻 110:タスク B が資源 R を解放し,CPU を使用開始する(30 ミリ秒,時刻 140 まで)。
  • 時刻 120:タスク A が処理を完了する。
  • 時刻 140:タスク B が処理を完了する。

二つのタスクの処理が完了するのは時刻 140 である。したがって,正解は「イ」である。