Qual é a diferença entre Trap e Interrupt?
Se a terminologia for diferente para sistemas diferentes, o que eles significam no x86?
Qual é a diferença entre Trap e Interrupt?
Se a terminologia for diferente para sistemas diferentes, o que eles significam no x86?
Uma armadilha é uma exceção em um processo do usuário. É causado por divisão por zero ou acesso inválido à memória. É também a maneira usual de invocar uma rotina do kernel (uma chamada do sistema ) porque é executada com uma prioridade mais alta que o código do usuário. O tratamento é síncrono (portanto, o código do usuário é suspenso e continua depois). Em certo sentido, eles são "ativos" - na maioria das vezes, o código espera que a armadilha aconteça e depende desse fato.
Uma interrupção é algo gerado pelo hardware (dispositivos como disco rígido, placa gráfica, portas de E / S, etc.). Elas são assíncronas (ou seja, não ocorrem em locais previsíveis no código do usuário) ou "passivas", pois o manipulador de interrupções precisa esperar que elas aconteçam eventualmente.
Você também pode ver uma interceptação como um tipo de interrupção interna da CPU, pois o manipulador do manipulador de interceptações parece um manipulador de interrupções (registradores e ponteiros de pilha são salvos, há uma alternância de contexto, a execução pode continuar em alguns casos em que parou) .
Armadilhas e interrupções estão intimamente relacionadas. As armadilhas são um tipo de exceção e as exceções são semelhantes às interrupções.
Intel x86 define duas categorias que se sobrepõem, eventos vectored ( interrupções vs exceções ), e classes de exceção ( falhas vs armadilhas vs aborts ).
Todas as citações nesta publicação são da versão de abril de 2016 do Intel Software Developer Manual . Para a perspectiva x86 (definitiva e complexa), recomendo a leitura do capítulo do SDM sobre o tratamento de interrupções e exceções.
Eventos vetorizados
Eventos vetoriais ( interrupções e exceções ) fazem com que o processador pule para um manipulador de interrupções depois de salvar grande parte do estado do processador (o suficiente para que a execução possa continuar a partir desse ponto posteriormente).
Exceções e interrupções têm um ID, chamado vetor, que determina para qual manipulador de interrupções o processador salta. Manipuladores de interrupção são descritos na Tabela de descritores de interrupção.
Interrompe
Exceções
Classificações de exceção
Resumo: as armadilhas incrementam o ponteiro da instrução, as falhas não e abortam 'explodir'.
Armadilha
Culpa
Exemplo: Uma falha de página geralmente é recuperável. Uma parte do espaço de endereço de um aplicativo pode ter sido trocada para o disco a partir da ram. O aplicativo acionará uma falha de página ao tentar acessar a memória que foi trocada. O kernel pode extrair essa memória do disco para o ram e devolver o controle ao aplicativo. O aplicativo continuará de onde parou (na instrução de falha que estava acessando a memória trocada), mas desta vez o acesso à memória deve ter êxito sem falha.
Abortar
Casos Edge
As interrupções invocadas por software (acionadas pela instrução INT) se comportam de maneira semelhante a uma armadilha. A instrução é concluída antes que o processador salve seu estado e salte para o manipulador de interrupções.
fonte
De um modo geral, termos como exceções, falhas, interrupções , interceptações e interrupções significam a mesma coisa e são chamados de "interrupções".
Chegando à diferença entre Interceptação e Interrupção:
Enquanto que
fonte
Uma armadilha é um tipo especial de interrupção, geralmente chamado de interrupção de software . Uma interrupção é um termo mais geral que abrange interrupções de hardware (interrupções de dispositivos de hardware) e interrupções de software (interrupções de software, como traps ).
fonte
Uma armadilha é chamada pelo código como programas e usada, por exemplo, para chamar rotinas do SO (ou seja, normalmente síncronas). Uma interrupção é chamada por eventos (muitas vezes o hardware, como a placa de rede que recebeu dados ou o timer da CPU) e - como o nome sugere - interrompe o fluxo de controle normal, pois a CPU precisa mudar para a rotina do driver para lidar com o evento.
fonte
Uma interrupção é uma mudança de fluxo gerada por hardware dentro do sistema. Um manipulador de interrupção é convocado para lidar com a causa da interrupção; O controle é retornado ao contexto e instrução interrompidos. Uma armadilha é uma interrupção gerada por software. Uma interrupção pode ser usada para sinalizar a conclusão de uma E / S para evitar a necessidade de pesquisa de dispositivo. Uma interceptação pode ser usada para chamar rotinas do sistema operacional ou detectar erros aritméticos.
fonte
Eu acho que as armadilhas são causadas pela execução das instruções atuais e, portanto, são chamadas como eventos síncronos. onde as interrupções são causadas por uma instrução independente em execução no processador que está relacionada a eventos externos e, portanto, é conhecida como assíncrona.
fonte
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 desabilitam outras interrupções de hardware, mas isso não é verdade para traps. Se você precisar desabilitar interrupções de hardware até que uma interceptação seja veiculada, é necessário limpar explicitamente o sinalizador de interrupção. E, geralmente, o sinalizador de interrupção no computador afeta as interrupções (hardware), em oposição aos traps. Isso significa que limpar esta bandeira não impedirá armadilhas. Diferentemente das traps, as interrupções devem preservar o estado anterior da CPU.
fonte
Uma armadilha é uma interrupção do software. Se você escreve um programa no qual declara uma variável dividida pelo valor zero, ela é tratada como uma armadilha. Sempre que você executa esse programa, ele gera o mesmo erro ao mesmo tempo. versão especial da armadilha na qual um programa solicita ao sistema operacional o serviço necessário. Em caso de interrupção (uma palavra geral para interrupções de hardware) como um erro de E / S, a CPU é interrompida em tempo aleatório e, é claro, não é culpa de nossos programadores. É o hardware que os traz à tona.
fonte