Como 'preso' (nos resultados de 'superior') se relaciona com 'não responder' (no Activity Monitor), 'girar' ou 'travar'?

17

Nos resultados dos topcomandos, às vezes vejo travado .

A página principal do OS X da Apple (1) não explica esse uso da palavra.

Como, se tudo isso, está preso ao seguinte?

  1. não está respondendo - pode ser visto no Activity Monitor, na caixa de diálogo Force Quit Applications da janela de login e assim por diante
  2. .hang arquivos - podem estar presentes em /Library/Logs/DiagnosticReports
  3. .spin arquivos - podem estar presentes em /Library/Logs/DiagnosticReports

Há uma resposta aceita para o primeiro ponto. As respostas relacionadas aos pontos 2 e 3 serão apreciadas.

Graham Perrin
fonte

Respostas:

15

Geralmente, não há correlação entre um processo presotop e um aplicativo que não responde:

  • preso significa que o processo está atualmente ininterrupto, o que geralmente acontece se o processo estiver aguardando a leitura de um disco ou bloco de dados da rede (ou coisas semelhantes de baixo nível). Tecnicamente falando, o processo está sendo executado no espaço do kernel (também conhecido como kernel do Unix) e não pode ser interrompido (nem mesmo um kill -9impacto teria). Geralmente, esses estados bloqueados duram apenas milissegundos (como você pode ver toptambém porque o número de processos bloqueados muda a cada ciclo de exibição).
  • aplicativos não respondentes podem estar ocupados demais para responder a qualquer evento que o OS X realize neles.

Vejo uma situação em que um processo travado corresponde a um aplicativo que não responde: um processo pode ser travado por um período muito longo, talvez travado sem parar, sem possibilidade de matá-lo. Isso geralmente é o resultado de algum erro de programação, por exemplo, desconexão inadequada de um dispositivo em rede e o kernel continua tentando lê-lo. Em casos como esse, mesmo uma rescisão forçada não removerá o processo.

nohillside
fonte
Obrigado - se preso é sinônimo de ininterrupta , estou familiarizado com esse estado. uninterruptibleé comumente visto quando pressiono Control-T ( SIGINFO ) durante a execução fsck_hfsna linha de comando. Mais informações na página de manualSIGINFO do termios (4) OS X da Apple .
Graham Perrin
Relacionada a esta resposta, uma pergunta no Stack Overflow pode ser interessante: Como identificar o processo de não resposta programaticamente .
Graham Perrin
2
Eu dei uma olhada no código fonte do topo: ininterrupto é o mesmo que preso.
nohillside
Gotcha - destaques do libtop.c em código aberto para Mac OS X 10.7.4.
Graham Perrin
1

Estado do processo U, TH_STATE_UNINTERRUPTIBLE e estado do processo Linux D

Alguém chamou a atenção para o topo do MacOS: “preso” significa “ininterrupto” | nelsonslog

...  TH_STATE_UNINTERRUPTIBLE, que acredito ser o que psrelata como o estado do processo "U". Estou supondo que é isso que o Linux chama de "D" para "Espera de dispositivo". Nesse caso, na maioria dos casos, o processo é bom, aguardando a conclusão de algumas E / S. ...

A página de manual do Ubuntu para ps confirma um código de estado do processo -

D    Uninterruptible sleep (usually IO)

- sem outra menção de ininterrupta .

Na referência cruzada do kernel do FreeBSD / Linux Linux:

Eu encontrei uma discussão em 2002 The Answer Gang 83: Como matar um processo em estado de sono ininterrupto? ( destaques ) que se encaixa perfeitamente nas observações feitas pelo @patrix.

Por último, mas não menos importante, um 2004 pós [X-Unix] PS e Processos Preso ( destaques ) mencionando WindowServer , que se encaixa muito bem com a questão -relacionados que me levou a postar a pergunta aqui:

Graham Perrin
fonte