[Avanti]  [Indietro]  [Su]  

7.1.1 I file stream

Come più volte ribadito, l'interfaccia dei file descriptor è un'interfaccia di basso livello, che non provvede nessuna forma di formattazione dei dati e nessuna forma di bufferizzazione per ottimizzare le operazioni di I/O.

In [?] Stevens descrive una serie di test sull'influenza delle dimensioni del blocco di dati (il parametro buf di read e write) nell'efficienza nelle operazioni di I/O con i file descriptor, evidenziando come le prestazioni ottimali si ottengano a partire da dimensioni del buffer dei dati pari a quelle dei blocchi del filesystem (il valore dato dal campo st_blksize di stat), che di norma corrispondono alle dimensioni dei settori fisici in cui è suddiviso il disco.

Se il programmatore non si cura di effettuare le operazioni in blocchi di dimensioni adeguate, le prestazioni sono inferiori. La caratteristica principale dell'interfaccia degli stream è che essa provvede da sola alla gestione dei dettagli della bufferizzazione e all'esecuzione delle operazioni di lettura e scrittura in blocchi di dimensioni appropriate all'ottenimento della massima efficienza.

Per questo motivo l'interfaccia viene chiamata anche interfaccia dei file stream, dato che non è più necessario doversi preoccupare dei dettagli della comunicazione con il tipo di hardware sottostante (come nel caso della dimensione dei blocchi del filesystem), ed un file può essere sempre considerato come composto da un flusso continuo (da cui il nome stream) di dati.

A parte i dettagli legati alla gestione delle operazioni di lettura e scrittura (sia per quel che riguarda la bufferizzazione, che le formattazioni), i file stream restano del tutto equivalenti ai file descriptor (sui quali sono basati), ed in particolare continua a valere quanto visto in sez. 6.3.1 a proposito dell'accesso condiviso ed in sez. 5.3 per il controllo di accesso.


[Avanti]  [Indietro]  [Su]  
© 2000-2003 Simone Piccardi
Pubblicazione web curata da Mirko Maischberger