O que acontece com os trabalhos suspensos no unix?

6

Podemos emitir CTRL + Z para suspender qualquer trabalho no Unix e, mais tarde, trazê-lo de volta à vida usando fg ou bg . Eu quero entender o que acontece com esses trabalhos que estão suspensos assim? Eles são mortos / terminados? Em outras palavras, qual é a diferença entre matar e suspender um processo?

    
por Geek 21.01.2013 / 18:30

3 respostas

9

Os trabalhos não são mortos, eles são suspensos. Eles permanecem exatamente como estão no momento da suspensão: o mesmo mapeamento de memória, o mesmo arquivo aberto, os mesmos threads,… É só que o processo fica lá sem fazer nada até que seja retomado. É como quando você pausa um filme. Um processo suspenso se comporta exatamente como um processo ao qual o agendador se recusa a dar tempo de CPU, exceto que o estado do processo é registrado como suspenso em vez de ser executado.

    
por 22.01.2013 / 00:31
8

Na perspectiva de um usuário, isso significa que o trabalho está pausado. Ele não utilizará mais CPU. Ele irá , no entanto, continuar usando a mesma quantidade de RAM. É por isso que você pode trazê-lo de volta ao primeiro plano com fg e continuará de onde parou .

Se você matar um trabalho e reiniciá-lo, ele será reiniciado do zero.

    
por 21.01.2013 / 21:12
1

Quando suspenso, o kernel não inclui o processo na fila do processador. Quando morto, a pilha (memória) do processo é liberada.

    
por 21.01.2013 / 19:19