PDA

Visualizza la versione completa : [C] File bufferizzato


fabiranni
21-02-2010, 14:58
Ciao a tutti!Qualcuno di voi potrebbe gentilmente spiegarmi a livello teorico come funzionano i file bufferizzati in C?E cosa si intende per bufferizzazione?In oltre vorrei sapere dove vengono salvati i file(se in particolari strutture oppure solo sul disco rigido).Grazie anticipatamente!

MItaly
21-02-2010, 15:07
Il runtime C quando tu richiami le funzioni di scrittura su file non scrive immediatamente quello che gli hai detto di scrivere, ma piuttosto lo salva in un suo buffer privato in attesa che la quantità di dati da scrivere superi una certa soglia (diciamo 1 KB); una volta raggiunta questa soglia, il runtime effettua la scrittura vera e propria e svuota il buffer (operazione detta complessivamente "flushing del buffer"). In questa maniera viene minimizzato il numero di scritture effettuate, operazioni "costose" in termini di tempo per numerosi motivi e che richiedono, indipendentemente dalla quantità di dati da scrivere, un certo overhead più o meno costante per ogni scrittura (passaggio in kernel-mode, spostamento della testina del disco nella posizione corretta, ...); effettuando poche scritture si minimizza l'impatto di questo overhead rispetto all'effettivo tempo di scrittura.
Un'operazione analoga avviene con la lettura (readahead): invece di avvenire solo per i dati che chiedi, la lettura avviene per blocchi (diciamo, anche qui, di 1 KB), sempre allo scopo di minimizzare il numero di letture.

fabiranni
21-02-2010, 15:18
Grazie mille!Ma cosa sarebbe questo buffer?E per le operazioni sui file serve una particolare struttura oppure vengono semplicemente salvato su disco rigido?Grazie!

MItaly
21-02-2010, 15:47
Originariamente inviato da fabiranni
Grazie mille!Ma cosa sarebbe questo buffer?
Uno spazio di memoria (diciamo un array di char) gestito dalle funzioni in questione.


E per le operazioni sui file serve una particolare struttura oppure vengono semplicemente salvato su disco rigido?Grazie!
Non capisco il senso di questa domanda... quello che scrivi tramite le funzioni di IO del C viene scritto su disco; il buffer è solo una zona "di passaggio".

fabiranni
21-02-2010, 21:42
Ok grazie mille!Mi sei stato molto d'aiuto! :)

MItaly
21-02-2010, 23:35
Di niente, ciao! :ciauz:

Loading