Interrupt request
# Interrupt request

Interrupt request, abbreviato in IRQ, è un sistema utilizzato dai componenti hardware per segnalare eventi alla CPU.

## Descrizione

Il meccanismo degli interrupt è utilizzato da quasi tutti i modelli di CPU esistenti sul mercato, perché è il modo più facile per interrompere il normale flusso del programma quando accade un evento inatteso.

L'espressione IRQ è spesso usata come sinonimo di interrupt, ma descrive un meccanismo diverso: un IRQ è una richiesta da parte dell'hardware collegato alla CPU, eseguita mandando opportuni segnali ai pin fisici di collegamento della CPU stessa. Tale richiesta, a seconda dello stato in cui si trova la CPU, può anche essere accantonata per essere eseguita in un secondo tempo. A tale proposito esistono dei particolari tipi di IRQ (a volte chiamati NMI, Non Maskable Interrupt) che non possono essere accantonati ma eseguiti immediatamente.

Gli IRQ sono spesso organizzati in gerarchie di priorità, dove un IRQ di basso livello può essere a sua volta interrotto da un IRQ di livello più alto. I diversi tipi di computer in genere standardizzano i loro IRQ in modo che ad un certo IRQ corrisponda sempre un certo tipo di evento esterno: un tasto premuto sulla tastiera, una comunicazione in arrivo dalla porta seriale e così via.

Sui sistemi x86, su cui sono basati la maggior parte dei PC odierni, sono attualmente presenti 16 IRQ (0-15), ciascuno dei quali rappresenta un componente hardware fisico o virtuale. Per esempio, IRQ0 è assegnato al timer di sistema mentre IRQ1 è assegnato alla tastiera. I numeri più bassi denotano funzionalità più critiche e possono interrompere quelli più alti.

In passato, sempre per quanto riguarda i sistemi x86, esistevano solo 8 IRQ (0-7). Con la crescente necessità di nuovo hardware crebbe anche la necessità di nuovi IRQ. La soluzione fu aggiungere altri 8 IRQ, collegando IRQ2 al nuovo IRQ9.

Nei computer di tipo Pentium (e in alcuni 486) gli IRQ possono essere gestite dall'APIC.

## IRQ nel PC AT

* PIC A:
   * IRQ0 = Timer 8253/8254 (System Timer)
   * IRQ1 = Tastiera
   * IRQ2 = Riservato per il PIC8259B (PIC B Out); Request su IRQ2 girate a IRQ9
   * IRQ3 = COM 2 e COM 4
   * IRQ4 = COM 1 e COM 3
   * IRQ5 = LPT 2 o scheda audio
   * IRQ6 = Lettore floppy disk
   * IRQ7 = LPT 1 e LPT 3
* PIC B:
   * IRQ8 = Real-time clock (RTC)
   * IRQ9 = Redirect da IRQ 2
   * IRQ10 = Non assegnato
   * IRQ11 = Non assegnato
   * IRQ12 = Mouse PS/2
   * IRQ13 = coprocessore matematico
   * IRQ14 = Canale IDE primario
   * IRQ15 = Canale IDE secondario
