In che modo "bloccato" (nei risultati di "top") si riferisce a "non risponde" (in Activity Monitor), "gira" o "si blocca"?


17

Nei risultati dei topcomandi, a volte vedo bloccato .

La pagina di manuale principale di Apple (1) OS X non spiega questo uso della parola.

In che modo, se bloccato, si collega a quanto segue?

  1. non risponde - può essere visualizzato in Activity Monitor, nella finestra di dialogo Forza chiusura applicazioni della finestra di accesso e così via
  2. .hang file: possono essere presenti all'indirizzo /Library/Logs/DiagnosticReports
  3. .spin file: possono essere presenti all'indirizzo /Library/Logs/DiagnosticReports

C'è una risposta accettata per il primo punto. Saranno apprezzate le risposte relative ai punti 2 e 3.

Risposte:


15

Di solito non esiste alcuna correlazione tra un processo bloccatotop e un'applicazione non rispondente:

  • bloccato significa che il processo non è al momento interrompibile, cosa che di solito accade se il processo è in attesa di leggere un disco o un blocco dati di rete (o roba simile di basso livello). Tecnicamente parlando il processo si sta eseguendo nello spazio del kernel (noto anche come kernel Unix) e non può essere interrotto (quindi anche un kill -9impatto non avrebbe alcun impatto). Di solito questi stati bloccati durano solo millisecondi (come puoi vedere topanche perché il numero di processi bloccati cambia ad ogni ciclo di visualizzazione).
  • le applicazioni che non rispondono possono essere troppo impegnate per rispondere a qualsiasi evento lanciato da OS X.

Vedo una situazione in cui un processo bloccato corrisponde a un'applicazione non rispondente: un processo può essere bloccato per un tempo molto lungo, forse bloccato all'infinito, senza alcuna possibilità di ucciderlo. Questo di solito è il risultato di un errore di programmazione, ad es. Disconnessione impropria da un dispositivo in rete, quindi il kernel continua a provare a leggere da esso. In casi come questo, anche una risoluzione forzata non rimuoverà il processo.


Grazie - se bloccato è sinonimo di ininterrotto , allora ho familiarità con quello stato. uninterruptiblesi vede comunemente quando si preme Control-T ( SIGINFO ) mentre si esegue fsck_hfsdalla riga di comando. Altro su SIGINFOin Apple termios (4) OS X Manuale pagina .
Graham Perrin,

In relazione a questa risposta, potrebbe essere interessante una domanda in Stack Overflow: come identificare il processo di non risposta a livello di codice .
Graham Perrin,

2
Ho dato un'occhiata al codice sorgente di top: ininterrotto è lo stesso di bloccato.
Nohillside

Gotcha - evidenzia da libtop.c in open source per Mac OS X 10.7.4.
Graham Perrin,

1

Stato del processo U, TH_STATE_UNINTERRUPTIBLE e stato del processo Linux D

Qualcun altro ha attirato l'attenzione sul top di MacOS: "bloccato" significa "ininterrotto" | nelsonslog

…  TH_STATE_UNINTERRUPTIBLE, Che credo sia ciò che psriporta come stato del processo “U”. Immagino che questo sia ciò che Linux chiama "D" per "Device Wait". Nel qual caso, nella maggior parte dei casi il processo va bene, è in attesa del completamento di alcuni I / O. ...

La pagina man di Ubuntu per ps conferma un codice di stato del processo -

D    Uninterruptible sleep (usually IO)

- senza alcuna menzione di ininterrotto .

Nel riferimento incrociato del kernel Linux di FreeBSD / Linux:

Ho trovato una discussione del 2002 The Answer Gang 83: Come uccidere un processo in uno stato di sonno ininterrotto? ( mette in evidenza ) che si adatta perfettamente alle osservazioni fatte da @patrix.

Ultimo ma non meno importante, un post del 2004 [X-Unix] PS e Stuck Processes ( highlights ) che menziona WindowServer , che si adatta perfettamente al domanda correlata a che mi ha spinto a pubblicare la domanda qui:

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.