Condividi tramite


Contesto del thread driver

Come illustrato nella figura Elaborazione irp nella figura Driver a livelli , un file system è un driver a due parti:

  1. Driver di file system (FSD), che viene eseguito nel contesto di un thread in modalità utente che chiama un servizio di sistema di I/O

    Il gestore di I/O invia l'IRP corrispondente all'FSD. Se fsD configura una routine di completamento per un'IRP, la routine di completamento non viene necessariamente chiamata nel contesto del thread in modalità utente originale.

  2. Set di thread del file system e possibilmente un processo FSP (processo di file system)

    Un FSD può creare un set di thread di sistema dedicati al driver, ma la maggior parte degli FSD usa thread di lavoro di sistema per ottenere il lavoro svolto senza creare thread in modalità utente che effettuano richieste di I/O. Qualsiasi FSD potrebbe configurare lo spazio degli indirizzi del processo in cui vengono eseguiti i thread dedicati al driver, ma gli FSD forniti dal sistema evitano questa pratica di conservare la memoria di sistema.

I file system usano in genere thread di lavoro di sistema per configurare e gestire code di lavoro interne di IRP che inviano a uno o più driver di livello inferiore, possibilmente per dispositivi diversi.

Mentre il driver di livello più basso mostrato nei irP di elaborazione nella figura Driver a livelli elabora ogni IRP in fasi tramite un set di routine discrete, fornite dal driver, non usa thread di sistema come fa il file system. Un driver di livello più basso non ha bisogno del proprio contesto di thread, a meno che non si configura il dispositivo per I/O sia un processo protratto che ha un effetto evidente sulle prestazioni del sistema. Pochi driver di livello minimo o intermedio devono configurare i propri thread di sistema dedicati al driver o ai dispositivi e quelli che pagano una penalità delle prestazioni causata dai commutatori di contesto nei thread.

La maggior parte dei driver in modalità kernel, ad esempio il driver di dispositivo fisico nella figura Elaborazione di IRP nella figura Driver a livelli, viene eseguita in un contesto di thread arbitrario: quello di qualsiasi thread accade essere corrente quando vengono chiamati per elaborare un IRP. Di conseguenza, i driver in genere mantengono lo stato sulle operazioni di I/O e sui dispositivi che gestiscono in una parte definita dal driver degli oggetti dispositivo, denominata estensione del dispositivo.