Diferença entre interrupção e armadilha

Anonim

Interrupção contra armadilha

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 estes 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 ou Armadilhas. Uma Exceção é uma interrupção de software gerada automaticamente, enquanto uma Trap é uma interrupção invocada pelo software iniciada pelo programador. 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 é uma interrupção?

O termo interrupção geralmente é reservado para interrupções de hardware . 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 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 (som cartão, placa de video, 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 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, desmarcando 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 é uma Armadilha?

A Trap pode ser identificada como uma transferência de controle, que é iniciada pelo programador. O termo Trap é usado alternadamente com o termo Exception (que é uma interrupção de software que ocorre automaticamente). Mas alguns podem argumentar que uma armadilha é simplesmente uma chamada de sub-rotina especial. Então, eles entram na categoria de interrupções invocadas pelo software. Por exemplo, em 80 × 86 máquinas, um programador pode usar a instrução int para iniciar uma armadilha. Como uma armadilha é sempre incondicional, o controle sempre será transferido para a sub-rotina associada à armadilha. A instrução exata, que invoca a rotina para lidar com a armadilha, é facilmente identificada porque uma instrução explícita é usada para especificar uma armadilha.

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

Interrupções são interrupções de hardware, enquanto as armadilhas são interrupções invocadas por software. Ocorrências de interrupções de hardware normalmente desativam outras interrupções de hardware, mas isso não é verdade para armadilhas. Se você precisar desativar as interrupções de hardware até que uma armadilha seja atendida, você precisa limpar explicitamente o sinalizador de interrupção. E, geralmente, a bandeira de interrupção no computador afeta as interrupções (hardware) em oposição às armadilhas. Isso significa que limpar esta bandeira não impedirá armadilhas. Ao contrário das armadilhas, as interrupções devem preservar o estado anterior da CPU.