Definição
Uma Rotina de Serviço de Interrupção (ISR) ou manipulador de interrupção é uma função especial executada pela CPU quando ocorre uma interrupção de hardware ou software. Lida com eventos críticos de tempo (E/S, timers, erros) que não podem esperar o fluxo normal do programa.
Como Funciona
- Sinal de interrupção chega (ex.: tecla pressionada, disco pronto, pacote de rede).
- CPU suspende tarefa atual, salva contexto (PC, flags, registradores).
- CPU salta para endereço da ISR na tabela de vetores de interrupção.
- ISR executa: lê dispositivo, processa dados, reconhece interrupção.
- ISR retorna via
IRET (x86) / RETI (8085) — CPU restaura contexto e retoma.
Tarefas Típicas de ISR
- Ler entrada de teclado/mouse/toque
- Servir dados serial/USB/rede
- Lidar com ticks de timer (escalonador)
- Gerenciar erros de hardware (paridade, page fault)
- Sinalizar tarefas/semáforos de RTOS
Regras Críticas de Design
- Mantenha ISRs curtas e rápidas — adie trabalho pesado para threads/tasks.
- Desabilite interrupções minimamente; use níveis de prioridade.
- Nunca bloqueie (sem waits, sleeps, mutexes).
- Seguras para reentrância se dados compartilhados acessados.
Exemplo: ISR de Teclado
Tecla pressionada → interrupção → ISR lê scan code do controlador de teclado → converte para ASCII → coloca em buffer de entrada → sinaliza task de entrada → retorna.
ISRs são essenciais para responsividade em tempo real em kernels de SO, firmware embarcado e drivers de dispositivo.