Un sistema de retransmisión de vídeo en tiempo real (figura 1) consta de un emisor que es capaz de recoger imágenes, codificarlas para lograr que ocupen menos espacio, y enviarlas a una serie de receptores. Se desea que los receptores tengan una imagen que sea lo más fiel posible al desarrollo temporal de las escenas a retransmitir (por ejemplo, que no acumulen retrasos).
El emisor intenta producir un cierto número de imágenes por segundo.
Sin embargo, debido a la tecnología usada para la codificación de
imágenes, algunos fotogramas tardan más y otros menos en estar
preparados para su difusión. Por lo tanto, el emisor elabora
fotogramas a una cadencia no fija, tardando, en media, segundos
por fotograma. Dichos fotogramas se dejan inmediatamente disponibles
para los receptores. Como número orientativo, los
sistemas reales de televisión, vídeo o DVD muestran entre 24 y 50
fotogramas por segundo, dependiendo del estándar.
Por otro lado, los receptores pueden ser de distinta calidad y velocidad. Cada receptor puede tardar un tiempo variable en mostrar cada fotograma (sin relación directa con el tiempo empleado por el emisor en codificarlo), y distintos receptores pueden necesitar un tiempo diferente para el mismo fotograma. Los receptores pueden conectarse al sistema en cualquier momento (su número, por tanto, no está fijo a lo largo de la historia del recurso), y mostrar las mismas imágenes que los demás receptores. Se puede asumir que la retransmisión no termina una vez que ha comenzado, y los receptores no se desconectan del sistema una vez conectados a él.
De todo lo anterior se desprende que el emisor y los receptores se comportan de forma asíncrona. Sin embargo, se quiere asegurar que la visualización progresa adecuadamente y de forma lo más simultánea posible: no debe suceder que un receptor con más potencia de proceso adelante sin límite a otros más lentos. Para conseguirlo, algunos receptores pueden no mostrar algún fotograma (bien porque lo desechen, bien porque directamente no lo reciban) para conseguir alcanzar la simultaneidad necesaria. Si bien la falta de un fotograma representa una disminución en la calidad de la reproducción, ello debe ser causado sólo por la falta de potencia de un reproductor en particular, que no es capaz de alcanzar la velocidad a la que el emisor genera fotogramas. El diseño del sistema no debe producir pérdidas innecesarias de fotogramas.
Es deseable desacoplar en lo posible las velocidades del emisor y los
receptores, para intentar que, aun en el caso de que el emisor tarde
más de unidades de tiempo en codificar una imagen determinada, los
receptores no perciban este retraso. Asimismo debe intentarse reducir
en lo posible el gasto de memoria del sistema, eliminando del mismo
fotogramas en cuanto estos no sean ya necesarios y evitando la
duplicación de la información (un segundo de película en formato MPEG,
como el usado en DVDs, que utiliza con algoritmos de compresión y
predicción del movimiento muy elaborados, necesita alrededor de 0.6 Mb
de almacenamiento).
Las únicas operaciones disponibles en las interfaces del servidor y los receptores son:
procedure Mostrar_Imagen(I: in Tipo_Imagen); -- Muestra en el receptor llamante la imagen I. Tarda un tiempo -- en ejecutarse, que varía dependiendo de la imagen I. procedure Codificar_Imagen(I: out Tipo_Imagen); -- Accede a la cámara y devuelve en I el resultado de codificarla y comprimirla. -- Tarda un tiempo en ejecutarse, que varía dependiendo de la imagen I.
Adicionalmente se dispone de una operación de bloqueo durante un tiempo dado, que puede utilizarse en cualquier proceso del sistema:
procedure Esperar(T: in Tipo_Tiempo); -- Espera (bloqueando el proceso) durante T unidades de tiempo.
Supondremos que los valores de Tipo_Tiempo pueden asignarse, compararse (con igualdad y desigualdad) y operarse (por ejemplo, para sumar una duración a un punto en el tiempo). De modo similar, las variables de tipo Tipo_Imagen puede asignarse entre sí.
Se pide: que el alumno realice la fase de análisis y diseño de la concurrencia y proporcione los siguientes documentos:
No es preciso representar el grafo de estados y transiciones ni realizar un análisis de vivacidad.
[3 puntos]
El diagrama de procesos y recursos, el seudocódigo de los procesos y la especificación formal de recurso se muestran en el enunciado la segunda parte del examen.