¿Qué significa "buffer"?

151

Veo la palabra "BUFFER" en todas partes, pero no puedo entender qué es exactamente.

  1. ¿Alguien podría explicar qué es el búfer en el lenguaje simple ?
  2. Cuando se usa
  3. ¿Cómo se usa?
Pratik Deoghare
fuente
Me di cuenta de que "buffer" tiene ligeras variaciones en el nombre, y tienden a cambiar según exactamente qué memoria física lo tiene y para qué. Al igual que "Graphics buffer" es una matriz de caracteres para la memoria de video, mientras que Network Buffer puede estar en la RAM normal. No estoy seguro de si esto es estándar o casual. Similar a la respuesta de Ailayna hacia el final.
Stephen J

Respuestas:

269

Imagina que estás comiendo dulces de un tazón. Tomas una pieza regularmente. Para evitar que el cuenco se agote, alguien puede rellenar el cuenco antes de que se vacíe, de modo que cuando quiera tomar otra pieza, haya dulces en el cuenco.

El tazón actúa como un amortiguador entre usted y la bolsa de dulces.

Si está viendo una película en línea, el servicio web descargará continuamente los siguientes 5 minutos más o menos en un búfer, de esa manera su computadora no tendrá que descargar la película mientras la ve (lo que podría causar un bloqueo).

Perchik
fuente
93
+1: Se requieren amortiguadores cuando los productores y consumidores operan a diferentes velocidades. Los dulces se fabrican en grandes lotes, pero se consumen en pequeñas cantidades: toda la cadena de suministro desde el fabricante hasta la boca es una serie de amortiguadores.
S.Lott
30
La mejor analogía de todas. Me hace anhelo de azúcar
Kyle Macey
¿Cuál es el servicio web aquí? ¿Dónde está el búfer? ¿Es el servicio web el anfitrión de la película?
Jwan622
Definición sólida Supongo que es por eso que decimos que el video se almacena en búfer cuando se congela, y la barra de progreso se muestra cuando estamos viendo una película
Rojo M
Esto es muy agradable, factible y simple.
Jonas Grønbek
93

El término "buffer" es un término muy genérico, y no es específico de TI o CS. Es un lugar para almacenar algo temporalmente, para mitigar las diferencias entre la velocidad de entrada y la velocidad de salida. Mientras el productor es más rápido que el consumidor, el productor puede continuar almacenando la salida en el búfer. Cuando el consumidor se acelera, puede leer desde el búfer. El búfer está allí en el medio para cerrar la brecha.


Si promedia las definiciones en http://en.wiktionary.org/wiki/buffer , creo que obtendrá la idea.

Para probar que realmente "tuvimos que caminar 10 millas pensando en la nieve todos los días para ir a la escuela", consulte el Manual de llamadas del monitor TOPS-10, Volumen 1 , sección 11.9, "Uso de E / S almacenadas en búfer", en el marcador 11-24. No leas si estás sujeto a pesadillas.

John Saunders
fuente
1
+1 Me gusta más esta explicación. Por mucho que ame los dulces, el ejemplo del tazón de dulces fue un poco exagerado en mi opinión.
Outlaw Programmer
10
Sí, "un lugar para almacenar algo temporalmente, para mitigar las diferencias entre la velocidad de entrada y la velocidad de salida" lo resume perfectamente.
chimpancé
1
Gracias por la simple explicación. Sin embargo, la url PDF adjunta ha estado muerta
hassan
20

Un búfer es simplemente una porción de memoria utilizada para contener datos. En el sentido más general, generalmente es una sola gota de memoria que se carga en una operación, y luego se vacía en una o más, el ejemplo del "cuenco de dulces" de Perchik. En un programa en C, por ejemplo, puede tener:

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

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

... que es una versión mínima de cp (1) . Aquí, la matriz de búfer se usa para almacenar los datos leídos por read (2) hasta que se escriben; entonces el búfer se reutiliza.

Se utilizan esquemas de memoria intermedia más complicados, por ejemplo, una memoria intermedia circular , donde se utiliza un número finito de memorias intermedias, una después de la siguiente; una vez que todos los búferes están llenos, el índice se "ajusta" para que el primero se reutilice.

Charlie Martin
fuente
12

Buffer significa 'almacenamiento temporal'. Los buffers son importantes en la informática porque los dispositivos y sistemas interconectados rara vez están 'sincronizados' entre sí, por lo que cuando la información se envía de un sistema a otro, tiene que esperar hasta que el sistema receptor esté listo.

karim79
fuente
6

Realmente dependería del contexto en cada caso, ya que no hay una definición única, pero en términos generales, un búfer es un lugar para almacenar temporalmente algo. La mejor analogía del mundo real que se me ocurre sería un área de espera. Un ejemplo simple en informática es cuando el búfer se refiere a una parte de la RAM utilizada para el almacenamiento temporal de datos.

Fraser
fuente
2

El búfer es un marcador de posición temporal (variables en muchos lenguajes de programación) en la memoria (ram / disco) en el que se pueden volcar los datos y luego se puede realizar el procesamiento.

Hay muchas ventajas del almacenamiento en búfer, ya que permite que las cosas sucedan en paralelo, mejorar el rendimiento de E / S, etc.

También tiene muchas desventajas si no se usa correctamente, como desbordamiento de búfer, desbordamiento de búfer, etc.

C Ejemplo de buffer de caracteres.

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

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

Santosh Gokak
fuente
2

Un búfer es un área de datos compartida por dispositivos de hardware o procesos de programas que operan a diferentes velocidades o con diferentes conjuntos de prioridades. El búfer permite que cada dispositivo o proceso funcione sin ser retenido por el otro. Para que un búfer sea efectivo, el tamaño del búfer y los algoritmos para mover datos dentro y fuera del búfer.

El búfer es un "punto de espera de punto medio", pero no existe tanto para acelerar la velocidad de una actividad como para apoyar la coordinación de actividades separadas.

Este término se usa tanto en programación como en hardware. En la programación, el almacenamiento en búfer a veces implica la necesidad de filtrar los datos desde su lugar final previsto para que puedan editarse o procesarse antes de pasar a un archivo o base de datos normal.

Ailayna Entarria
fuente
1

El búfer es un marcador de posición temporal (variables en muchos lenguajes de programación) en la memoria (ram / disco) en el que se pueden volcar los datos y luego se puede realizar el procesamiento.

El término "buffer" es un término muy genérico, y no es específico de TI o CS. Es un lugar para almacenar algo temporalmente, para mitigar las diferencias entre la velocidad de entrada y la velocidad de salida. Mientras el productor es más rápido que el consumidor, el productor puede continuar almacenando la salida en el búfer. Cuando el consumidor se acelera, puede leer desde el búfer. El búfer está allí en el medio para cerrar la brecha.


fuente