Dato che il processore non può trattare più informazioni simultaneamente (esso tratta un'informazione per volta, il multitask consiste nell'alternare dei pezzi di istruzioni di azioni differenti), un programma in corso di esecuzione può essere momentaneamente sospeso con un'interruzione, il tempo necessario all'esecuzione di una interruzione di routine. Il programma interrotto può in seguito riprendere la proprio esecuzione. Esistono 256 indirizzi di interruzione differenti.
Un'interruzione diventa un'interruzione hardware quando è richiesta da una componente hardware del computer. In effetti, nel computer esistono numerose periferiche. Queste hanno solitamente bisogno di utilizzare le risorse del sistema, se non altro per comunicarci. Così, quando esse hanno bisogno di una risorsa, inviano talvolta al sistema una richiesta di interruzione affinché quest'ultimo dia loro retta.
Le periferiche hanno un numero di interruzione, detto IRQ (Interruption request, che significa «richiesta di interruzione»). Per visualizzare il processo, ogni periferica tira una «corda» legata ad una campana per segnalare al computer che vuole la sua attenzione.
Questa "corda" è praticamente una linea hardware che collega lo slot alla scheda madre. Ad esempio, per una postazione ISA a 8 bit, vi sono 8 linee IRQ (Interruption Request Line) che collegano lo slot ISA 8 bit alla scheda madre, cioè da IRQ0 a IRQ7.
Queste IRQ sono controllate da un «controllore di interruzione» che permette di "dare la parola" all'IRQ con la priorità più grande. Per gli slot a 16 bit, sono state aggiunte le IRQ da 8 a 15, è stato quindi necessario aggiungere un secondo controllore d'interruzione, il collegamento tra i due gruppi di interruzione si fa attraverso l'IRQ 2 collegata all'IRQ 9 (e detta «cascata»). La cascata "inserisce" quindi in un certo senso le IRQ da 8 a 15 tra le IRQ da 1 a 3:
Dato che la priorità per le IRQ è data in ordine crescente, e visto che le IRQ da 8 a 15 sono state inserite tra le IRQ da 1 a 3, l'ordine di priorità è dunque il seguente: 0 > 1 > 8 > 9 > 10 > 11 > 12 > 13 > 14 > 15 > 3 > 4 > 5 > 6 > 7.
Le periferiche hanno regolarmente bisogno di "prendere in prestito della memoria" dal sistema per servirsene come zona di tampone (in inglese buffer, cioè come zona di immagazzinamento temporaneo che permette di registrare rapidamente dei dati in entrata e in uscita. Per porvi rimedio, si è definito un canale di accesso diretto alla memoria, detto DMA (Direct Memory Access ossia Accesso diretto alla memoria).
Il canale DMA designa un accesso ad una postazione della memoria RAM del computer, individuata da un indirizzo di inizio (o «RAM Start Address» in inglese) e un «indirizzo di fine». Questo metodo permette ad una periferica di prendere in prestito dei canali speciali che le danno un accesso diretto alla memoria, senza l'intervento del microprocessore, per liberarlo da questi compiti. Un computer di tipo PC ha 8 canali DMA. I primi quattro canali DMA hanno una larghezza di banda di 8 bit mentre i DMA da 4 a 7 hanno una larghezza di banda a 16 bit. I canali DMA vengono solitamente assegnati come segue:
DMA0 - libero;
DMA1 - (scheda audio)/libero;
DMA2 - controllore di floppy;
DMA3 - porta parallela (porta stampante);
DMA4 - controllore d'accesso diretto alla memoria
(rinvio verso DMA0);
DMA5 - (scheda audio)/libero;
DMA6 - (SCSI)/libero;
DMA7 - disponibile.
Le periferiche hanno a volte bisogno di scambiare delle informazioni con il sistema, ed è per questo che vengono loro assegnati degli indirizzi di memoria per l'invio e la ricezione di dati. Questi indirizzi sono detti «Indirizzi di base» (i termini qui sotto sono talvolta ugualmente utilizzati: «porte d'entrata/uscita», «porte d'E/U», «indirizzo d'E/U», «indirizzi di porte d'E/U», «porte di base», o I/O address che significa «Input/Output Address», letteralmente «Indirizzo d'entrata-uscitta»).
È mediante questo indirizzo di base che la periferica può comunicare con il sistema operativo. Può quindi esistere solo un indirizzo di base unico per periferica. Qui di seguito trovate una lista con gli indirizzi di base più diffusi:
060h - tastiera;
170h/376h - controllore IDE secondario;
1F0h/3F6h - controllore IDE primario;
220h - scheda audio;
300h - scheda di rete;
330h - scheda adattatore SCSI;
3F2h - controllore di lettore floppy;
3F8h - COM1;
2F8h - COM2;
3E8h - COM3;
2E8h - COM4;
378h - LPT1;
278h - LPT2;
Tutti questi elementi sono comunque trasparenti per l'utente medio, il che significa che non se ne deve preoccupare.
Un'interruzione è quindi una linea che collega una periferica al processore, e l'interruzione è materiale quando è richiesta da un componente hardware del PC. È il caso ad esempio quando un tasto viene premuto e la tastiera attira quindi l'attenzione del processore su questo evento. Ma le 256 interruzioni non possono essere tutte richieste come delle interruzioni hardware. Le diverse periferiche chiedono sempre delle interruzioni ben precise. Così, all'installazione di schede d'estensione, bisogna far attenzione, durante la configurazione, che la stessa interruzione non sia utilizzata per due periferiche diverse.
In effetti, se due periferiche hanno la stessa IRQ, il sistema non saprà a quale hardware rispondere, il sistema si blocca o funziona in modo anormale, provocando quello che viene chiamato un conflitto hardware. Un conflitto hardware non si produce unicamente per due periferiche con la stessa interruzione hardware, ma anche quando hanno lo stesso indirizzo di entrata/uscita o sono assegnate agli stessi canali DMA.
L'IRQ di una scheda può quindi essere modificata, dato che bisogna assegnarle un numero d'IRQ non utilizzato da un'altra periferica. Sulle vecchie periferiche esso è fissato mediante dei jumper presenti sulla scheda.
Sulle schede recenti (con un BIOS Plug & Play), la configurazione delle risorse (IRQ, DMA, Indirizzi d'entrata/uscita) si fa grazie ad una piccola utility (spesso su DOS) fornito con la scheda di rete (generalmente chiamato setup.exe, install.exe, ezconf.exe, config.exe, ecc.) che permette di modificare via software i valori delle IRQ, DMA, ecc. Per poter modificare i parametri manualmente, solitamente bisogna disattivare la modalità plug & play.
Infine, molte schede sono configurabili a piacimento (è possibile attribuire un valore d'IRQ su Windows). È soprattutto il caso della maggioranza delle schede audio. Non è sempre facile riuscire a trovare delle risorse per tutte le periferiche, quindi ecco le risorse già utilizzate e che non possono essere assegnate alle schede di estensione:
IRQ | Periferica |
---|---|
0 | Clock interno |
1 | Tastiera |
2 | Controllore di interruzioni programmabile Rinvio verso le IRQ da 8 a 15 |
3 | Porta COM2/COM4 (di comunicazione) |
4 | Porta COM1/COM3 (di comunicazione) |
5 | libero |
6 | Controllore di floppy |
7 | Porta stampante LPT1 |
8 | Real Time Clock (CMOS) |
9 | Libero |
10 | Libero |
11 | Libero |
12 | Libero/porta mouse PS2 |
13 | Processore digitale di dati (Coprocessore aritmetico) |
14 | Controllore primario di dischi rigidi (IDE) |
15 | Controllore secondario di hard disk (IDE) |
Nota Bene: le porte COM1 e COM4 così come le porte COM2 e COM3 usano le stesse interruzioni. Questo può sembrare illogico quando una stessa interruzione non può essere usata per due periferiche. In realtà è possibile utilizzare la porta COM1 e la porta COM4 (e quella COM2 e COM3) a condizione che queste non sia attive simultaneamente. In caso contrario il PC può bloccarsi o avere un comportamento anormale.
Quando vi trovate di fronte ad un problema che pensate sia relativo alla configurazione hardware del terminale, la prima cosa da fare è di tentare di isolarlo. Questo significa tentare di eliminare tutte le possibili variabili, generalmente aprendo il terminale e eliminare man mano tutti gli elementi suscettibili di provocare un conflitto, oppure isolarle via software (nel vostro sistema operativo), fino alla scoperta dell'elemento responsabile.
Foto: © Pixabay.