【理解の一歩目】プロセス・タスクと状態遷移 -ハードウェア-

はじめに

人間と同じく、CPUも同時に実行できるタスクには限りがあります。

例えば、OSからアプリケーションプログラムを実行するだけでもCPUは複数の命令を実行する必要がありますが、全てのプログラムを意図した通りに動作させるためには必要な命令が必要なタイミングで実行される必要があります。

そのために、プログラムの命令はプロセス・タスクといった小さい単位に分割され、実行の優先順位が決められます。

プロセスとタスクは、コンピューターシステムにおいて実行される作業や処理の単位です。一般的には、プログラムが実行される際に、それぞれのプログラムが実行される状態を表すものとして使用されます。

プロセスは、実行中のプログラムを表し、メモリ上で実行される際の各種情報(例: プログラムカウンタ、メモリ使用量、入出力情報など)を含みます。一方、タスクは、実行されるべき個々の仕事や作業を指します。プロセスは、複数のタスクを含むことがあります。

プロセスやタスクが実行される過程でCPUからの命令で実行状態から停止状態まで変化することを状態遷移といい、一般的にはプロセスやタスクは次のような状態を経験します。

  1. 実行中(Running): プロセスやタスクがCPU上で実行されている状態です。
  2. 待機中(Waiting): プロセスやタスクが入出力の完了など、何らかのイベントを待っている状態です。
  3. 準備中(Ready): プロセスやタスクがCPUを割り当てられるのを待っている状態です。
  4. 停止中(Stopped): プロセスやタスクが実行を停止しており、再開するための待機状態です。

これらの状態は、プロセスやタスクが実行される際に動的に変化します。例えば、実行中のプロセスが入出力を行う必要がある場合、そのプロセスは待機状態に移行します。その後、入出力が完了したら、再び実行可能な状態に移行し、CPUが割り当てられるのを待ちます。

参考サイト