Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [C] File bufferizzato

  1. #1

    [C] File bufferizzato

    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!

  2. #2
    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.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    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!

  4. #4
    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".
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Ok grazie mille!Mi sei stato molto d'aiuto!

  6. #6
    Di niente, ciao!
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.