基本情報技術者

【基本情報技術者試験】タスクの状態遷移とディスパッチ

今回のテーマはタスクの状態遷移とディスパッチについてです。
ディスパッチ?聞いたことがない言葉ですね。

問題

タスクのディスパッチの説明として,適切なものはどれか。

  • ア:各タスクの実行順序を決定すること
  • イ:実行可能なタスクに対してプロセッサの使用権を割り当てること
  • ウ:タスクの実行に必要な情報であるコンテキストのこと
  • エ:一つのプロセッサで複数のタスクを同時に実行しているかのように見せかけた状態のこと

基本情報技術者平成31年春期 午前問16

基本情報技術者試験や応用情報技術者試験の過去問では、タスクの状態遷移についての問題が出題されています。

本記事では、タスクの状態遷移について図解を利用して分かりやすく解説しています。

本記事で学べること

  • タスクの状態遷移について理解する
  • タスクのディスパッチプリエンプションの動きを覚える
  • 基本情報技術者試験の過去問の解き方を学ぶ

タスクの状態遷移

タスクとは、コンピュータが処理する作業の最小単位のことです。

例えば、アプリケーションのアイコンをクリックすると、クリックしたアプリケーションを開くように命令します。このような命令により発生する処理の単位をタスクといい、コンピュータの頭脳である「CPU」がこのタスクを処理します。

生成されたタスクには次の3つの状態があります。

状態 説明
実行可能状態(READY) CPUの使用権が回ってくれば、いつでも実行できる状態
実行状態(RUN) CPUの使用権が与えられ、実行中の状態
待機状態(WAIT) 入力処理が発生したので、その終了を待っている状態

 

以下はタスクの状態遷移図です。

タスクの状態遷移図

生成されたタスクは「実行可能状態(READY)」となり、CPUの使用権が回ってくるのを待ちます。そして、CPUの使用権が回ってきたら「実行状態(RUN)」に変わります。

「実行状態(RUN)」になったタスクは処理が終了すればタスクは消滅、処理中に入出力処理が発生した場合は「待機状態(WAIT)」に状態が変わり、入出力処理が終わり次第、再び「実行可能状態(READY)」に遷移します。

スポンサーリンク

タスクのディスパッチとプリエンプション

「実行可能状態(READY)」のタスクにCPUの使用権を割り当てて「実行状態(RUN)」にすることをディスパッチといい、ディスパッチを行うプログラムをディスパッチャといいます。

また、ディスパッチとは逆で「実行状態(RUN)」のタスクを一旦停止して「実行可能状態(READY)」に戻すことをプリエンプションといいます。

タスクの状態遷移図

複数のタスクを同時に実行するマルチプログラミング(マルチタスク)では、CPUにどのタスクを処理させるか、タスクの実行順序を定める必要があります。これをタスクスケジューリングといいます。

タスクスケジューリングには、プリエンプションを利用する(実行の途中でCPUの使用権を奪うことができる)「プリエンプティブ」と、プリエンプションを利用しない(実行の途中でCPUの使用権を奪うことができない)「ノンプリエンプティブ」の方式があります。

タスクスケジューリングについてはこちら

基本情報技術者試験 過去問の解説

問題

タスクのディスパッチの説明として,適切なものはどれか。

  • ア:各タスクの実行順序を決定すること
  • イ:実行可能なタスクに対してプロセッサの使用権を割り当てること
  • ウ:タスクの実行に必要な情報であるコンテキストのこと
  • エ:一つのプロセッサで複数のタスクを同時に実行しているかのように見せかけた状態のこと

基本情報技術者平成31年春期 午前問16

タスクのディスパッチの説明として適切なものはどれか、解答のア~エを順番に確認していきます。

ア:各タスクの実行順序を決定すること

不正解:タスクスケジューリングの説明です。

イ:実行可能なタスクに対してプロセッサの使用権を割り当てること

正解:ディスパッチの説明です。

「実行可能状態(READY)」のタスクにCPUの使用権を割り当てて「実行状態(RUN)」にするのがディスパッチです。

ウ:タスクの実行に必要な情報であるコンテキストのこと

不正解:タスクコントロールブロック(TCB)の説明です。

タスクコントロールブロック(TCB)とは、タスクの実行に必要な情報(優先度, 状態など)のことです。

エ:一つのプロセッサで複数のタスクを同時に実行しているかのように見せかけた状態のこと

不正解:マルチプログラミング(マルチタスク)の説明です。

「イ」が正解です。