stringtranslate.com

Infrautilización del búfer

En informática , la insuficiencia de datos del búfer o el desbordamiento del búfer es un estado que ocurre cuando un búfer utilizado para la comunicación entre dos dispositivos o procesos recibe datos a una velocidad menor que la que se leen. El término es distinto de desbordamiento de búfer , una condición en la que una parte de la memoria forma un búfer de un tamaño fijo pero se llena con más que esa cantidad de datos. Esto requiere que el programa o dispositivo que lee del búfer detenga su procesamiento mientras el búfer se recarga. Esto puede provocar efectos secundarios no deseados y, a veces, graves, ya que los datos almacenados en el buffer no suelen ser adecuados para este tipo de accesos de inicio y parada.

En términos de programación concurrente , una insuficiencia de datos del búfer puede considerarse una forma de escasez de recursos .

Los términos insuficiencia de datos del búfer y desbordamiento del búfer también se utilizan para referirse a la subescritura del búfer , una condición similar al desbordamiento del búfer, pero en la que se engaña al programa para que escriba antes del comienzo del búfer, anulando los datos potenciales allí, como los bits de permiso . [1]

Causas generales y soluciones.

Las insuficiencias de datos del búfer suelen ser el resultado de problemas transitorios relacionados con la conexión que se está almacenando en el búfer: ya sea una conexión entre dos procesos, con otros compitiendo por el tiempo de CPU , o un enlace físico, con dispositivos compitiendo por el ancho de banda .

La protección más sencilla contra estos problemas es aumentar el tamaño del búfer: si un flujo de datos entrante necesita leerse a 1 bit por segundo, un búfer de 10 bits permitiría bloquear la conexión durante hasta 10 segundos antes de fallar. mientras que uno de 60 bits permitiría un bloqueo de hasta un minuto. Sin embargo, esto requiere que haya más memoria disponible para el proceso o dispositivo, lo que puede resultar costoso. Se supone que el búfer comienza lleno (lo que requiere una pausa potencialmente significativa antes de que comience el proceso de lectura) y que siempre permanecerá lleno a menos que la conexión esté actualmente bloqueada. Si los datos, en promedio, no llegan más rápido de lo necesario, cualquier bloqueo en la conexión será acumulativo; "soltar" un bit cada minuto en una conexión hipotética con un búfer de 60 bits provocaría una insuficiencia de datos del búfer si la conexión permaneciera activa durante una hora. En aplicaciones en tiempo real, un tamaño de búfer grande también aumenta la latencia entre la entrada y la salida, lo cual no es deseable en aplicaciones de baja latencia, como las videoconferencias.

Problemas con la grabación de CD y DVD

La insuficiencia de datos del búfer puede causar serios problemas durante la grabación de CD/DVD , porque una vez que se inicia la escritura, no puede detenerse y reanudarse sin problemas; por lo tanto, la pausa necesaria por la insuficiencia de datos puede provocar que los datos del disco dejen de ser válidos. Dado que el búfer generalmente se llena desde una fuente relativamente lenta, como un disco duro u otro CD/DVD, una gran carga de CPU o memoria proveniente de otras tareas simultáneas puede agotar fácilmente la capacidad de un búfer pequeño. Por lo tanto, varios proveedores individuales de grabadoras de CD/DVD, bajo varias marcas comerciales , implementaron una técnica llamada protección contra insuficiencia de datos del búfer , como Plextor BurnProof, Nero UltraBuffer, Yamaha SafeBurn, JustLink y Seamless Link. Con esta técnica, el láser puede detener la escritura durante cualquier período de tiempo y reanudarla cuando el búfer vuelve a estar lleno. La brecha entre escrituras sucesivas es extremadamente pequeña.

Otra forma de protegerse contra el problema, cuando se utilizan medios regrabables ( CD-RW , DVD-RW , DVD-RAM ), es utilizar el sistema de archivos UDF , que organiza los datos en " paquetes " más pequeños, referenciados por una dirección única y actualizada. tabla, que por lo tanto se puede escribir en ráfagas más cortas.

Reproducción multimedia

Si el framebuffer del controlador de gráficos no se actualiza, la imagen de la pantalla de la computadora parecerá bloquearse hasta que el buffer reciba nuevos datos. Muchos programas de reproducción de vídeo (por ejemplo, MPlayer ) cuentan con la capacidad de eliminar fotogramas si el sistema está sobrecargado, permitiendo intencionalmente una insuficiencia de datos del búfer para mantener el ritmo.

El búfer en un controlador de audio es un búfer en anillo . Si se produce una insuficiencia de datos y el controlador de audio no se detiene, seguirá repitiendo el sonido contenido en el búfer o generará silencio, según la implementación. Este efecto se conoce comúnmente como "ametralladora" o efecto de tartamudeo Max Headroom . Esto sucede si el sistema operativo se bloquea durante la reproducción de audio. Una rutina de manejo de errores (por ejemplo, pantalla azul de la muerte ) puede eventualmente detener el controlador de audio.

Imitar intencionalmente este error de audio durante la creación de música o arte sonoro, ya sea empalmando audio manualmente o reactivando muestras, o usando complementos, se denomina edición Stutter .

Referencias

  1. ^ "CWE-124: Suscripción del búfer ('Desbordamiento insuficiente del búfer')". CWE .