Linuxには、準備完了、ブロック済み、実行中、終了済みがあります。
Windowsには、準備完了、遅延準備完了、スタンバイ、実行中、待機中、終了済み、初期化済みがあります。
なぜWindowsにはこれほど多くの状態があるのですか?この余分な複雑さはどのような利点をもたらしますか?
Runningスレッドは、現在プロセッサで実行されているスレッドです。 Runningスレッドは、そのプロセッサのReadyスレッドのリストから選択されます、実行するためにスワップインするのに適したスレッドです。 StandbyスレッドはReadyスレッドであり、currentlyは、そのプロセッサで次にRunning状態にスワップインするように選択されています。ただし、変更が行われる前に優先度の高いスレッドの準備ができた場合、これは変更される可能性があります。
Deferred Readyは、スレッドがanyプロセッサで実行する準備ができていることを示すグローバル状態です。これは、たとえば、あるCPUで、別のCPUで優先度の高いスレッドをスケジュールするために使用できます。
実行する準備ができていないスレッドには、実行できない理由によって決定される状態が与えられます。
スレッドの状態は、実行するスレッドが選択される順序を決定するスケジューリングの優先順位とは完全に分離されていることに注意してください。