Búfer de datos
En informática, un búfer de datos (o simplemente un búfer) es una región de una memoria que se utiliza para almacenar datos temporalmente mientras se mueven de un lugar a otro. . Normalmente, los datos se almacenan en un búfer a medida que se recuperan de un dispositivo de entrada (como un micrófono) o justo antes de enviarlos a un dispositivo de salida (como unos altavoces). Sin embargo, se puede utilizar un búfer cuando los datos se mueven entre procesos dentro de una computadora. Esto es comparable a los amortiguadores en las telecomunicaciones. Los buffers se pueden implementar en una ubicación de memoria fija en el hardware o mediante el uso de un buffer de datos virtual en el software que apunta a una ubicación en la memoria física.
En todos los casos, los datos almacenados en un búfer de datos se almacenan en un medio de almacenamiento físico. La mayoría de los buffers se implementan en software, que normalmente utiliza la RAM más rápida para almacenar datos temporales debido al tiempo de acceso mucho más rápido en comparación con las unidades de disco duro. Los buffers se utilizan normalmente cuando hay una diferencia entre la velocidad a la que se reciben los datos y la velocidad a la que se pueden procesar, o en el caso de que estas velocidades sean variables, por ejemplo en una cola de impresión o en la transmisión de vídeo en línea. En el entorno informático distribuido, el búfer de datos a menudo se implementa en forma de búfer en ráfaga, que proporciona un servicio de almacenamiento en búfer distribuido.
Un búfer a menudo ajusta el tiempo implementando un algoritmo de cola (o FIFO) en la memoria, escribiendo datos en la cola simultáneamente a una velocidad y leyéndolos a otra velocidad.
Aplicaciones
Los buffers se utilizan a menudo junto con E/S de hardware, como unidades de disco, envío o recepción de datos hacia o desde una red, o reproducción de sonido en un altavoz. La fila hacia una montaña rusa en un parque de diversiones comparte muchas similitudes. Las personas que viajan en la montaña rusa llegan a un ritmo desconocido y a menudo variable, pero la montaña rusa podrá cargar personas en ráfagas (a medida que llega una montaña rusa y se carga). El área de cola actúa como un espacio temporal donde aquellos que desean viajar esperan hasta que el viaje esté disponible. Los buffers generalmente se usan en un método FIFO (primero en entrar, primero en salir), generando datos en el orden en que llegaron.
Los buffers pueden aumentar el rendimiento de las aplicaciones al permitir que operaciones sincrónicas como lecturas o escrituras de archivos se completen rápidamente en lugar de bloquearse mientras se espera que las interrupciones de hardware accedan a un subsistema de disco físico; en cambio, un sistema operativo puede devolver inmediatamente un resultado exitoso de una llamada a la API, lo que permite que una aplicación continúe procesando mientras el kernel completa la operación del disco en segundo plano. Se pueden lograr beneficios adicionales si la aplicación lee o escribe pequeños bloques de datos que no corresponden al tamaño de bloque del subsistema de disco, lo que permite utilizar un búfer para agregar muchas operaciones de lectura o escritura más pequeñas en tamaños de bloque que son más eficiente para el subsistema de disco, o en el caso de una lectura, a veces para evitar por completo tener que acceder físicamente a un disco.
Búfer de telecomunicaciones
Una rutina de búfer o medio de almacenamiento utilizado en telecomunicaciones compensa una diferencia en la tasa de flujo de datos o el tiempo de ocurrencia de eventos cuando los datos se transfieren de un dispositivo a otro.
Los buffers se utilizan para muchos propósitos, incluidos:
- Interconectar dos circuitos digitales que operan a diferentes velocidades.
- Mantener datos para uso posterior.
- Permitir que las correcciones de tiempo se realicen en una secuencia de datos.
- Recopilar bits de datos binarios en grupos que pueden ser operados como unidad.
- Retrasar el tiempo de tránsito de una señal para permitir que se produzcan otras operaciones.
Ejemplos
- El comando/statement BUFFERS en CONFIG.SYS de DOS.
- El búfer entre un puerto serie (UART) y un módem. La velocidad del puerto COM puede ser de 38400 bits/s, mientras que el módem puede tener sólo un transportista de 14400 bit/s.
- El búfer integrado en una unidad de disco duro, impresora, unidad BD/DVD/CD u otra pieza de hardware.
- El framebuffer en una tarjeta de vídeo.
Historia
Una de las primeras menciones de un búfer de impresión es el "Outscriber" ideado por el pionero del procesamiento de imágenes Russel A. Kirsch para la computadora SEAC en 1952:
Uno de los más importantes problemas en el diseño de ordenadores digitales automáticos es el de obtener los resultados calculados fuera de la máquina lo suficientemente rápido como para evitar demorar el progreso adicional de los cálculos. En muchos de los problemas a los que se aplica una computadora de uso general la cantidad de datos de salida es relativamente grande, por lo que la ineficiencia seria resultaría de forzar la computadora a esperar que estos datos se escriban en los dispositivos de impresión existentes. Esta dificultad se ha resuelto en el SEAC proporcionando dispositivos de grabación magnéticos como unidades de salida. Estos dispositivos pueden recibir información de la máquina a precios de hasta 100 veces tan rápido como se puede utilizar una máquina de escribir eléctrica. Así, se consigue una mejor eficiencia en la grabación de los datos de salida; la transcripción se puede hacer más tarde desde el dispositivo de grabación magnética a un dispositivo de impresión sin atar el ordenador principal.