Diferença Entre Interrupção e Exceção

Anonim

Interrupção vs Exceção

Em qualquer computador, durante a execução normal de um programa, pode haver eventos que podem causar a interrupção temporária da CPU. Eventos como este são chamados de interrupções. As interrupções podem ser causadas por falhas de software ou hardware. As interrupções de hardware são chamadas (simplesmente) Interrupções, enquanto as interrupções de software são chamadas Exceções. Uma vez que uma interrupção (software ou hardware) é aumentada, o controle é transferido para uma sub-rotina especial chamada ISR (Rotting Service Routine) que pode lidar com as condições que são geradas pela interrupção.

O que é Interrupção?

O termo interrupção geralmente é reservado para interrupções de hardware. São interrupções de controle de programa causadas por eventos externos de hardware. Aqui, o externo é externo à CPU. As interrupções de hardware geralmente provêm de várias fontes diferentes, como chip de temporização, dispositivos periféricos (teclados, mouse, etc.), portas de E / S (serial, paralelo, etc.), unidades de disco, relógio CMOS, placas de expansão (placa de som, vídeo cartão, etc.). Isso significa que as interrupções de hardware quase nunca ocorrem devido a algum evento relacionado ao programa de execução. Por exemplo, um evento como uma pressão de tecla no teclado pelo usuário, ou um tempo de temporização interno do temporizador de hardware pode aumentar esse tipo de interrupção e pode informar a CPU de que um determinado dispositivo precisa de alguma atenção. Em uma situação como essa, a CPU irá interromper o que estava fazendo (i. E. Pausa o programa atual), fornece o serviço exigido pelo dispositivo e retornará ao programa normal. Quando as interrupções de hardware ocorrem e a CPU inicia o ISR, outras interrupções de hardware são desativadas (por exemplo, em 80 × 86 máquinas). Se você precisar de outras interrupções de hardware para ocorrer enquanto o ISR está sendo executado, você precisa fazer isso explicitamente, eliminando o sinalizador de interrupção (com a instrução sti). Em 80 × 86 máquinas, limpar a bandeira de interrupção afetará apenas as interrupções de hardware.

O que é Exceções?

Exceção é uma interrupção de software, que pode ser identificada como uma rotina de manipulador especial. A exceção pode ser identificada como uma armadilha ocorrendo automaticamente (um Trap pode ser identificado como uma transferência de controle, iniciada pelo programador). Geralmente, não há instruções específicas associadas a exceções (as armadilhas são geradas usando uma instrução específica). Portanto, uma exceção ocorre devido a uma condição "excepcional" que ocorre durante a execução do programa. Por exemplo, a divisão por zero, a execução de um código aberto ou uma falha relacionada à memória pode causar exceções. Sempre que uma exceção é aumentada, a CPU suspende temporariamente o programa que estava executando e inicia o ISR. O ISR conterá o que fazer com a exceção. Pode corrigir o problema ou, se não for possível, pode interromper o programa graciosamente, imprimindo uma mensagem de erro adequada.Embora uma instrução específica não cause uma exceção, uma exceção sempre será causada por uma instrução. Por exemplo, a divisão por erro zero só pode ocorrer durante a execução das instruções de divisão.

Qual a diferença entre interrupção e exceção?

Interrupções são interrupções de hardware, enquanto as exceções são interrupções de software. Ocorrências de interrupções de hardware geralmente desativam outras interrupções de hardware, mas isso não é verdade para exceções. Se você precisar desativar as interrupções de hardware até que uma exceção seja atendida, você precisa limpar explicitamente o sinalizador de interrupção. E, normalmente, a bandeira de interrupção no computador afeta as interrupções (hardware) em oposição às exceções. Isso significa que limpar esse sinalizador não impedirá exceções.