Como um processo termina depois que ele tenta executar uma instrução ilegal?

0

Quando um processo executa uma instrução ilegal (como divisão por zero, ou tentando acessar um espaço de memória proibido), isso é detectado pela CPU, então o A CPU salva o que precisa salvar e altera o IP (ponteiro de instrução) para o endereço da rotina do sistema operacional que é responsável por esse erro específico. Então o processo termina anormalmente (ou não?).

Eu gostaria de saber duas coisas:
1. O processo que tenta executar instrução ilegal sempre termina anormalmente?
2. A terminação é executada pelo SO ou CPU?

    
por Hanlon 27.02.2018 / 19:26

1 resposta

1
  1. Não.
  2. Exceção ocorre na CPU, depois a CPU transfere o controle para o sistema operacional.

Nós chamamos esse evento de "exceção". O DivisionByZero é uma exceção típica.

A CPU opera com opcodes, não com processo / software completo. Transferências de SO o próximo opcode para a CPU. Se a resposta da CPU for uma exceção, o SO tratará do que será seguido a seguir: término ou execução. Também processo pode configurar o sistema operacional para gerenciar as próprias exceções, neste caso, a exceção da CPU recebida pelo sistema operacional e encaminhado para o processo, e processo pode gerenciar a próxima etapa.

Mas este é um tópico muito composto, difícil de resumir em poucas palavras.

    
por 27.02.2018 / 21:57