Sistemas Operativos Multimedia Las películas digitales, los clips de video y la música se están convirtiendo en una forma cada vez más común de presentar información y entretenimiento mediante el uso de una computadora. Los archivos de audio y video se pueden almacenar en un disco y reproducirse sobre pedido. Sin embargo, sus características son muy distintas de los archivos de texto tradicionales para los que fueron diseñados los sistemas de archivos actuales. Como consecuencia, se necesitan nuevos tipos de sistemas de archivos para manejarlos. Peor aún: el proceso de almacenar y reproducir audio y video impone nuevas demandas sobre el programador y otras partes del sistema operativo.
Multimedia, que en sentido literal significa varios medios. Bajo esta definición, este libro es un trabajo de multimedia. Después de todo, contiene dos medios: texto e imágenes (las figuras). Sin embargo, la mayoría de las personas utilizan el término “multimedia” para indicar un documento
que contiene dos o más medios continuos; es decir, medios que deben reproducirse durante cierto intervalo.
INTRODUCCIÓN A MULTIMEDIA DVD (Disco versátil digital) son discos ópticos que usan los mismos discos en blanco de policarbonato de 120 mm (plástico) que los CD-ROMs, pero grabados a una densidad mayor, con lo cual se obtiene una capacidad de entre 5 GB y 17 GB, dependiendo del formato.
Hay dos candidatos que están tratando de ser el sucesor del DVD. A uno se le conoce como Blu-ray y contiene 25 GB en el formato de una sola capa (50 GB en el formato de doble capa). Al otro se le conoce como HD DVD y contiene 15 GB en el formato de una sola capa (30 GB en el formato de doble capa). Otro uso de multimedia es para descargar clips de video a través de Internet. Otra área en la que se debe soportar multimedia es en la creación de los videos mismos. Un campo más en el que se está haciendo cada vez más importante el uso de multimedia es en los juegos de computadora. Por último, el santo grial del mundo de multimedia es el video bajo demanda, el cual se refiere a la capacidad de los consumidores de seleccionar una película en su hogar, usando el control remoto de su televisión (o el ratón) y verla en su televisión (o monitor de computadora) al instante.
Volviendo al concepto de multimedia, tiene dos características clave que deben comprenderse bien para lidiar con ella de manera exitosa: 1. La multimedia utiliza velocidades de datos en extremo altas. 2. La multimedia requiere reproducción en tiempo real.
ARCHIVOS DE MULTIMEDIA El video y el audio son completamente diferentes. Se capturan mediante distintos dispositivos (chip CCD, en comparación con el micrófono), tienen una estructura interna distinta (el video tiene de 25 a 30 cuadros/seg; el audio tiene 44,100 muestras-/seg), y se reproducen mediante distintos dispositivos (monitor, en comparación con las bocinas).
Una película digital puede consistir realmente de muchos archivos: un archivo de video, varios archivos de audio y varios archivos de texto con subtítulos en varios lenguajes. Los DVDs tienen la capacidad de almacenar hasta 32 archivos de lenguajes y subtítulos.
Codificación de video El ojo humano tiene la propiedad de que, cuando se proyecta una imagen en la retina, se retiene durante cierto número de milisegundos antes de deteriorarse. Si se proyecta una secuencia de imágenes a 50 o más imágenes/seg, el ojo no se da cuenta de que está viendo imágenes discretas. Todos los sistemas de imágenes en movimiento basadas en video y en filme explotan este principio para producir películas en movimiento.
Para representar la imagen bidimensional enfrente de ella como un voltaje unidimensional como una función del tiempo, la cámara pasa un haz de electrones rápidamente de un lado a otro de la imagen, y con lentitud la recorre de arriba hacia abajo, grabando la intensidad de la luz a medida que avanza. Al final del barrido, que se conoce como un cuadro, el haz regresa a su posición original. Esta intensidad como función del tiempo se transmite y los receptores repiten el proceso de exploración para reconstruir la imagen. El patrón de exploración utilizado tanto por la cámara como por el receptor se muestra en la figura 7-4 (como información adicional, las cámaras CCD integran en vez de explorar, pero algunas cámaras y todos los monitores de CRT exploran).
Codificación de audio Una onda de audio (sonido) es una onda (de presión) acústica unidimensional. Cuando una onda acústica entra al oído, el tímpano vibra y hace que los pequeños huesos del oído interno vibren junto con él, enviando pulsos nerviosos al cerebro. El espectador percibe estos pulsos como sonido. De una manera similar, cuando una onda acústica golpea un micrófono, éste genera una señal eléctrica que representa la amplitud del sonido como función del tiempo. El rango de frecuencia del oído humano es de 20 Hz a 20,000 Hz; algunos animales, en especial los perros, pueden escuchar frecuencias más altas. El oído escucha en forma logarítmica, por lo que la proporción de dos sonidos con amplitudes A y B se expresa de manera convencional en dB (decibeles), de acuerdo con la fórmula
COMPRESIÓN DE VIDEO La manipulación de material multimedia en forma descomprimida está completamente fuera de consideración por ser demasiado grande. La única esperanza es que sea posible la compresión masiva. Por fortuna, un gran cuerpo de investigación durante las últimas décadas ha descubierto muchas técnicas de compresión y algoritmos que hacen factible la transmisión de multimedia.
Todos los sistemas de compresión requieren dos algoritmos: uno para comprimir los datos en el origen, y otro para descomprimirlos en el destino. En la literatura, a estos algoritmos se les conoce como algoritmos de codificación y decodificación, respectivamente.
El estándar JPEG El estándar JPEG (Joint Photographic Experts Group, Grupo de expertos unidos en fotografía) para comprimir imágenes fijas de tono continuo (como las fotografías) fue desarrollado por expertos fotográficos que trabajaban bajo los auspicios unidos de ITU, ISO e IEC, otro cuerpo de estándares. Es importante para la multimedia, ya que en una primera aproximación, el estándar de multimedia para las imágenes en movimiento, MPEG, es sólo la codificación JPEG de cada cuadro por separado, más ciertas características adicionales para la compresión entre cuadros y la compensación de movimiento. JPEG se define en el Estándar Internacional 10918.
El estándar MPEG Los estándares MPEG (Motion Picture Expert Groups, Grupo de expertos en películas). Éstos son los principales algoritmos utilizados para comprimir videos y han sido estándares internacionales desde 1993. MPEG-1 (Estándar Internacional 11172) se diseñó para una salida con calidad de grabadora de video (352 x 240 para NTSC), utilizando una velocidad de bits de 1.2 Mbps. MPEG-2 (Estándar Internacional 13818) se diseñó para comprimir el video de calidad de transmisión en 4 o 6 Mbps, para que pudiera caber en un canal de transmisión NTSC o PAL. Ambas versiones aprovechan los dos tipos de redundancias que existen en las películas: espacial y temporal.
Para las escenas en las que la cámara y el fondo son rígidamente estacionarios y uno o dos actores se están moviendo con lentitud, casi todos los píxeles serán idénticos de un cuadro a otro. Aquí sólo habría que restar cada cuadro del anterior y ejecutar JPEG en la diferencia. Sin embargo, para escenas donde la cámara se mueve o se acerca/aleja lentamente, esta técnica tiene muchas fallas. Lo que se necesita es una forma de compensar este movimiento. Esto es lo que hace MPEG; de hecho, es la principal diferencia entre MPEG y JPEG. La salida MPEG-2 consiste en tres tipos distintos de cuadros que deben ser procesados por el programa visor: 1. Cuadros I (intracodificados): imágenes fijas autocontenidas, codificadas en JPEG. 2. Cuadros P (predictivos): diferencia con el último cuadro, bloque por bloque. 3. Cuadros B (bidireccionales): diferencias entre el último cuadro y el siguiente.
COMPRESIÓN DE AUDIO El audio con calidad de CD requiere un ancho de banda de transmisión de 1.411 Mbps, como acabamos de ver. Sin duda se requiere una compresión considerable para que la transmisión por Internet sea práctica. Por esta razón se han desarrollado varios algoritmos de compresión de audio. Probablemente el más popular sea el audio MPEG, que tiene tres niveles (variantes) de los cuales MP3 (audio MPEG nivel 3) es el más potente y conocido. La compresión de audio se puede realizar en una de tres formas.
Codificación de formas de onda Codificación perceptual
PROGRAMACIÓN DE PROCESOS MULTIMEDIA Los sistemas operativos que soportan multimedia difieren de los sistemas tradicionales en tres formas principales: programación de procesos, sistema de archivos y programación de disco.
Procesos de programación homogéneos El tipo más simple de servidor de video es el que puede permite la visualización de un número fijo de películas, donde todas utilizan la misma velocidad de cuadro, resolución de video, velocidad de datos y otros parámetros. Bajo estas circunstancias, un algoritmo de programación simple pero efectivo puede ser el siguiente. Para cada película hay un solo proceso (o hilo), cuyo trabajo es leer la película del disco un cuadro a la vez y después transmitir ese cuadro al usuario.
Programación general en tiempo real Varios procesos compiten por la CPU, cada uno con su propio trabajo y sus tiempos de respuesta. En los siguientes modelos vamos a suponer que el sistema conoce la frecuencia a la que se debe ejecutar cada proceso, cuánto trabajo tiene que realizar y cuál es el siguiente tiempo de respuesta (la programación del disco también es un aspecto que consideraremos más adelante). La programación de varios procesos que compiten entre sí, de los cuales algunos (o todos) tienen tiempos de respuesta que deben cumplir, se conoce como programación en tiempo re al.
Programación monotónica en frecuencia El algoritmo de programación de tiempo real estático clásico para los procesos periódicos preferentes es RMS (Rate Monotonic Scheduling, Programación monotónica en frecuencia) (Liu y Layland, 1973). Se puede utilizar para los procesos que cumplen con las siguientes condiciones: 1. Cada proceso periódico se debe completar dentro de su periodo. 2. Ningún proceso es dependiente de otro. 3. Cada proceso necesita la misma cantidad de tiempo de la CPU en cada ráfaga. 4. Ningún proceso no periódico tiene tiempo de respuesta. 5. La preferencia de procesos ocurre en forma instantánea y sin sobrecarga.
Programación del menor tiempo de respuesta primero Otro algoritmo de programación de tiempo real popular es el del Menor tiempo de respuesta primero. (EDF), que es un algoritmo dinámico que no requiere que los procesos sean periódicos, al igual que el algoritmo monotónico en frecuencia. Tampoco requiere el mismo tiempo de ejecución por cada ráfaga de la CPU, como el RMS. Cada vez que un proceso necesita tiempo de la CPU, anuncia su presencia y su tiempo de respuesta. El programador mantiene una lista de procesos ejecutables, ordenados con base en el tiempo de respuesta. El algoritmo ejecuta el primer proceso en la lista, el que tiene el tiempo de respuesta más cercano. Cada vez que un nuevo proceso está listo, el sistema comprueba que ocurra su tiempo de respuesta antes que el del proceso actual en ejecución.
PARADIGMAS DE LOS SISTEMAS DE ARCHIVOS MULTIMEDIA Los sistemas de archivos multimedia utilizan un paradigma distinto al de los sistemas de archivos tradicionales. Para leer un archivo multimedia, un proceso de usuario emite una llamada al sistema start, especificando el archivo que se va a leer y otros parámetros; por ejemplo, qué pistas de audio y subtítulos utilizar. Después, el servidor de video empieza a enviar cuadros a la velocidad requerida.
Funciones de control de VCR La mayoría de los servidores de video también implementan funciones de control de VCR estándar, incluyendo pausa, adelanto rápido y rebobinado. La pausa es bastante simple. El usuario envía un mensaje de vuelta al servidor de video, indicándole que se detenga. Todo lo que tiene que hacer en ese punto es recordar qué cuadro sigue. Sin embargo, el adelanto rápido y el retroceso rápido (es decir, reproducir mientras se retrocede) son mucho más complicados.
Video casi bajo demanda Cuando k usuarios reciben la misma película, se impone la misma carga en el servidor que cuando reciben k películas distintas. Sin embargo, con un pequeño cambio en el modelo, es posible obtener considerables ganancias en el rendimiento. El problema con el video bajo demanda es que los usuarios pueden empezar a recibir el flujo continuo de una película en un momento arbitrario, por lo que si hay 100 usuarios que empiezan a ver una nueva película aproximadamente a las 8 P.M., es probable que no haya dos usuarios que empiecen a ver la película en el mismo instante exacto, por lo que no pueden compartir un flujo continuo. La modificación que hace posible la optimización es decir a todos los usuarios que las películas sólo empiezan a la hora y después cada 5 minutos (por ejemplo). Así, si un usuario desea ver una película a las 8:02, tendrá que esperar hasta las 8:05.
Video casi bajo demanda con funciones de VCR La combinación ideal sería el video casi bajo demanda (por cuestión de eficiencia) más controles de VCR completos para cada espectador individual (para comodidad del usuario). Con unas cuantas modificaciones al modelo, es posible un diseño así.
COLOCACIÓN DE LOS ARCHIVOS Los archivos multimedia son muy grandes, a menudo se escriben sólo una vez pero se leen muchas Veces y tienden a utilizarse en forma secuencial. Su reproducción también debe cumplir con estrictos criterios de calidad. En conjunto, estos requerimientos sugieren distribuciones del sistema de archivos distintas de las que utilizan los sistemas operativos tradicionales.
Colocación de un archivo en un solo disco El requerimiento más importante es que los datos se pueden colocar en flujo continuo en la red o en un dispositivo de salida, a la velocidad requerida y sin fluctuación. Por esta razón, no es muy conveniente realizar varias búsquedas durante un cuadro. Una manera de eliminar las búsquedas entre archivos en los servidores de video es utilizar archivos contiguos. Por lo general, hacer que los archivos sean contiguos no funciona bien, pero en un servidor de video precargado cuidadosamente con películas por adelantado que no cambian más adelante, puede funcionar.
Dos estrategias alternativas de organización de archivos Estas observaciones conllevan a otras dos organizaciones para la colocación de archivos multimedia. Bloques pequeños Bloques de disco grandes
Colocación de archivos para el video casi bajo demanda Para el video casi bajo demanda, es más eficiente una estrategia de colocación de archivos distinta. Recuerde que la misma película está saliendo como varios flujos escalonados. Aún si la película se almacena como un archivo contiguo, se requiere una búsqueda para cada flujo. Chen y Thapar (1997) han ideado una estrategia de colocación de archivos para eliminar casi todas esas búsquedas. Su uso se ilustra en la figura 7-21 para una película que se reproduce a 30 cuadros/seg, donde se inicia un nuevo flujo cada 5 minutos, como en la figura 7-17. Con estos parámetros, se necesitan 24 flujos concurrentes para una película de 2 hor as.
Colocación de varios archivos en un solo disco Para muchos tipos de concursos de popularidad, como las películas que se rentan, los libros que se sacan de una biblioteca, las páginas Web a las que se hace referencia, e incluso las palabras en inglés que se utilizan en una novela, o la población de las ciudades más grandes, una aproximación razonable de la popularidad relativa va después de un patrón sorprendentemente predecible. Este patrón fue descubierto por un profesor de lingüística en Harvard, George Zipf (1902 a 1950), y se conoce ahora como ley de Zipf. Lo que establece es que si las películas, libros, páginas Web o palabras se clasifican con base en su popularidad, la probabilidad de que el siguiente cliente seleccione el elemento clasificado como k-ésimo en la lista es de C/k, en donde C es una constante de normalización.
Colocación de archivos en varios discos Para obtener un rendimiento más alto, los servidores de video tienen con frecuencia muchos discos que se pueden operar en paralelo. Algunas veces se utilizan RAIDs pero no con frecuencia, pues lo que ofrecen los RAIDs es una mayor confiabilidad a cambio del rendimiento. Por lo general, los servidores de video desean un alto rendimiento y no se preocupan tanto por corregir los errores transitorios. Además, los dispositivos controladores RAID se pueden convertir en un cuello de botella si tienen demasiados discos que manejar a la vez.
Una configuración más común es simplemente un gran número de discos, lo que algunas veces se conoce como granja de discos. Los discos no giran de una manera sincronizada y no contienen bits de paridad, como ocurre con los RAIDs. Una posible configuración es colocar la película A en el disco 1, la película B en el disco 2, y así en lo sucesivo.
USO DE CACHÉ La caché de archivos LRU tradicional no funciona bien con los archivos multimedia, debido a que los patrones de acceso para las películas son distintos a los patrones de acceso de los archivos de texto. La idea detrás de las cachés tradicionales de búfer LRU es que, después de utilizar un bloque, se debe mantener en la caché en caso de que se vuelva a necesitar casi de inmediato. Por ejemplo, al editar un archivo, el conjunto de bloques en donde se escribe el archivo tienden a utilizarse una y otra vez, hasta que termine la sesión de edición. En otras palabras, cuando hay una probabilidad relativamente alta de que se reutilizará un bloque dentro de un intervalo corto, vale la pena mantenerlo a la mano para eliminar un futuro acceso al disco. Con multimedia, el patrón de acceso ordinario es que una película se vea de principio a fin en forma secuencial. Es improbable que un bloque se utilice por segunda vez, a menos que el usuario rebobine la película para ver cierta escena de nuevo. En consecuencia, las técnicas de caché normales no funcionan. Sin embargo, el uso de caché puede ayudar de todas formas, pero sólo si se utiliza de manera distinta.
PROGRAMACIÓN DE DISCOS PARA MULTIMEDIA Programación de discos estática En un sistema operativo tradicional, se realizan peticiones de bloques de disco de una manera muy impredecible. Lo mejor que puede hacer el subsistema de disco es realizar una lectura adelantada de un bloque para cada archivo abierto. Aparte de eso, todo lo que puede hacer es esperar a que lleguen las peticiones y procesarlas bajo demanda. Multimedia es distinta. Cada flujo activo impone una carga bien definida en el sistema, que es muy predecible. Para la reproducción NTSC, cada 33.3 mseg, cada cliente desea el siguiente cuadro en su archivo y el sistema tiene 33.3 mseg para proporcionar todos los cuadros (el sistema necesita colocar en el búfer por lo menos un cuadro por cada flujo, para que la obtención del cuadro k 1 pueda proceder en paralelo con la reproducción del cuadro k). Esta carga predecible se puede utilizar para programar
Programación de disco dinámica Las distintas películas pueden tener ahora distintas velocidades de datos, por lo que no es posible tener una ronda cada 33.3 mseg y obtener un cuadro para cada flujo. Las peticiones llegan al disco más o menos en forma aleatoria.
Cada petición de lectura especifica qué bloque se debe leer, y además en qué momento se necesita este bloque; es decir, el tiempo de respuesta. En aras de simplicidad vamos a suponer que el tiempo de servicio actual para cada petición es el mismo (aun cuando en definitiva esto no sea cierto). De esta forma, podemos restar el tiempo de servicio fijo a cada petición para obtener el tiempo más retrasado en el que se puede iniciar la petición sin dejar de cumplir con el tiempo de respuesta. Esto simplifica el modelo, ya que lo que le preocupa al programador del disco es el tiempo de respuesta para programar la petición.
RESUMEN Multimedia es un área de aplicación de las computadoras con amplio crecimiento. Debido al gran tamaño de los archivos de multimedia y sus estrictos requerimientos de reproducción en tiempo real, los sistemas operativos diseñados para texto no son óptimos para multimedia. Los archivos de multimedia consisten en varias pistas paralelas, donde por lo general una pista es de video y al menos una de audio, y algunas veces también se incluyen pistas de subtítulos. Todas estas pistas deben estar sincronizadas durante la reproducción.
Para grabar el audio, se muestrea el volumen en forma periódica, por lo general 44,100 veces/segundo (para el sonido con calidad de CD). Se puede aplicar compresión a la señal de audio, con lo cual se obtiene una proporción de compresión uniforme de aproximadamente 10x. La compresión de video utiliza la compresión dentro de cada cuadro (JPEG) y la compresión entre cuadros (MPEG). Esta última representa los cuadros P como diferencias respecto al cuadro anterior. Los cuadros B se pueden basar en el cuadro anterior o en el siguiente.
Multimedia necesita de la programación en tiempo real para poder cumplir con sus tiempos de respuesta. Comúnmente se utilizan dos algoritmos. El primero es la programación monotónica en
frecuencia, que es un algoritmo preferente estático que asigna prioridades fijas a los procesos, con base en sus periodos. El segundo es el tiempo de respuesta más cercano primero, que es un algoritmo dinámico que siempre selecciona el proceso con el tiempo de respuesta más cercano. El algoritmo EDF es más complicado, pero puede obtener 100% de utilización, algo que RMS no puede lograr.
Los sistemas de archivos multimedia utilizan por lo general un modelo de empuje (push) en vez de un modelo de extracción (pull). Una vez que inicia un flujo, los bits llegan del disco sin que haya más peticiones por parte del usuario. Este método es bastante distinto al de los sistemas operativos convencionales, pero se necesita para cumplir con los requerimientos de tiempo real. Los archivos se pueden almacenar en forma contigua o no. En el último caso, la unidad puede ser de longitud variable (un bloque contiene un cuadro) o de longitud fija (un bloque contiene muchos cuadros). Estos métodos tienen distintas concesiones.
La colocación de archivos en el disco afecta al rendimiento. Cuando hay varios archivos, algunas veces se utiliza el algoritmo de órgano de tubos. Es común dividir en bandas los archivos entre varios discos, ya sean bandas estrechas o amplias. También se utilizan mucho las estrategias de caché de bloque y de archivo para mejorar el rendimiento.