Haben alle Threads eines bestimmten Prozesses den gleichen Status (D, R, S, ...) oder kann es zwischen diesen Threads Unterschiede geben?
Wenn ja, wo finde ich Informationen zum Status eines bestimmten Threads? Ich lese gerade /proc
den Prozessstatus aus den Dateien./proc/<PID>/status
Antwort1
Verschiedene Threads können durchaus gleichzeitig in einem unterschiedlichen Scheduler-Zustand sein. Wenn sie sich alle im selben Zustand befinden, ist das tatsächlich ein Zufall (außer bei „gestoppt“ (Z), denn das betrifft den gesamten Prozess).
Das Unterverzeichnis enthält ein Unterverzeichnis pro Thread des Prozesses. Die Dateien in diesem Verzeichnis sind größtenteils dieselben wie im Verzeichnis pro Prozess. Einige der Informationen sind nur doppelt vorhanden (z. B. speicherbezogene Informationen, Umgebung, Berechtigungen usw.). Informationen, die für einen Thread spezifisch sind, wie z. B. der Scheduler-Status (wird ausgeführt/ruht/E/A/…), können abweichen./proc/PID/task
Antwort2
Mit dem folgenden Befehl können Sie ps
den Status aller Threads eines Prozesses abrufen:
ps H -p 27901
Dadurch werden alle mit dem Prozess 27901 in Zusammenhang stehenden Threads und deren Status angezeigt.