|
Plug and Play, gestione dell'alimentazione, profili hardware, ripristino dei driver
I veterani, che hanno usato il DOS e le prime versioni di Windows, ricordano quanto fosse difficile, per un utente, configurare i componenti hardware del PC e aggiungere nuove schede e periferiche. Il sistema non riconosceva automaticamente l’hardware presente e risorse come i livelli di interrupt (IRQ o richieste di interrupt), le porte di I/O, gli indirizzi di memoria e i canali DMA (Direct Memory Access) dovevano spesso essere assegnate manualmente, in parte tramite ponticelli sulle schede, in parte durante l’installazione dei driver. Per esempio, quando non c’era il bus PCI e le schede di espansione usavano il connettore ISA (Industry Standard Architecture) tipico dei primi PC, le schede audio e le schede di rete avevano diversi ponticelli per scegliere interrupt e porta ed evitare conflitti con altri adattatori.
Poiché hardware, BIOS e sistema operativo non si scambiavano automaticamente queste informazioni, le impostazioni hardware dovevano essere poi comunicate al sistema operativo perché potesse installare i driver e dialogare con le periferiche. Essendo le risorse limitate, i conflitti erano tutt’altro che rari, così ci si doveva destreggiare a modificare manualmente le impostazioni di default per far convivere per esempio una scheda grafica con un controller SCSI, che talvolta richiedevano la stessa linea di interrupt. I device driver, i moduli software utilizzati dal sistema operativo per comunicare con i componenti hardware, non erano facili né da installare né da configurare; in certi casi erano fornite utility separate per modificare certe impostazioni (come la velocità di una scheda di rete o la frequenza di refresh di una scheda grafica).
Le parole dell’hardware
Che cos’è un IRQ? Un interrupt è un segnale di controllo che una periferica invia alla CPU, tramite un Interrupt Controller, per interrompere il programma in esecuzione e comunicare alla CPU un evento hardware (tasto premuto, dati disponibili, periferica libera ecc.); i vari dispositivi e periferiche hanno a disposizione 15 linee di interrupt numerate (livelli di interrupt) e il controller degli interrupt gestisce le priorità e inoltra alla CPU le tante richieste di interrupt (interrupt request, IRQ) che gli arrivano contemporaneamente. La CPU riceve dal controller l’interrupt e le informazioni su quale programma (Interrupt Service Routine) deve eseguire per servire la richiesta; fatto ciò, la CPU riprende a eseguire il programma dal punto in cui era stato interrotto.
Che cos’è una porta di I/O? In sintesi, è un indirizzo, nello spazio degli indirizzi di I/O dei processori x86 (e compatibili), che identifica un registro (una piccola memoria) nell’interfaccia di I/O di una periferica. Quindi una porta corrisponde a una periferica. Un segnale di controllo comunica alla CPU se l’indirizzo che gli viene passato è un indirizzo di I/O o di memoria.
Che cos’è un canale DMA? Il Direct Memory Access, come dice il nome, è una tecnica di accesso diretto tra la memoria e le periferiche senza passare attraverso la CPU, così da permettere una maggiore velocità di trasferimento e liberare la CPU per gli altri compiti. Il controller del DMA gestisce i trasferimenti DMA su otto canali simultanei; ogni canale è un circuito che collega un indirizzo di memoria a un indirizzo di I/O (una porta).
|