【問題】
二つのタスクの優先度と各タスクを単独で実行した場合のCPUと入出力装置(I/O)の動作順序と処理時間は、表のとおりである。二つのタスクが同時に実行可能状態になってから、全てのタスクの実行が終了するまでの経過時間は何ミリ秒か。ここで、CPUは1個であり、I/Oの同時動作はできないものとし、OSのオーバヘッドは考慮しないものとする。また、表の()内の数字は処理時間を示すものとする。
優先度 ┃ 単独実行時の動作順序と処理時間(ミリ秒)
高 ┃ CPU(2)→I/O(7)→CPU(3)→I/O(4)→CPU(3)
低 ┃ CPU(2)→I/O(3)→CPU(2)→I/O(2)→CPU(3)
【解答】
CPUは1個であるから、同時動作は出来ないし、I/Oも同時動作は出来ないので、それを前提として考慮する。
ここでは分かりやすいように、以下のようにラベルを付ける。
優先度 ┃ 単独実行時の動作順序と処理時間(ミリ秒)
高 ┃ ①CPU(2)→②I/O(7)→③CPU(3)→④I/O(4)→⑤CPU(3)
低 ┃ ⑥CPU(2)→⑦I/O(3)→⑧CPU(2)→⑨I/O(2)→⑩CPU(3)
動作の順は、次の通りになる。
まず最初に①が行われ、そのまま②に移動する。
②の間に⑥が完全に行われるので、⑦は②の後すぐに起動になる。
⑦の間に③が同時に進行する。
⑧が③の後すぐに起動になる。
このとき、同時に④も起動し、④が⑧より後に終わる。
よって④の後すぐに⑤が起動し、⑨もこれと同時に起動する。
この時、⑨が先に終了し、⑤がその後で1秒使用して終了する。
そして、⑤の後に⑩が起動する。
よって、実質の時間は、①→②→③→④→⑤→⑩の経過時間となる。
実際に計算すると、
2ミリ秒+7ミリ秒+3ミリ秒+4ミリ秒+3ミリ秒+3ミリ秒 = 22ミリ秒
となり、解答は22ミリ秒となる。