[0188] タスク管理

平成12年度春期 (旧)第2情報処理技術者試験より
三つのタスクの優先度及び各タスクを単体で実行した場合の処理装置(CPU)、入出力装置(I/O)の占有時間は、表のとおりである。 三つのタスクが同時に実行可能状態になってから、すべてが終了するまでの CPU のアイドル時間は何ミリ秒か。 ここで、CPU は 1個とし、各タスクの I/O 処理は並行して処理可能であり、OS のオーバヘッドは無視できるものとする。

3
4
5
6

正解

解説

 OSのタスク管理に関する問題です。

 タスク管理は主記憶上の複数のタスクの中からひとつのタスクを選び、CPUタイムを与えて処理を実行させます。それぞれのタスクは、実行状態、実行可能状態、待機状態(事象待ち状態)といった状態を取りながら処理されていきます。


    実行状態: タスクがCPUを占有し、処理を実行している状態
    実行可能状態: 実行準備が完了しており、CPU の割り当てを待っている状態
    待ち状態: 実行状態だったタスクが入出力などにより待機している状態

それでは、タスクがどのようにして処理実行されていくか順を追ってみてみましょう。



(1)
生成されたタスクは、実行可能状態になります。

(2)
実行可能状態のタスクは、ディパッチャと呼ばれるタスク管理プログラムによって、優先度の高いものから実行状態へ移されます。 実行状態のタスクは、CPUタイムが与えられ、処理を実行することができます。

(3)
実行状態のタスクは、割り当てられたCPUタイムが終了するか、より優先度の高いタスクにより強制的に処理を中断され、実行可能状態に移ります。 このように、タスクの実行を中断することをプリエンプションといいます。

(4)
実行状態のタスクは、入出力処理の発生によりCPUの使用権を破棄し、待機状態になります。 入出力処理はCPU処理に比べ時間がかかる処理なので、その待ち時間を他のタスクのために利用してもらいます。

(5)
待機状態のタスクは、(入出力処理待ちなど)待ちの原因となった事象が終了すると、実行可能状態に移されます。

(6)
タスクの実行が終了すると、タスクは消滅します。 このとき、タスクが使用していた資源は解放されます。


 この問題では、処理装置(CPU)占有時間が実行状態、入出力装置(I/O)占有時間が待機状態に相当します。待機状態から実行状態へ移行するには一度実行可能状態を経る必要がありますが、これに掛かる時間は記述されておらず、また、OS のオーバヘッドが無視できる前提にあるので、一瞬で移行できるものとします。したがって、三つのタスクを同時に実行する場合、以上のタスク管理の機能から、次のルールで処理されることになります。
  • ディスパッチ:タスクの優先度が高い順に CPU を占有し、I/O処理時の待機状態になると、次に優先度が高く、かつ実行可能状態にあるタスクへ CPU 使用権を譲ります。
  • プリエンプション:優先度の低いタスクがCPU占有中に、優先度の高いタスクが実行可能状態となった場合、CPU の使用権を譲ります。
 ディスパッチ、プリエンプション発生するタイミングは、以下のタイムチャートのようになります。タスクAが完了するまでのところまでの途中経過です。



 それでは CPU のアイドル時間を求めましょう。アイドル時間とは、CPU の遊び時間のことであり、このとき、すべてのタスクは実行状態にありません。タイムチャートを最後まで完成させましょう。アイドル時間は、赤字の時間になります。



 よって、合計 6 ミリ秒でエが正解となります。
※ 解説の内容は執筆時点のものであり,含まれている情報の正確性,妥当性について保証するものではありません。ご注意ください・・・

関連する(かもしれない)問題