Interrupt di Massima Priorità nell'Architettura x86: NMI, MCE ed Eccezioni Critiche
Gerarchia di Priorità degli Interrupt (x86/x64)
Gli interrupt del processore sono prioritari per garantire che gli eventi critici del sistema siano gestiti immediatamente. Dal più alto al più basso:
1. Non-Maskable Interrupt (NMI) – Il più alto
- Non può essere disabilitato da CLI/STI o flag IF.
- Segnala errori hardware irrecuperabili: errori parità/ECC memoria, errori fatali PCIe, timeout watchdog, guasto hardware.
- L'handler gira su stack NMI dedicato (IST).
- Tipicamente provoca kernel panic / bugcheck / riavvio.
2. Machine Check Exception (MCE) – Vettore 18
- Errori interni CPU: parità cache, corruzione TLB, errori bus, eventi di throttling termico.
- Registri specifici del modello (MSR) registrano dettagli (MCi_STATUS, MCi_ADDR).
- Può essere corretto (CMC), recuperabile o fatale.
3. Double Fault (#DF) – Vettore 8
- Seconda eccezione durante la gestione della prima (es. page fault in IDT).
- Indica overflow stack kernel, corruzione IDT, grave bug driver.
- Usa Task Gate o IST per separare lo stack.
- Quasi sempre fatale → riavvio.
4. Page Fault (#PF) – Vettore 14
- Non la priorità più alta, ma l'eccezione critica più frequente.
- Paginazione su richiesta, COW, swap, violazione di accesso, pagine guardia.
- Gestito dal memory manager del SO; può essere risolto (carica pagina) o fatale (segfault).
5. System Management Interrupt (SMI)
- Entra in System Management Mode (SMM) – modalità CPU separata, invisibile al SO.
- Gestisce: gestione potenza, termico, controllo hardware, servizi runtime BIOS/UEFI.
- Preempte tutto incluso NMI (su alcune piattaforme).
- Preoccupazione di sicurezza: rootkit SMM.
6. Thermal Monitor Interrupt
- Sensore termico sul die si attiva a Tj,max (es. 100°C).
7. Watchdog Timer (WDT) Interrupt
- Timer hardware resettato da heartbeat software.
- Scadenza → NMI o reset. Rileva hang del kernel.
- IPMI, iDRAC, IPMI, timer TCO (Intel), SP805 (ARM).
Nota sulla Priorità
L'ordinamento esatto varia in base alla microarchitettura. NMI e SMI sono architettonicamente i più alti. Gli interrupt maskabili esterni (IRQ) sono inferiori, prioritari da APIC/PIC (timer, IPI, dispositivo).