Состояние потоков и статус процесса

Все ли потоки определенного процесса имеют одинаковый статус (D, R, S, …) или могут быть различия между этими потоками?

Если да, где в /proc я могу найти информацию о статусе определенного потока? Я читаю статус процесса из файлов /proc/<PID>/status на данный момент.

Различные потоки, безусловно, могут находиться в другом состоянии планировщика одновременно. Фактически, если все они находятся в одном состоянии, это совпадение (за исключением остановленного (Z), потому что это влияет на весь процесс).

Подкаталог /proc/ PID /task содержит подкаталог на поток процесса. Файлы в этом каталоге в основном такие же, как в каталоге для каждого процесса. Некоторая информация просто дублируется (например, информация, связанная с памятью, среда, привилегии и т. Д.). Информация, специфичная для потока, такая как состояние планировщика (running / sleep / IO / …), может отличаться.

Вы можете использовать команду ps чтобы узнать о статусе всех потоков процесса:

 ps H -p 27901 

Это покажет все потоки, связанные с процессом 27901, и их статус.