7.3 I device driver

I vari dispositivi elettronici che compongono l’hardware del sistema, per poter essere utilizzati dal hanno bisogno di un particolare software, il device driver. Tale software è a conoscenza dei dettagli del funzionamento del dispositivo e sa quindi gestirlo in maniera appropriata.

Considerando sia la varietà delle tipologie dei dispositivi presenti sul mercato, che l’enorme numero di produttori di hardware, è impensabile che un’applicazione possa gestire direttamente tutti i possibili dispositivi di cui ha bisogno. Ad esempio, un’applicazione che gestisce la stampa di un documento (come gedit) dovrebbe preoccuparsi di gestire la stampa di un documento sui vari tipi (ad aghi, a getto di inchistro, laser, ...) e modelli di stampante esistenti sul mercato. Non solo: un’altra applicazione, che ha a che fare con la stampante, dovrebbe anch’essa gestire la stampa sui vari modelli di stamapante... Da qui nasce l’idea della suddivisione dei compiti ( divide et impera). Cioè, anziché accollare sulle singole applicazioni l’onere della gestione dei dispositivi, si delega il compito ad un software specifico: il driver. Un driver è un software piuttosto contenuto, che è in grado di gestire in maniera appropriata uno specifico dispositivo e deve fungere da interfaccia tra il dispositivo e le applicazioni. Quando un’applicazione vuole utilizzare il dispositivo in questione, indica al driver quale operazione vuol compiere sul dispositivo, senza dover entrare nei dettagli. È il driver stesso che, riconosciuta la richiesta, sa come farla eseguire nei dettagli al dispositivo.

Man mano che le aziende producono nuovi dispositivi e li immetono sul mercato, esse provvedono a realizzare i driver per certi sistemi operativi. È chiaro che la spinta a produrre un driver per un determinato sistema operativo è tanto più forte quanto maggiore è la diffusione dello stesso, poiché ci saranno più potenziali clienti per il dispositivo prodotto. Visto che Windows, in tutte le sue forme, può essere considerato il sistema operativo attualmente più diffuso nel mondo (?), è molto probabile che un’azienda che produce un dispositivo fornisca anche i driver per poterlo utilizzare con Windows. Alcune aziende forniscono i driver anche per utilizzare i loro dispositivi con altri sistemi operativi (essenzialmente Mac e GNU/Linux). Altre aziende rilasciano le specifiche dei propri dispositivi, permettendo a chiunque sia in grado e ne abbia voglia, di realizzare il driver per il sistema operativo desiderato. Esistono anche aziende che non pubblicano le specifiche dell’hardware che producono perché lo ritengono un segreto industriale da sfruttare come vantaggio sui concorrenti.

Il panorama è molto variegato. Comunque, generalmente GNU/Linux (nelle versioni più recenti del kernel Linux - dalla 2.4 in poi) riesce a gestire i dispositivi di più largo consumo (schede video, hard disk, mouse, stampanti, scanner, ...) dei produttori più noti, che sono veramente tanti. Un elenco approfondito dei vari dispositivi compatibili con GNU/Linux è contenuto nel “Linux Hardware Compatibility HOWTO”, reperibile su http://www.tldp.org/HOWTO/Hardware-HOWTO/index.html. Un altro sito interessante da questo punto di vista è http://www.linux.org/docs/beginner/platforms.html. Quindi, prima di acquistare un dispositivo, è opportuno consultare i documenti citati o comunque effettuare qualche ricerca su Internet, a cominciare dai siti relativi alla distribuzione considerata, per sapere se tale dispositivo è compatibile con GNU/Linux. Ad esempio la hp ha istituito il progetto hp linux inkjet project (v. http://hpinkjet.sourceforge.net) con lo scopo di realizzare i driver per GNU/Linux, relativi alle proprie stampanti a getto di inchiostro. Attualmente sono presenti sul sito i driver per la gestione di circa 200 stampanti hp.