Execução Atômica e Determinismo em Tempo Real
Mascaramento de interrupção desabilita temporariamente o tratamento de interrupções, permitindo que a CPU execute seções críticas de código atomicamente. É um primitivo fundamental de sincronização.
Principais Razões
- Proteção de Seção Crítica: Previne condições de corrida ao acessar recursos compartilhados (variáveis globais, registradores de hardware, listas encadeadas). Sem mascaramento, uma ISR poderia corromper dados no meio da atualização.
- Determinismo em Tempo Real: Garante tempo de execução pior-caso (WCET) para tarefas de alta prioridade limitando latência de interrupção. Essencial para sistemas hard real-time (automotivo, aviônicos, controle de motor).
- Read-Modify-Write Atômico: Permite implementação segura de semáforos, mutexes e algoritmos lock-free em single-core.
- Gerenciamento de Energia: Desabilitar clocks do controlador de interrupção durante deep sleep reduz corrente de vazamento em dispositivos a bateria.
- Otimização de Troca de Contexto: Reduz saves/restores de contexto desnecessários quando interrupções são adiadas durante rotinas curtas do kernel.
Mecanismos de Implementação
- Máscara Global: Flag única (ex.: x86
CLI/STI, ARM CPSID I/CPSIE I, RISC-V mie CSR).
- Máscara Seletiva: Bits de habilitação por interrupção no controlador de interrupção (PIC, APIC, GIC, PLIC).
- Limiar de Prioridade: Mascara todos abaixo de um nível (ARM BASEPRI, RISC-V PMP).
Riscos de Uso Excessivo
Mascaramento excessivo → latência de interrupção aumentada, deadlines perdidos, eventos perdidos (serial overrun, drift de timer tick). Boa prática: mantenha seções mascaradas < 10–20 µs; use locking fine-grained onde possível.