lunes, 22 de octubre de 2012

Tarea 8: Sistemas Concurrentes

Red de Petri

Una red de Petri es un grafo con pesos bipartito usado como representación en la computación concurrente, particularmente los aspectos que involucran programación multi hilos. 

En las redes de petri existen dos sets de nodos, los llamados Places que normalmente se representan como círculos u ovalos, y las Transitions, dibujadas como rectángulos delgados. Debido a que es bipartito, hay aristas desde los Places a Transitions, y vice-versa, pero nunca a uno de igual tipo.

Sistema a modelar: SMART TV

Un sistema algo común para cualquiera. Podemos decir que es concurrente por el simple hecho de que reproduce sonido y audio a la vez, y las televisiones más nuevas hasta tienen internet inalámbrico por lo cual son tres actividades simultaneas(ignorando procesos internos).

El sistema entonces se modelara basandonos en el hecho de que se esté viendo una película por internet en una Smart TV.



Los places en este caso pueden ser: 

P = {Inicio, Internet, Video, Audio, Película}

Entonces el proceso puede ser descrito como sigue:
  • Primero se inicializa todo, ignorando el proceso de encendido y selección de película que son simples transiciones.
  • Para que se pueda reproducir la película primero se descarga parte por parte, y se hace un streaming.
  • Mientras se hace lo anterior se procesa video y audio de dicho streaming para que la televisión pueda reproducirlo.
  • Hecho lo anterior se reproduce la película.
Ésto se puede representar mediante el siguiente diagrama:


Donde:
  • P0: Inicializar
  • P1: Video
  • P2: Audio
  • P3: Internet
  • P5: Datos Descargados
  • P4: Película


Python-Snakes

Utilizando el módulo Python-Snakes para crear la red de petri, nos puede quedar de la siguiente manera:



Código:







Referencias:

1 comentario: