マルチタスクコンピュータシステムでは、プロセスは様々な状態をとる可能性があります。これらの異なる状態は、オペレーティングシステムのカーネルによって明示的に認識されない場合があります。しかし、これらはプロセスを理解する上で有用な抽象化概念となります。

以下のような典型的なプロセス状態は、あらゆる種類のコンピュータシステムで発生する可能性があります。これらの状態のほとんどにおいて、プロセスはメインメモリに「格納」されます。
プロセスが最初に作成されると、「作成済み」または「新規」状態になります。この状態では、プロセスは「準備完了」状態への移行を待ちます。移行は、長期スケジューラ(移行スケジューラ)によって承認または遅延されます。通常、ほとんどのデスクトップコンピュータシステムでは、この移行は自動的に承認されます。しかし、リアルタイムオペレーティングシステムでは、この移行が遅延される場合があります。リアルタイムシステムでは、「準備完了」状態にプロセスが多すぎると、システムのリソースが過飽和状態になり、競合が激しくなり、プロセスの期限を守れなくなる可能性があります。
「準備完了」または「待機中」のプロセスは、メインメモリにロードされ、 CPU上での実行を待っています(ディスパッチャまたは短期スケジューラによってCPUにコンテキストスイッチされます)。システムの実行中、いつでも「準備完了」のプロセスが多数存在する可能性があります。たとえば、シングルプロセッサシステムでは、一度に実行できるプロセスは1つだけであり、他のすべての「同時実行中」のプロセスは実行を待機します。
コンピュータのスケジューリングでは、準備完了キューまたは実行キューが使用されます。現代のコンピュータは、同時に多くの異なるプログラムやプロセスを実行できます。しかし、CPUは一度に1つのプロセスしか処理できません。CPUで実行準備が整ったプロセスは、 「準備完了」プロセス用のキューに格納されます。ハードドライブからの情報読み込みやインターネット接続の待機など、何らかのイベントの発生を待っているプロセスは、準備完了キューには含まれません。
プロセスは、実行対象として選択されると実行状態に移行します。プロセスの命令は、システムのいずれかのCPU(またはコア)によって実行されます。CPUまたはコアごとに実行中のプロセスは最大で1つです。プロセスは、カーネルモードまたはユーザーモードのいずれかのモードで実行できます。[ 1 ] [ 2 ]
プロセスは、外部の状態変化やイベントが発生しない限り処理を継続できない場合に、ブロック状態に移行します。例えば、プリンタなどの入出力デバイスへの呼び出し中にプリンタが利用できない場合、プロセスはブロックされる可能性があります。また、プロセスは、ユーザー入力が必要な場合や、アトミックに実行されなければならないクリティカルセクションへのアクセスが必要な場合にも、一般的にブロックされます。このようなクリティカルセクションは、セマフォやミューテックスなどの同期オブジェクトを使用して保護されます。
プロセスは、「実行中」状態から実行を完了するか、明示的に強制終了されるかのいずれかによって終了する可能性があります。どちらの場合も、プロセスは「終了済み」状態に移行します。基となるプログラムはもはや実行されていませんが、プロセスは、親プロセスが終了ステータスを読み取るためのシステムコールを呼び出すまで、ゾンビプロセスとしてプロセス テーブルに残ります。この時点で、プロセスはプロセス テーブルから削除され、プロセスの寿命が終了します。親プロセスがシステムコールを呼び出さない場合、プロセス テーブル エントリ (具体的にはプロセス識別子(PID)) が消費され続け、リソース リークが発生します。waitwait
仮想メモリをサポートするシステムでは、プロセスにさらに2つの状態が利用可能です。これらのどちらの状態でも、プロセスは二次記憶装置(通常はハードディスク)に「保存」されます。
(サスペンド状態、待機状態とも呼ばれます。)仮想メモリをサポートするシステムでは、プロセスはスケジューラによってスワップアウト、つまりメインメモリから削除され、外部ストレージに配置されることがあります。ここから、プロセスは待機状態に戻されることがあります。
(サスペンド状態、ブロック状態とも呼ばれます。)ブロックされたプロセスは、スワップアウトされることもあります。この場合、プロセスはスワップアウトされ、かつブロックされます。スワップアウトされて待機中のプロセスと同じ状況下で、再びスワップインされる可能性があります(ただし、この場合、プロセスはブロック状態に移行し、リソースが利用可能になるのを待機している可能性があります)。