In welcher Beziehung steht "hängen bleiben" (in den Ergebnissen von "oben") zu "nicht reagieren" (in der Aktivitätsüberwachung), "drehen" oder "hängen bleiben"?

17

In Ergebnissen von topBefehlen sehe ich manchmal stecken .

Apples Top (1) OS X Manual Page erklärt diese Verwendung des Wortes nicht.

Wie, wenn sie alle, nicht stecken beziehen sich auf die folgenden?

  1. reagiert nicht - wird möglicherweise im Aktivitätsmonitor, im Dialogfeld Anwendungen erzwingen des Anmeldefensters usw. angezeigt
  2. .hang Dateien - können anwesend sein /Library/Logs/DiagnosticReports
  3. .spin Dateien - können anwesend sein /Library/Logs/DiagnosticReports

Für den ersten Punkt gibt es eine akzeptierte Antwort. Antworten zu den Punkten 2 und 3 sind erwünscht.

Graham Perrin
quelle

Antworten:

15

In der Regel besteht keine Korrelation zwischen einem blockierten Prozess topund einer nicht reagierenden Anwendung:

  • stuck bedeutet, dass der Prozess derzeit nicht unterbrechbar ist, was normalerweise der Fall ist, wenn der Prozess darauf wartet, dass eine Festplatte oder ein Netzwerkdatenblock gelesen wird (oder ähnliches auf niedriger Ebene). Technisch gesehen wird der Prozess im Kernel-Space (auch bekannt als Unix-Kernel) ausgeführt und kann nicht unterbrochen werden (so dass selbst ein Prozess kill -9keine Auswirkungen haben würde). Normalerweise halten diese Status nur die letzten Millisekunden an (wie Sie auch sehen können, topda sich die Anzahl der festgefahrenen Prozesse mit jedem Anzeigezyklus ändert).
  • Nicht reagierende Anwendungen können zu beschäftigt sein, um auf Ereignisse zu antworten, die von OS X ausgelöst werden.

Ich sehe eine Situation , in der ein stuck Prozess entspricht eine nicht reagierenden Anwendung: Ein Prozess kann seinen stuck für eine sehr lange Zeit, vielleicht endlos stecken, ohne die Möglichkeit , es zu töten. Dies ist normalerweise das Ergebnis eines Programmierfehlers, z. B. einer unsachgemäßen Trennung von einem vernetzten Gerät. Dann versucht der Kernel immer wieder, Daten von diesem Gerät zu lesen. In solchen Fällen wird der Prozess auch durch eine erzwungene Beendigung nicht entfernt.

nohillside
quelle
Danke - wenn feststecken gleichbedeutend ist mit unterbrechungsfrei , dann bin ich mit diesem Zustand vertraut. uninterruptiblewird häufig angezeigt, wenn ich Control-T ( SIGINFO ) drücke, während ich fsck_hfsvon der Kommandozeile aus renne. Weitere Informationen finden SieSIGINFO in den Apple- Begriffen (4) OS X Manual Page .
Graham Perrin
Im Zusammenhang mit dieser Antwort kann eine Frage in Stack Overflow von Interesse sein: Ermitteln, ob der Prozess nicht programmgesteuert reagiert .
Graham Perrin
2
Ich habe mir den Quellcode von top angesehen: Unterbrechungsfrei ist das Gleiche wie stecken.
Nohillside
Gotcha - Highlights von libtop.c in Open Source für Mac OS X 10.7.4.
Graham Perrin
1

Prozessstatus U, TH_STATE_UNINTERRUPTIBLE und Linux-Prozessstatus D

Jemand anderes machte auf MacOS top aufmerksam: "stecken" bedeutet "unterbrechungsfrei" | nelsonslog

…  TH_STATE_UNINTERRUPTIBLE, Was meiner Meinung nach psals Prozesszustand „U“ gemeldet wird . Ich vermute, dies ist, was Linux "D" für "Device Wait" nennt. In diesem Fall ist der Prozess in den meisten Fällen in Ordnung und wartet auf den Abschluss einiger E / A-Vorgänge. …

Die Ubuntu-Manpage für ps bestätigt einen Prozessstatuscode -

D    Uninterruptible sleep (usually IO)

- Ohne weitere Erwähnung von unterbrechungsfrei .

In FreeBSD / Linux Linux-Kernel-Querverweis:

Ich habe eine Diskussion von 2002 gefunden . ( Highlights ), die gut zu den Beobachtungen von @patrix passen.

Last but not least, ein 2004 Post [X-Unix] PS und kleben Prozesse ( Highlights ) erwähnen WindowServer , die gut mit dem paßt -related Frage , die mich dazu veranlasste , die Frage zu stellen hier:

Graham Perrin
quelle