Si chiamano IRQ (Interrupt request) i segnali che le componenti del computer mandano
alla CPU per richiederne l'uso. Quando la CPU riceve uno di questi segnali (un interrupt)
interrompe il suo lavoro, salva i valori dei registri e tutte le grandezze che
descrivono lo stato del programma in esecuzione, quindi esegue la funzione che corrisponde
all'IRQ in questione, e puo' passare il controllo ad un driver per la lettura della tastiera,
per l'I/O da disco etc.
Una volta eseguita la funzione richiesta la CPU recupera i vecchi valori dei registri e riprende
l'esecuzione del programma che era stato interrotto.
Una volta l'assegnazione degli IRQ avveniva settando a mano appositi ponticelli sulle varie schede
ed era difficile assegnare gli IRQ in modo da evitare conflitti.
Il sistema Plug and Play cerca di automatizzare la gestione degli IRQ ed e'
il BIOS a creare una tabella degli IRQ disponibili, ad inizializzare le varie schede
e ad assegnare ad esse degli IRQ univoci, il sistema operativo fa poi
riferimento alla tabella degli IRQ fornita dal BIOS. Ma nonostante
tutto 15 IRQ sono pochi nei PC moderni, varie periferiche condividono gli stessi IRQ
(IRQ sharing) ed e' il
sistema operativo che deve di volta in volta capire quale componente ha emesso il segnale.
Anche in Windows 98 od XP, che gestiscono loro gli IRQ ed il Plug and Play, problemi
di conflitti restano.
Attualmente i vecchi interrupt controller sono caduti in disuso, e molte schede madri sono equipaggiate con l'integrato Intel 82093AA , o similari, che implementano il sistema detto "IO/APIC" per la gestione degli interrupt, adatto anche a PC a piu' CPU. Questo sistema pero' simula il comportamento dei vecchi sistemi con 16 IRQ, per cui al boot di sistema il BIOS ci mostra sempre la vecchia numerazione.
Il Bus PCI ha un suo sistema di interrupt, denominati A,B,C,D , che poi mappati dal BIOS sugli IRQ, in genere dal 9 al 12.
numero di IRQ | uso | |
---|---|---|
0 | interval timer (System Timer) | orologio programmabile di sistema, il PC e' interrotto periodicamente da questo segnale, in modo che la CPU possa riesaminare la coda dei processi in attesa |
1 | tastiera | |
2 | corrisponde al 9 | |
3 | porte seriali 2 e 4 (COM2,COM4) | |
4 | porte seriali 1 e 3 (COM1,COM3) | |
5 | porta parallela (LPT2), in genere per stampante | questo IRQ e' anche usato dalle schede audio |
6 | controller del floppy | |
7 | porta parallela (LPT1) | usato anche da schede SCSI o audio |
8 | real time clock | |
9 | per varie schede ausiliarie | |
10 | per varie schede ausiliarie | |
11 | per varie schede ausiliarie | |
12 | mouse PS/2 | |
13 | coprocessore matematico | |
14 | controller IDE primario | |
15 | controller IDE secondario |
Gli interrupt di numero piu' basso hanno la priorita' su quelli di numero alto.