Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Come illustrato nella figura Processing IRPs in Layered Drivers (IRP di Elaborazione nei Driver a Più Livelli), un file system è un driver in due parti:
Driver del 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 al FSD. Se l'FSD configura una routine di completamento per un IRP, la sua routine di completamento non viene necessariamente chiamata nel contesto della modalità utente originale del thread.
Una serie di thread del file system e possibilmente un processo del file system (FSP)
Un FSD può creare un set di thread di sistema dedicati al driver, ma la maggior parte dei FSD usa thread di lavoro di sistema per eseguire operazioni senza impegnare thread in modalità utente che effettuano richieste di I/O. Qualsiasi FSD potrebbe configurare il proprio spazio di indirizzi di processo in cui vengono eseguiti i thread dedicati al driver, ma le unità FSD fornite dal sistema evitano questa procedura per risparmiare memoria di sistema.
I file system generalmente utilizzano thread di lavoro di sistema per gestire e configurare code di lavoro interne di IRP che inviano a uno o più driver di livello inferiore, possibilmente per dispositivi differenti.
Anche se il driver al livello più basso mostrato nella figura Elaborazione degli IRP nei driver stratificati elabora ogni IRP in fasi attraverso un insieme di routine discrete fornite dal driver, non utilizza i thread di sistema come fa il file system. Un driver di livello più basso non necessita di un proprio contesto di thread, a meno che la configurazione del dispositivo per I/O non sia un processo così protratto che ha un effetto notevole sulle prestazioni del sistema. Pochi driver di livello più basso o intermedio devono configurare i propri thread di sistema dedicati al driver o al dispositivo, e quelli che lo fanno subiscono una riduzione delle prestazioni causata dal passaggio del contesto ai loro thread.
La maggior parte dei driver in modalità kernel, ad esempio il driver di dispositivo fisico nella figura Processing IRPs in Layered Drivers , viene eseguita in un contesto di thread arbitrario: quello di qualsiasi thread sia corrente quando vengono chiamati per elaborare un IRP. Di conseguenza, i driver mantengono in genere lo stato sulle operazioni di I/O e sui dispositivi che servono in una parte definita dal driver dei relativi oggetti dispositivo, denominata estensione del dispositivo.