# Driver di periferica

Un driver di periferica, in informatica, è un programma che gestisce o controlla un particolare tipo di dispositivo, connesso ad un computer.

## Caratteristiche

Un driver di periferica consente a un dispositivo, per esempio una stampante, di comunicare con il sistema operativo, il bus del computer, o con il sottosistema di comunicazione a cui l'hardware è collegato. I driver sono dipendenti dall'hardware e dal sistema operativo specifico e forniscono abitualmente la gestione e la richiesta per qualsiasi interfaccia hardware dipendente dal tempo asincrono necessario.

## Sviluppo

Programmare un driver di periferica richiede una comprensione approfondita di come funziona l'hardware e il software sul quale è installato uno specifico sistema operativo. I driver operano in un ambiente privilegiato per cui se mal programmati possono causare disastri. Al contrario, la maggior parte del software a livello utente installato sui moderni sistemi operativi può essere arrestato senza influenzare il resto del sistema..
Il compito di programmare i driver di periferica è affidato a ingegneri informatici che lavorano per le aziende hardware di sviluppo. Inoltre, è nell'interesse del produttore hardware garantire che i loro clienti possono utilizzare il loro hardware in modo ottimale. Tipicamente, il driver di dispositivo logico (LDD) viene programmato dal produttore del sistema operativo, mentre il driver di un dispositivo fisico (PDD), per esempio una stampante, viene programmato dal fornitore del dispositivo: nel nostro esempio del costruttore della stampante. Ma negli ultimi anni sono stati programmati numerosi driver di periferica, soprattutto per interfacciarsi con i sistemi operativi liberi e open source. In questi casi è importante che il produttore dell'hardware fornisca informazioni su come comunica il dispositivo, anche se queste informazioni possono essere dedotte dagli ingegneri, un'operazione comunque più complessa del reverse engineering applicata al software.
Microsoft ha tentato di ridurre l'instabilità dei propri sistemi operativi a causa di driver mal programmati, con la creazione di un nuovo quadro di riferimento per lo sviluppo di driver, chiamato driver Windows Foundation (WDF). Questo include lo User- Framework driver modalità (UMDF) che incoraggia lo sviluppo di alcuni tipi di driver, soprattutto quelli che implementano un protocollo basato su messaggi per comunicare con i loro dispositivi, come i driver in modalità utente. Tali driver se subiscono un malfunzionamento, non causano l'instabilità del sistema. Il Framework driver modalità kernel (KMDF) è un modello in grado di fornire lo sviluppo di driver di periferica in modalità kernel, ma i tentativi di fornire implementazioni standard di funzioni note come l'origine di diversi, tra cui la cancellazione di operazioni di I / O, non sono mai stati portati a termine.

## Funzionamento

Un driver di periferica semplifica la programmazione, agendo da traduttore tra un dispositivo hardware e le applicazioni o i sistemi operativi che lo utilizzano. I programmatori possono scrivere il codice dell'applicazione di livello superiore indipendentemente da qualunque hardware specifico l'utente finale sta usando. Strati fisici comunicano con le istanze dei dispositivi specifici. Ad esempio, una porta seriale ha bisogno di gestire protocolli di comunicazione standard come XON / XOFF comuni a tutti i componenti hardware della porta seriale. Questo sarebbe stato gestito da una porta seriale livello logico. Tuttavia, il livello fisico deve comunicare con un particolare chip di porta seriale la nº 16550 hardware UARTConvenzionalmente, le richieste del sistema operativo si interfacciano prima al livello logico. A sua volta, il livello logico invita il livello fisico a inviare le richieste del Sistema Operativo in termini comprensibili dall'hardware. Viceversa, quando un dispositivo hardware deve rispondere al sistema operativo, utilizza il livello fisico per comunicare con il livello logico.
In ambienti Linux, i programmatori possono sviluppare i driver di periferica, o come parti del kernel, o separatamente come moduli caricabili. Makedev include un elenco dei dispositivi in Linux: ttyS (terminale), LP (porta parallela), HD (disco), loop (dispositivo a disco di loopback), suono (questi includono mixer, sequencer, dsp, e audio).
Il sistema di file e moduli Linux. Microsoft Windows. Contengono driver di periferica caricabili. Il vantaggio dei device driver caricabili è che possono essere caricati solo quando necessario e quindi scaricano, risparmiando così la memoria del kernel.

## Pannello di utilità

Va distinto il concetto di driver dall'eventuale programma di gestione di una periferica (in inglese utility) che può esistere quando previsto dal produttore della periferica. Ad esempio: i driver delle schede video o delle stampanti generalmente sono integrati da appositi programmi per regolare e controllare la grafica o la stampante. A volte l'installazione del pacchetto driver comprende l'utility, altre volte i setup sono distinti e quindi si può scegliere di installare i driver veri e propri ma non l'applicazione di gestione della periferica relativa.
Se il sistema operativo comprende tutte le funzioni di controllo base di una periferica potrebbe anche essere non necessaria l'installazione del programma (pannello) di gestione rilasciato dal produttore dell'hardware oppure le funzioni aggiuntive presenti potrebbero non essere utili per l'utente.