Interromper vs Exceção
Em qualquer computador, durante a execução normal de um programa, podem ocorrer eventos que podem fazer com que a CPU pare temporariamente. Eventos como esse 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) de interrupções, enquanto as interrupções de software são chamadas de exceções. Uma vez que uma interrupção (software ou hardware) é gerada, o controle é transferido para uma sub-rotina especial chamada ISR (Interrupt 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. Eles são interrupções de controle de programa causadas por eventos de hardware externos. Aqui, externo significa externo à CPU. As interrupções de hardware geralmente vêm de muitas fontes diferentes, como chip de temporizador, dispositivos periféricos (teclados, mouse, etc.), portas de E / S (serial, paralela, etc.), drives 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 um temporizador de hardware interno pode gerar 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 irá parar o que quer que esteja fazendo (ou seja, pausa o programa atual),fornece o serviço exigido pelo dispositivo e retornará ao programa normal. Quando ocorrem interrupções de hardware e a CPU inicia o ISR, outras interrupções de hardware são desabilitadas (por exemplo, em máquinas 80 × 86). Se você precisar que outras interrupções de hardware ocorram enquanto o ISR está em execução, você precisa fazer isso explicitamente, limpando o sinalizador de interrupção (com instrução sti). Em máquinas 80 × 86, limpar o sinalizador de interrupção afetará apenas as interrupções de hardware.limpar o sinalizador de interrupção afetará apenas as interrupções de hardware.limpar o sinalizador de interrupção afetará apenas as interrupções de hardware.
O que são exceções?
A exceção é uma interrupção de software, que pode ser identificada como uma rotina de tratamento especial. A exceção pode ser identificada como um trap que ocorre automaticamente (um Trap pode ser identificado como uma transferência de controle, que é 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, a divisão por zero, a execução de um opcode ilegal ou falha relacionada à memória pode causar exceções. Sempre que uma exceção é levantada, a CPU suspende temporariamente o programa que estava executando e inicia o ISR. ISR conterá o que fazer com a exceção. Ele pode corrigir o problema ou, se não for possível, pode abortar 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?
As 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 desabilitam outras interrupções de hardware, mas isso não é verdadeiro para as exceções. Se você precisar proibir interrupções de hardware até que uma exceção seja atendida, você precisa limpar 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 limpar esse sinalizador não evitará exceções.