Cosa significa buffer?


151

Vedo la parola "BUFFER" dappertutto, ma non riesco a capire cosa sia esattamente.

  1. Qualcuno potrebbe spiegare cos'è il buffer nella lingua dei laici ?
  2. Quando viene usato?
  3. Come si usa

Ho notato che "buffer" ha lievi variazioni nel nome e tendono a cambiare in base esattamente a quale memoria fisica la tiene e per cosa. Come "Buffer grafico" è un array di caratteri per la memoria video, mentre Network Buffer potrebbe trovarsi nella RAM normale. Non sono sicuro che questo sia standard o casuale. Simile alla risposta di Ailayna verso la fine.
Stephen J,

Risposte:


269

Immagina di mangiare caramelle da una ciotola. Prendi un pezzo regolarmente. Per evitare che la ciotola si esaurisca, qualcuno potrebbe riempire la ciotola prima che si svuoti, in modo che quando vuoi prendere un altro pezzo, ci siano caramelle nella ciotola.

La ciotola funge da cuscinetto tra te e il sacchetto di caramelle.

Se stai guardando un film online, il servizio web scaricherà continuamente i prossimi 5 minuti circa in un buffer, in questo modo il tuo computer non dovrà scaricare il film mentre lo guardi (il che causerebbe l'impiccagione).


93
+1: i buffer sono richiesti quando produttori e consumatori operano a tariffe diverse. Le caramelle sono prodotte in grandi quantità ma consumate in quantità minori: l'intera catena di approvvigionamento dal produttore alla bocca è una serie di buffer.
S.Lott

30
La migliore analogia di sempre. Mi fa venire voglia di zucchero
Kyle Macey,

qual è il servizio web qui? Dov'è il buffer? Il servizio web è l'host del film?
Jwan622,

Definizione solida. Immagino sia per questo che diciamo che il video è buffering quando si blocca e la barra di avanzamento viene visualizzata quando stiamo guardando un film
Red M

È così bello, fattibile e semplice.
Jonas Grønbek

93

Il termine "buffer" è un termine molto generico e non è specifico per IT o CS. È un posto dove archiviare qualcosa temporaneamente, al fine di mitigare le differenze tra velocità di ingresso e velocità di uscita. Mentre il produttore è più veloce del consumatore, il produttore può continuare a memorizzare l'output nel buffer. Quando il consumatore accelera, può leggere dal buffer. Il buffer è lì nel mezzo per colmare il divario.


Se fai una media delle definizioni su http://en.wiktionary.org/wiki/buffer , penso che avrai l'idea.

Per la prova del fatto che "abbiamo dovuto percorrere 10 miglia camminando sulla neve ogni giorno per andare a scuola", vedere il Manuale di chiamate al monitor TOPS-10 Volume 1 , sezione 11.9, "Uso dell'I / O bufferizzato", nel segnalibro 11-24. Non leggere se sei soggetto ad incubi.


1
+1 Mi piace di più questa spiegazione. Per quanto io ami le caramelle, l'esempio della ciotola di caramelle era un po 'un tratto IMO.
Programmatore fuorilegge il

10
Sì, "un luogo in cui archiviare qualcosa temporaneamente, al fine di mitigare le differenze tra la velocità di ingresso e la velocità di uscita" lo riassume perfettamente.
scimpanzé,

1
grazie per la semplice spiegazione. Tuttavia, l'URL PDF allegato è morto
hassan il

20

Un buffer è semplicemente un pezzo di memoria utilizzato per contenere i dati. Nel senso più generale, di solito è un singolo blocco di memoria che viene caricato in una sola operazione, e poi svuotato in una o più, l'esempio "candy bowl" di Perchik. In un programma C, ad esempio, potresti avere:

#define BUFSIZE 1024
char buffer[BUFSIZE];
size_t len = ;

// ... later
while((len=read(STDIN, &buffer, BUFSIZE)) > 0)
    write(STDOUT, buffer, len);

... che è una versione minima di cp (1) . Qui, l'array buffer viene utilizzato per memorizzare i dati letti da read (2) fino a quando non viene scritto; quindi il buffer viene riutilizzato.

Esistono schemi di buffer più complicati, ad esempio un buffer circolare , in cui viene utilizzato un numero finito di buffer, uno dopo l'altro; una volta che i buffer sono tutti pieni, l'indice "si avvolge" in modo che il primo venga riutilizzato.


12

Buffer significa "memoria temporanea". I buffer sono importanti nell'informatica perché i dispositivi e i sistemi interconnessi raramente sono "sincronizzati" tra loro, quindi quando le informazioni vengono inviate da un sistema all'altro, ha un posto in cui attendere che il sistema destinatario sia pronto.


6

In realtà dipenderebbe dal contesto in ogni caso in quanto non esiste una definizione, ma parlando in generale un buffer è un posto per contenere temporaneamente qualcosa. La migliore analogia del mondo reale che mi viene in mente sarebbe un'area di attesa. Un semplice esempio nell'informatica è quando il buffer si riferisce a una parte della RAM utilizzata per l'archiviazione temporanea dei dati.


2

Il buffer è un segnaposto temporaneo (variabili in molti linguaggi di programmazione) in memoria (ram / disco) su cui è possibile eseguire il dump dei dati e quindi eseguire l'elaborazione.

Ci sono molti vantaggi del buffering in quanto consente che le cose accadano in parallelo, migliorino le prestazioni di IO, ecc.

Ha anche molti svantaggi se non usato correttamente come buffer overflow, buffer underflow, ecc.

C Esempio di buffer dei caratteri.

char * buffer1 = calloc (5, sizeof (char));

char * buffer2 = calloc (15, sizeof (char));


2

Un buffer è un'area dati condivisa da dispositivi hardware o processi di programma che operano a velocità diverse o con diversi insiemi di priorità. Il buffer consente a ciascun dispositivo o processo di funzionare senza essere ostacolato dall'altro. Affinché un buffer sia efficace, la dimensione del buffer e gli algoritmi per spostare i dati dentro e fuori dal buffer.

il buffer è un "punto di mantenimento del punto medio" ma non esiste tanto per accelerare la velocità di un'attività quanto per supportare il coordinamento di attività separate.

Questo termine è usato sia nella programmazione che nell'hardware. Nella programmazione, il buffering a volte implica la necessità di schermare i dati dalla posizione finale prevista in modo che possano essere modificati o altrimenti elaborati prima di essere spostati in un normale file o database.


1

Il buffer è un segnaposto temporaneo (variabili in molti linguaggi di programmazione) in memoria (ram / disco) su cui è possibile eseguire il dump dei dati e quindi eseguire l'elaborazione.

Il termine "buffer" è un termine molto generico e non è specifico per IT o CS. È un posto dove archiviare qualcosa temporaneamente, al fine di mitigare le differenze tra velocità di ingresso e velocità di uscita. Mentre il produttore è più veloce del consumatore, il produttore può continuare a memorizzare l'output nel buffer. Quando il consumatore accelera, può leggere dal buffer. Il buffer è lì nel mezzo per colmare il divario.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.