W jaki sposób „utknięcie” (w wynikach „góra”) odnosi się do „nie reagowania” (w monitorze aktywności), „wirowania” lub „zawieszenia”?

17

W wynikach toppoleceń czasami widzę utknięcie .

Górna (1) strona podręcznika OS X firmy Apple nie wyjaśnia tego użycia tego słowa.

W jaki sposób utknięcie wiąże się z następującymi kwestiami?

  1. brak odpowiedzi - może być widoczny w Monitorze aktywności, w oknie dialogowym Wymuś zamknięcie aplikacji w loginwindow i tak dalej
  2. .hang pliki - mogą być obecne w /Library/Logs/DiagnosticReports
  3. .spin pliki - mogą być obecne w /Library/Logs/DiagnosticReports

Odpowiedź została zaakceptowana na pierwszy punkt. Odpowiedzi dotyczące punktów 2 i 3 będą mile widziane.

Graham Perrin
źródło

Odpowiedzi:

15

Zwykle nie ma korelacji między zablokowanym procesem topa nieodpowiadającą aplikacją:

  • „zablokowany” oznacza, że ​​proces jest obecnie nieprzerwany, co zwykle ma miejsce, gdy proces czeka na odczyt dysku lub bloku danych sieciowych (lub podobnych rzeczy niskiego poziomu). Technicznie rzecz biorąc, proces ten jest wykonywany w przestrzeni jądra (inaczej jądro Unixa) i nie można go przerwać (więc nawet kill -9nie miałby żadnego wpływu). Zwykle te zablokowane stany trwają tylko milisekundy (jak widać toprównież, ponieważ liczba zablokowanych procesów zmienia się z każdym cyklem wyświetlania).
  • aplikacje nieodpowiadające mogą być zbyt zajęte, aby odpowiadać na jakiekolwiek zdarzenia, które OS X na nich rzuci.

Widzę jedną sytuację, w której zablokowany proces odpowiada aplikacji, która nie odpowiada: proces może zostać zablokowany na bardzo długi czas, być może utknąć w nieskończoność, bez możliwości jego zabicia. Zwykle jest to wynikiem błędu programistycznego, np. Niewłaściwego odłączenia od urządzenia sieciowego, a następnie jądro próbuje odczytać z niego dane. W takich przypadkach nawet wymuszone zakończenie nie usunie tego procesu.

nohillside
źródło
Dzięki - jeśli utknięcie jest równoznaczne z nieprzerwalnością , to znam ten stan. uninterruptiblejest często widziany, gdy wciskam Control-T ( SIGINFO ) podczas uruchamiania fsck_hfsz wiersza poleceń. Więcej na stronie SIGINFOApple termios (4) OS X Podręcznik Strona .
Graham Perrin
W związku z tą odpowiedzią może być interesujące pytanie w przepełnieniu stosu: Jak programowo zidentyfikować proces nie odpowiadający .
Graham Perrin
2
Rzuciłem okiem na kod źródłowy top: nieprzerwany jest tym samym, co utknął.
nohillside
Gotcha - najważniejsze informacje z libtop.c w open source dla Mac OS X 10.7.4.
Graham Perrin
1

Stan procesu U, TH_STATE_UNINTERRUPTIBLE i stan procesu Linux D

Ktoś inny zwrócił uwagę na górę MacOS: „utknięcie” oznacza „nieprzerwany” | nelsonslog

… Co  TH_STATE_UNINTERRUPTIBLE, jak sądzę, jest tym, co pszgłasza stan procesu „U”. Zgaduję, że to właśnie Linux nazywa „D” dla „Device Wait”. W takim przypadku w większości przypadków proces jest w porządku, czeka na zakończenie niektórych operacji we / wy. …

Strona podręcznika Ubuntu dla ps potwierdza kod stanu procesu -

D    Uninterruptible sleep (usually IO)

- bez żadnej wzmianki o ciągłości .

W jądrze Linuksa FreeBSD / Linux odsyłacz:

Znalazłem dyskusję z 2002 roku The Answer Gang 83: Jak zabić proces w stanie nieprzerwanego snu? ( podkreśla ), co dobrze pasuje do obserwacji poczynionych przez @patrix.

Wreszcie PS z 2004 r. [X-Unix] PS i zablokowane procesy ( wyróżnienia ) wspominające WindowServer , co dobrze pasuje do pytania związanego z które skłoniło mnie do opublikowania pytania tutaj:

Graham Perrin
źródło