viernes, agosto 7, 2009
|
Ayer les expliqué el concepto de un Cache, hoy les explicaré un concepto relacionado llamado un Buffer, y trataré una vez más de utilizar ejemplos de la vida cotidiana para que entiendan el concepto.
Así que empecemos hoy imaginándonos que trabajas en un restaurante en donde solo venden hamburguesas, y tu trabajo es ser el que las prepara según las vayan ordenando. Una cosa que notarás en tus primeros días en ese empleo es que en determinados momentos del día, en particular a la hora del almuerzo y la cena, los clientes piden grandes cantidades de hamburguesas. Inicialmente si te pedían dos hamburguesas, decías "¡en un momento están listas!", y empezabas a prepararlas, y cuando terminabas las entregabas a la persona encargada de tomar la orden del cliente. Sin embargo, mientras tu preparabas esas dos hamburguesas el cliente simplemente esperaba con los brazos cruzados, haciendo el trabajo bastante ineficiente. Pero poco después se te ocurrió una idea: En vez de esperar a que te pidan las hamburguesas, lo que hay que hacer es preparar de antemano varias hamburguesas para cuando la hora pico llegue ya se puedan vender varias de ellas en lo que tu sigues preparando unas cuantas hamburguesas mas. Lo que acabas de crear es un Buffer. Un Buffer no es nada más que preventivamente tener algo listo, para cuando lo necesites ya tenerlo hecho y no tener que buscarlo o hacerlo en el momento que te lo pidan (esto es diferente a un Cache como veremos más adelante). Y este concepto, como veremos a continuación, es (junto con el Cache) uno de los conceptos más básicos y universales en el mundo de la computación... Por ejemplo, cuando ves un video de YouTube por Internet, notarás que YouTube primero empieza a pre-descargar el video, pero sin reproducirlo, para así tener suficiente video ya descargado para cuando empiece a reproducirlo ya tenga "por adelantado" buena parte del video en tu PC. Usualmente muchos dicen que el video ha sido puesto en Cache, pero en realidad lo correcto es decir que ha sido puesto en un Buffer. De esa manera, si el video está reproduciendo, y la conexión de Internet falla por un par de segundos, el video sigue viéndose normalmente porque lo que tu navegador web hace es que reproduce el video del Buffer, y no del Internet. En realidad, y esto es algo curioso, YouTube nunca reproduce videos directamente desde Internet, sino que los reproduce siempre desde el Buffer. Lo que ocurre tras bastidores es que el Buffer se vive llenando de datos desde el Internet por un extremo, y por el otro lado lo envía a la pantalla de tu PC. Y lo mismo con casi todo sistema que utilice Buffers. Este concepto en nivel técnico es bastante potente, pues no solo hace que el flujo de dato sea constante aun si el verdadero flujo de datos no lo sea, sino que además es una técnica para aumentar el rendimiento de flujos de datos. Veamos como. Digamos que el restaurante de hamburguesas se hace bastante popular, y que tu solo ya no eres suficiente para preparar las hamburguesas, aun con un Buffer de decenas de hamburguesas pre-hechas. En este caso se puede contratar a otra persona para que te ayude, pero ahora ambos pueden contribuir al Buffer, llenándolo entre los dos de hamburguesas por un extremo, y por el otro extremo seguimos con una sola persona atendiendo a los clientes, independientemente del trabajo que ustedes hagan detrás. Similarmente, imagínate un canal de TV que quiera transmitir su programación entre una ciudad y otra por medio de Internet. Al poco tiempo se da cuenta que el ancho de banda de su conexión T1 (1.544 Mbps) no es suficiente para enviar el video a la calidad que desea, pero calcula que con el doble de ancho de banda sería suficiente hacerlo. Sin embargo, por motivos técnicos la empresa que le provee de Internet le informa que una T1 es la velocidad mayor que ofrecen. La solución es contratar dos lineas separadas, dividir el flujo de datos de video entre las dos lineas, y en el otro extremo ensamblar el video de nuevo en un Buffer, y después tomar en la red local remota el video combinado desde el Buffer y reproducirlo. Es decir, en la ciudad de destino el Buffer actúa no solo como una manera de poder leer el video de forma continua, sino que también de aislar la aplicación final del detalle técnico de que el video proviene de dos conexiones diferentes. Este mismo concepto de Buffer es muy común también en supermercados: Mantienen un Buffer de comida en un almacén dentro del supermercado, para que mientras se va vendiendo la comida ellos vayan llenando los estantes de comida con la almacenada en el almacén (el Buffer), para de esa manera cada vez que necesiten comida no tener que llamar a sus proveedores y esperar varios días a que llegue esta. Entonces, el objetivo de un Buffer es tratar de garantizar que siempre habrá un flujo constante de datos. Es decir, en vez de obtener los datos solo en el momento que uno los pida, que estos ya estén disponibles antes de uno pedirlos. Entonces, una diferencia fundamental entre un Cache y un Buffer, es que en el caso de un Cache que está diseñado para tratar de adivinar cuáles serán los datos que serán pedidos próximamente de manera aleatoria, un Buffer por otro lado está diseñado de manera más sencilla ya que los datos que se piden no son aleatorios (como distintos números telefónicos) sino que continuos (como los fotogramas de un video, o una linea de hamburguesas), por lo que el Buffer siempre sabe que es lo que le van a pedir próximo. Y como siempre, pueden acceder a más artículos similares en la sección de "Pregunta a eliax", y enviar sus preguntas por este medio. autor: josé elías |
17 comentarios |
Educación , Pregunta a eliax , Software |
Comentarios
Añadir Comentario |
"La ciencia tal vez resuelva algunos problemas, pero lo que es seguro es que los dioses nunca han resuelto nada."
en camino a la singularidad...
©2005-2024 josé c. elías
todos los derechos reservados
como compartir los artículos de eliax
Seguir a @eliax
Mas claro de ahi se dana!!
Gracias Eliax