Diferença entre interrupção e exceção

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 esse são chamados de interrupções. As interrupções podem ser causadas por falhas de software ou hardware. Interrupções de hardware são chamadas (simplesmente) Interrupções, enquanto interrupções de software são chamadas Exceções. Depois que uma interrupção (software ou hardware) é disparada, o controle é transferido para uma sub-rotina especial chamada ISR (Interrupt Service Routine) que pode lidar com as condições 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, externo significa externo à CPU. As interrupções de hardware geralmente vêm de muitas fontes diferentes, como chip de timer, dispositivos periféricos (teclados, mouse etc.), portas de E / S (serial, paralela 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 em execução. Por exemplo, um evento como o pressionamento de uma tecla no teclado pelo usuário ou o tempo limite de temporização de um hardware interno pode aumentar esse tipo de interrupção e informar à CPU que um determinado dispositivo precisa de alguma atenção. Em uma situação como essa, a CPU interrompe o que estava fazendo (ou seja, pausa o programa atual), fornece o serviço exigido pelo dispositivo e volta ao programa normal. Quando ocorrem interrupções de hardware e a CPU inicia o ISR, outras interrupções de hardware são desativadas (por exemplo, em máquinas 80 × 86). Se você precisar que outras interrupções de hardware ocorram enquanto o ISR estiver em execução, faça isso explicitamente limpando o sinalizador de interrupção (com instruções sti). Em máquinas 80 × 86, limpar o sinalizador de interrupção afetará apenas interrupções de hardware.

O que são exceções?

Exceção é uma interrupção de software, que pode ser identificada como uma rotina de tratamento especial. A exceção pode ser identificada como uma interceptação que ocorre automaticamente (uma interceptação pode ser identificada como uma transferência de controle, iniciada pelo programador). Geralmente, não há instruções específicas associadas a exceções (traps são gerados 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, divisão por zero, a execução de um código de operação ilegal ou falha relacionada à memória pode causar exceções. Sempre que uma exceção é gerada, a CPU suspende temporariamente o programa que estava sendo executado e inicia o ISR. O ISR conterá o que fazer com a exceção. Isso pode corrigir o problema ou, se não for possível, pode interromper o programa normalmente, 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, o erro de divisão por zero só pode ocorrer durante a execução da instrução de divisão.

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

Interrupções são interrupções de hardware, enquanto exceções são interrupções de software. Ocorrências de interrupções de hardware geralmente desabilitam outras interrupções de hardware, mas isso não ocorre com exceções. Se você precisar desabilitar interrupções de hardware até que uma exceção seja veiculada, limpe explicitamente o sinalizador de interrupção. E geralmente o sinalizador de interrupção no computador afeta as interrupções (hardware) em oposição às exceções. Isso significa que a limpeza desse sinalizador não impedirá exceções.