Il sistema operativo Windows XP - Apogeo
Il sistema operativo Windows XP - Apogeo
Il sistema operativo Windows XP - Apogeo
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Figura 6. File I/O.<br />
Quando è possibile, per le operazioni sincrone sui file in cache, I/O è gestito dal meccanismo di<br />
I/O veloce (fast I/O mechanism) che mette in parallelo il normale I/O basato su IRP, ma esegue<br />
direttamente chiamate nello stack del driver invece che passare in un IRP. Siccome non ci sono<br />
IRP coinvolti, l’operazione non dovrebbe bloccarsi per un lungo periodo di tempo e non può essere<br />
accodata ad un thread lavoratore. Di conseguenza, quando l’operazione raggiunge il file system e<br />
chiama il gestore della cache, l’operazione fallisce nel caso in cui le informazioni non siano già in<br />
cache. <strong>Il</strong> gestore di I/O tenta poi l’operazione usando il percorso del normale IRP.<br />
Un'operazione di lettura a livello kernel si comporta in modo simile, ad eccezione del fatto che ai<br />
dati si può accedere direttamente dalla cache, invece che copiarli in un buffer nello spazio<br />
dell'utente. Per usare i metadati del file system (strutture dati che descrivono il file system), il<br />
kernel, per leggere i metadati, usa l’interfaccia di mappatura del gestore della cache, mentre, per<br />
modificarli, il file system usa l'interfaccia a cui punta (pinning) il gestore della cache. <strong>Il</strong> Pinning<br />
(puntare) di una pagina blocca la pagina in un frame della pagina della memoria fisica, in modo che<br />
il gestore di VM non possa muoversi o paginare verso l'esterno la pagina. Dopo l'aggiornamento dei<br />
metadati, il file system chiede al gestore della cache di liberare (unpin) la pagina. Una pagina<br />
modificata è marcata come sporca, di conseguenza il gestore di VM trasferisce la pagina su disco e<br />
il metadato è memorizzato in un normale file.<br />
Per migliorare le prestazioni, il gestore della cache mantiene una piccola storia delle richieste<br />
di lettura e dalla storia cerca di predire le richieste future. Se il gestore della cache trova un modello<br />
che assomiglia alle tre precedenti richieste, tipo un accesso sequenziale in avanti o all’indietro, esso<br />
27