Para controlar entrada e saída de dados,
não é interessante que a CPU tenha que ficar
continuamente monitorando e status de dispositivos
como discos ou teclados.
O mecanismo de interrupções permite que o hardware
"chame a atenção" da CPU quando há algo a ser feito.
Interrupções geradas por algum dispositivo externo à CPU,
como teclado ou controlador de disco, são chamadas
de interrupções de hardware ou assíncronas
(ocorrem independentemente das instruções
que a CPU está executando.
Quando ocorre uma interrupção, a CPU interrompe o processamento
do programa em execução e executa um pedaço de código
(tipicamente parte do sistema operacional) chamado
de tratador de interrupção.
Em muitos casos, após a execução do tratador, a CPU
volta a executar o programa interrompido.
Um outro tipo de interrupção são as interrupções síncronas,
muitas vezes também chamadas de traps, que ocorrem em consequência da instrução sendo executada.
Algumas são geradas pelo hardware, para indicar por exemplo overflow
em operações aritméticas ou acesso a regiões de memória
não permitidas.
Essas são situações em que o programa não teria como prosseguir.
O hardware sinaliza uma interrupção para passar
o controle para uma parte do sistema operacional (o tratador
da interrupção em questão), que tipicamente termina
a execução do programa.
Tipicamente, o hardware detecta que ocorreu uma
interrupção, aguarda o final da execução da instrução corrente
e aciona o tratador, antes salvando o contexto
de execução do processo interrompido.
Para que a execução do processo possa ser reiniciada
mais tarde, é necessário salvar o program counter
e outros registradores de status.
Os registradores com dados do programa devem ser
salvos pelo próprio tratador (ou seja, por software)
caso ele os utilize.
Em muitas arquiteturas, existe uma pilha independente associada
ao tratamento de interrupções.
Fonte: http://www.inf.puc-rio.br/~inf1018/2010.2/interrupcoes.html