Condividi tramite


Supporto di I/O asincroni

La gestione I/O fornisce supporto di I/O asincrona in modo che l'origine di una richiesta di I/O (in genere un'applicazione in modalità utente, ma a volte un altro driver) possa continuare l'esecuzione, anziché attendere il completamento della richiesta di I/O. Il supporto di I/O asincrono migliora sia la velocità effettiva complessiva del sistema che le prestazioni di qualsiasi codice che effettua una richiesta di I/O.

Con il supporto I/O asincrono, i driver in modalità kernel non elaborano necessariamente le richieste di I/O nello stesso ordine in cui sono stati inviati al gestore di I/O. Il gestore I/O o un driver di livello superiore può riordinare le richieste di I/O durante la ricezione. Un driver può suddividere una richiesta di trasferimento dati di grandi dimensioni in richieste di trasferimento più piccole. Inoltre, un driver può sovrapporsi all'elaborazione delle richieste di I/O, in particolare in una piattaforma multiprocessore simmetrica, come indicato in Multiprocessor-Safe.

Inoltre, l'elaborazione del driver in modalità kernel di una singola richiesta di I/O non è necessariamente serializzata. Vale a dire, un driver non elabora necessariamente ogni IRP al completamento prima di iniziare a elaborare la successiva richiesta di I/O in ingresso.

Quando un driver riceve un'IRP, risponde eseguendo l'elaborazione più specifica di IRP possibile. Se il driver supporta l'elaborazione IRP asincrona, può inviare un'IRP al driver successivo, se necessario e iniziare a elaborare l'IRP successivo senza attendere il completamento del primo. Il driver può registrare una "routine di completamento", che il gestore di I/O chiama quando un altro driver ha completato l'elaborazione di un'IRP. I driver forniscono un valore di stato nel blocco di stato I/O di IRP, che altri driver possono accedere per determinare lo stato di una richiesta di I/O.

I driver possono mantenere le informazioni sullo stato relative alle operazioni di I/O correnti in una parte speciale degli oggetti del dispositivo, denominata estensione del dispositivo.

Per altre informazioni, vedere Gestione di irP e tecniche di input/output.