BUFFERING

di il
3 risposte

BUFFERING

Ciao a tutti,
Trasferire i dati da un disco o in un disco è un' operazione relativamente lenta. Di conseguenza, non è pensabile che un programma possa accedere a un file su disco ogni volta che volesse leggere o scrivere un byte. Entra qui in gioco, il BUFFERING. Qualcuno sa spiegarmi come funziona/cosa avviene per gli stream?

3 Risposte

  • Re: BUFFERING

    Non credi che sarebbe piu comodo procurarsi un manuale ?
    comunque gli stream grossolanamente parlando sono le porte di input/output.
    più che porte fisiche sono una tecnica per sfruttare le porte fisiche.
    esempio di stream potrebbe esserela tastiera.
    l tecnica degli stream ,in questo caso, ti permette di accettare un determinato numero di caratteri, numeri che vengono messi in una variabile interna detta buffer.
    una volta che i è rimpita questa variabile i dati sono pronti per essere utilizzati.
    bada bene che per utilizzare i dati non devi per forza aspettare che il buffer si riempie.
    ma qualunque nuova operazione di input (inquesto caso da tastiera) va ad accodarsi nel buffer di sistema.
    per quanto riguarda invece i file il dicorso e leggermente diverso perchè mentre per la tastiera il buffer non viene svuotato, a meno che non si usano particolri istruzioni, nella gestione dei file i buffer viene svuotato dal sistema.
    ma come funziona scrittura di un file ?
    funziona in uesto modo (tralascio le operazioni per evitare errori)
    immetto i dati in una variabile locale edeseguo l'istruzione di scrittura.
    il sistema va prima a copiarsi i dati dalla variabile locale al buffer di sistema accodando i nuovi dati a quelli vecchi. se il buffer e pieno allora andrà a riversare su disco i dati e svuoterà il buffer di sistema altrimenti andrà a prendersi dei nuovi dati.
    quando incontra un istruzione di chiusura file il sistema andrà prima a mettere un carattere speciale di fine file alias EOF nel buffer di sistema poi andrà a riversare i dati su disco poi svuoterà il buffer e alla fine setterà dei flag che serviranno per non accettare + istruzioni relative a quel file.
    per concludere
    la gestione del file deveseguire questa logica
    assegnazione di uno stream ad un file e conseguente apertura del file.
    ciclo di scrittura dei dati
    chiusura del file
    riassegnazione dello stram ad un altro file o ad un altra risorsa.(ma non preoccuparti questa operazione viene fatta in automatico dal sistema ogni volta che chiudi un file.)
    per quanto riguarda la lettura il discorso e analogo alla scrittura solo che devi gestire il carattere di fine file alias EOF.

    ricordati che un buffer non è niente altro che una variabile che può essere o di sistema odefinita da te
    in sintesi questo e tutto circa gli stream comunque se vuoi approfondire l'argomento puoi collegarti a questo link
    http://www.bo.cnr.it/corsi-di-informatica/corsoCstandard/Lezioni/38IOCPP.html
    che naturalmente spiega in manira + approfondita l'argomento.
    spero di esserti stato d' aiuto.
  • Re: BUFFERING

    GRAZIE!
  • Re: BUFFERING

    Grossolanamente non leggerai mai un file byte per byte,il S.O. bufferizza già la lettura e scrittura.
    Questo vale anche per la memoria.Dato che i tempi di accesso in certe circosatanze sono lenti allora il nostro caro s.o. ci legge un blocco piu grande ma ci da solo quello che vogliamo,in modo che al sucessivo "richiamo" abbiamo già quello che ci serve.
Devi accedere o registrarti per scrivere nel forum
3 risposte