Status eines Threads vs. Status eines Prozesses

Status eines Threads vs. Status eines Prozesses

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 /procden 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 psden 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.

verwandte Informationen