Condividi tramite


Che cos'è un driver?

Un driver è un componente software che consente al sistema operativo e a un dispositivo di comunicare. Ad esempio, quando un'app deve leggere i dati da un dispositivo, chiama una funzione implementata dal sistema operativo. Il sistema operativo chiama quindi una funzione implementata dal driver. Il driver, in genere sviluppato dal produttore del dispositivo, sa come comunicare con l'hardware del dispositivo per ottenere i dati. Una volta che il driver ottiene i dati, lo restituisce al sistema operativo, che quindi lo restituisce all'app.

Diagramma che mostra l'interazione tra un'applicazione, un sistema operativo e un driver.

Espansione della definizione

La spiegazione semplifica il concetto di conducente. Ecco alcuni altri punti da considerare:

  • I driver non devono sempre essere sviluppati dal produttore del dispositivo. Se un dispositivo segue uno standard hardware pubblicato, Microsoft può scrivere il driver, quindi il progettista del dispositivo non deve fornirne uno.

  • Non tutti i driver comunicano direttamente con un dispositivo. Spesso, diversi driver stratificati in uno stack di driver partecipano a una richiesta di I/O. Il modo convenzionale per visualizzare lo stack è con il primo partecipante nella parte superiore e l'ultimo partecipante nella parte inferiore, come illustrato in questo diagramma. Alcuni driver nello stack modificano la richiesta da un formato a un altro. Questi driver non comunicano direttamente con il dispositivo. Modificano invece la richiesta e lo passano ai driver inferiori nello stack.

    Diagramma che illustra la comunicazione tra un'applicazione, un sistema operativo, tre driver e un dispositivo.

    driver della funzione: il driver che comunica direttamente con il dispositivo è chiamato driver della funzione .

    Driver di filtro: i driver che eseguono l'elaborazione ausiliaria vengono chiamati driver di filtro .

    Per ulteriori informazioni sugli stack, vedere Stack di driver .

  • Alcuni driver di filtro osservano e registrano informazioni sulle richieste di I/O, ma non partecipano attivamente a tali richieste. Ad esempio, alcuni driver di filtro fungono da verificatori per assicurarsi che gli altri driver nello stack gestiscono correttamente la richiesta di I/O.

È possibile perfezionare la definizione di un driver come qualsiasi componente software che osserva o partecipa alla comunicazione tra il sistema operativo e un dispositivo.

Software dei driver

La definizione espansa è ragionevolmente accurata, ma è ancora incompleta perché alcuni driver non sono associati ad alcun dispositivo hardware.

Ad esempio, se è necessario scrivere uno strumento che accede alle strutture principali dei dati del sistema operativo, è possibile suddividere lo strumento in due componenti. Il primo componente viene eseguito in modalità utente e presenta l'interfaccia utente. Il secondo componente viene eseguito in modalità kernel e accede ai dati principali del sistema operativo. Il componente eseguito in modalità utente è denominato applicazione e il componente eseguito in modalità kernel è denominato driver software . Un driver software non è associato a un dispositivo hardware.

Questo diagramma illustra un'applicazione in modalità utente che comunica con un driver software in modalità kernel.

Diagramma che illustra la relazione tra un'applicazione e un driver software.

I driver software vengono sempre eseguiti in modalità kernel. Vengono scritti principalmente per accedere ai dati protetti disponibili solo in modalità kernel. Tuttavia, non tutti i driver di dispositivo devono accedere ai dati e alle risorse in modalità kernel, quindi alcuni driver di dispositivo vengono eseguiti in modalità utente.

Per altre informazioni sulle modalità del processore, vedere modalità utente e modalità kernel.

Conducenti di autobus

Un altro tipo di conducente è l'autista del bus . Per comprendere i driver del bus, è necessario comprendere i nodi del dispositivo e l'albero dei dispositivi.

Per informazioni sugli alberi dei dispositivi, i nodi di dispositivo e i driver del bus, vedere Nodi di dispositivo e stack di dispositivi.

Altre informazioni sui driver di funzione

La nostra spiegazione finora semplifica in modo eccessivo la definizione del driver di funzione . Abbiamo dichiarato che il driver di funzione per un dispositivo è l'unico nello stack che comunica direttamente con il dispositivo. Questo vale per un dispositivo che si connette direttamente al bus PCI (Peripheral Component Interconnect). Il driver di funzione per un dispositivo PCI ottiene gli indirizzi mappati alle risorse di porta e memoria nel dispositivo. Il driver di funzione comunica direttamente con il dispositivo scrivendo in tali indirizzi.

Tuttavia, in molti casi, un dispositivo non si connette direttamente al bus PCI. Al contrario, il dispositivo si connette a una scheda bus host connessa al bus PCI. Ad esempio, un tostapane USB si connette a una scheda bus host (denominata controller host USB), collegata al bus PCI. Il tostapane USB ha un driver di funzione e il controller host USB ha anche un driver di funzione. Il driver di funzione per il tostapane comunica indirettamente con il tostapane inviando una richiesta al driver di funzione per il controller host USB. Il driver di funzione per il controller host USB comunica quindi direttamente con l'hardware del controller host USB, che comunica con il tostapane.

Diagramma che illustra l'interazione tra i driver del tostapane USB, il driver del controller host USB e il bus PCI .