スレッドのステータスとプロセスのステータス

スレッドのステータスとプロセスのステータス

特定のプロセスのすべてのスレッドは同じステータス (D、R、S、...) を共有しますか、それともこれらのスレッド間に違いがある可能性がありますか?

もしそうなら、特定のスレッドのステータスに関する情報はどこで見つけられますか?現時点では、ファイル/procからプロセス ステータスを読み取っています。/proc/<PID>/status

答え1

異なるスレッドが同時に異なるスケジューラ状態になることは確かに可能です。実際、それらがすべて同じ状態にある場合、それは偶然です (停止 (Z) はプロセス全体に影響するため除きます)。

サブディレクトリには、プロセスのスレッドごとにサブディレクトリが含まれます。このディレクトリ内のファイルは、プロセスごとのディレクトリ内のファイルとほとんど同じです。一部の情報は重複しています (例: メモリ関連の情報、環境、権限など)。スケジューラの状態 (実行中/スリープ中/IO など) など、スレッドに固有の情報は異なる場合があります。/proc/PID/task

答え2

psプロセスのすべてのスレッドのステータスを確認するには、次のコマンドを使用できます。

ps H -p 27901

これにより、プロセス 27901 に関連するすべてのスレッドとそのステータスが表示されます。

関連情報