問題プレビューID: c406ada1

問 17

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

解説

時刻 0 でタスク A,B を同時に開始する。CPU は 2 台あるので,まず A の CPU 処理(10 ミリ秒)と B の CPU 処理(40 ミリ秒)を並行して実行する。

  • 時刻 10 に A の CPU 処理が終了し,A が資源 R を獲得する。資源 R は排他的に使用されるため,A は時刻 10 から 50 ミリ秒の間(時刻 60 まで)R を保持し,その後 CPU 処理(60 ミリ秒,時刻 60〜120)を行う。
  • 時刻 40 に B の CPU 処理が終了するが,資源 R は A が使用中であるため,B は待たされる。時刻 60 に A が R を解放すると B が R を獲得し,50 ミリ秒(時刻 60〜110)使用した後,CPU 処理(30 ミリ秒,時刻 110〜140)を行う。

A は時刻 120 に,B は時刻 140 に完了する。したがって,二つのタスクの処理が完了するまでの時間は 140 ミリ秒となり,正解は「イ」である。