Interrupção vs Interceptaçã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 esses 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 ou Interceptações. Uma exceção é uma interrupção de software gerada automaticamente, enquanto um trap é uma interrupção chamada por software iniciada pelo programador. 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 é 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 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, interrompe 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 sti instrução). Em máquinas 80 × 86, limpar o sinalizador de interrupção afetará apenas interrupções de hardware.
O que é uma armadilha?
Uma interceptação pode ser identificada como uma transferência de controle, iniciada pelo programador. O termo Trap é usado de forma intercambiável com o termo Exceção (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 se enquadram na categoria de interrupções invocadas por software. Por exemplo, em máquinas 80 × 86, um programador pode usar o int instruções 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 chama a rotina para manipular a armadilha, é facilmente identificada porque uma instrução explícita é usada para especificar uma armadilha..
Qual é a diferença entre Interrupt e Trap?
Interrupções são interrupções de hardware, enquanto traps são interrupções invocadas por software. Ocorrências de interrupções de hardware geralmente desativam outras interrupções de hardware, mas isso não é verdade para traps. Se você precisar desabilitar as interrupções de hardware até que uma interceptaçã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 vez de traps. Isso significa que a limpeza dessa bandeira não impedirá armadilhas. Diferentemente das traps, as interrupções devem preservar o estado anterior da CPU.