Existe uma diferença entre um programa “crashing” e um programa que parou de responder?

1

Eu me vejo confuso com esses dois termos. Eu tinha pensado originalmente que quando um programa "falha", ele automaticamente sai e o processo é eliminado. Mas quando o programa pára de responder, ele apresenta o erro "Programa não está respondendo" e, em seguida, pergunta o que você gostaria de fazer em seguida.

Existe um termo que descreve o "programa pára de responder"? Ou esse termo é apenas a palavra "crash"? Existe uma diferença entre os dois, falha e o programa pára de responder?

    
por yuritsuki 14.11.2014 / 01:00

1 resposta

5

Existe.

Os programas podem ser escritos usando uma técnica chamada exceções. Veja uma descrição simplificada de como eles funcionam:

  • A ideia é que você possa contar uma parte de um programa, quando se deparar com um erro ou algo que não possa ser resolvido, para lançar uma exceção .
  • Outra parte do programa terá sido configurada anteriormente para capturar exceções - este é o manipulador de exceção .
  • Se o erro for algo que até mesmo o manipulador de exceções não pode lidar com isso, ele pode fazer uma das duas coisas:
    • Jogue-o em outro manipulador de exceção que possa manipulá-lo.
    • Basta jogar "lá fora" para qualquer coisa - se não houver nenhum manipulador de exceção disposto / disponível para recebê-lo, o sistema operacional o captura e você vê o diálogo de falha.

Assim, quando um programa falha, ele literalmente desistiu e terminou a execução.

Isso é diferente quando um programa pára de responder. Programas do Windows mantêm a comunicação com o sistema operacional usando um loop de mensagem . Se o programa ficar travado, aguardando E / S ou um loop infinito, ele deixará de receber mensagens do loop e o Windows informará o programa não está respondendo. Uma coisa que pode fazer com que os programas esperem inesperadamente na E / S é quando você está com pouca memória RAM e o SO precisa usar o arquivo de paginação para manipular as solicitações de memória. Outro pode ser se o seu disco falhar de repente e o programador nunca considerar a possibilidade de que gravar em um arquivo pode ser interrompido com algo parecido - ou o programador fez algo como "se essa operação falhar, tente novamente para sempre".

Então, neste caso, o programa ainda está em execução, não está mais falando com o Windows.

    
por 14.11.2014 / 01:22