Programación concurrente

De FIWIKI
Saltar a: navegación, buscar

Esta asignatura ha sido impartida con el lenguaje ADA hasta el curso 2009/2010, a partir de entonces se utilizó Java. El material aquí disponible, por tanto, podrá estar orientado a cualquiera de los dos lenguajes.

Metodología de la programación concurrente

   - Proceso **evolutivo**
   - Detección inicial de **procesos**
     - ¿Puedo resolver el problema con un solo proceso? Esto viene determinado por la existencia de:
       - Eventos simultáneos
       - Operaciones bloqueantes o de larga duración
       - Operaciones no reentrantes
     - Empezar con el mínimo número posible de procesos
     - Aumentar el número de procesos de acuerdo a:
       - Elegancia (ej. cada responsabilidad a un proceso, belleza).
       - Eficiencia (paralelismo, cuidado que la complejidad es insalvable).
   - Detección inicial de **recursos**
     - Unos procesos tienen datos que otros procesos necesitan conocer.
     - Cada dato mencionado es potencialmente un recurso compartido.
     - Los recursos compartidos surgen como agrupación de los datos:
       - Más agrupación ==> más control, menos errores, menos simultaneidad
       - Más disgregación ==> más simultaneidad, más entrelazados, más dificultad en el análisis
   - Prototipo:
     - Realizar una primera agrupación de datos: todos los datos compartidos por dos procesos a un mismo recurso.
     - Escribir las responsabilidades de cada proceso.
     - Derivar las operaciones de los recursos a partir de las responsabilidades de los procesos.
     - Escribir el seudocódigo de cada proceso.
     - A tener en cuenta:
       - Evitar operaciones de (sólo) consulta.
       - Evitar acceder, salir y volver a acceder a lo recursos.
       - Anticipar la realidad dentro de los recursos.
       - Analizar con cuidado el efecto de llamadas a operaciones externas desde operaciones de los recursos.
   - Refinamiento: 
     - Analizar el comportamineto del programa en el estado actual:
       - ¿Es excesiva la agrupación de datos?
       - ¿Faltan datos a compartir?
       - ¿Tiene un proceso demasiada responsabilidades?
       - ¿Hay responsabilidades compartidas entre procesos que puedan generar problemas?
     - Revisar responsabilidades y pseudocódigo de los procesos.
     - Refinar las operaciones de los recursos compartidos.


Material

Super pack Material de Moodle: Archivo:Concurrente Moodle.tar.gz

Resumen del examen de Septiembre de 2009: Archivo:Programacion Concurrente - Resumen Examen Septiembre 09.pdf

Enunciado del examen de febrero de 2009: Archivo:Concurrente Examen 2009feb.pdf

Enunciado del examen de junio de 2009: Archivo:Concurrente Examen 2009jun.pdf

Enunciado del examen de septiembre de 2009: Archivo:Concurrente Examen 2009sep.pdf

Algunas respuestas de compañeros (no fiable): Archivo:Concurrente Algunas Respuestas.doc

Apuntes sobre Rendezvous: Archivo:Concurrente Rendezvous.pdf

Enunciado de la práctica de 2010: Archivo:Concurrente Enunciado2010.pdf

Ejemplos de código (ADA): Archivo:Concurrente Ejemplos.zip


Referencias

Web de la asignatura