Programación Concurrente

Programación Concurrente

 

Objetivo

1. Estudio de los mecanismos para compartir y controlar recursos.

2. Estudio de los mecanismos basados en paso de mensajes.

3. Estudio de lenguajes académicos de programación concurrente: Pascal – S, SR.

4. los conceptos fundamentales en el diseño e implementación de aplicaciones multitarea.

5. Uso de bibliotecas para el desarrollo de aplicaciones multi-hilo: Pthreads, Java-Threads

 

Contenido

1. Conceptos básicos

a) Diferencia entre programación secuencial y programación concurrente.

b) Conceptos de: Proceso, programa multitarea, multiproceso, granularidad, etc.

c) Ejecución atómica, principio de ejecución concurrente.

d) Sincronización, no interferencia.

e) Propiedades: vivacidad, seguridad, exactitud.

2. Exclusión mutua

a) Introducción al problema de la exclusión mutua.

b) Propuestas clásicas de solución: una bandera, dos banderas, cesión voluntaria, asignación de turnos.

c) Especificación de ejecución concurrente: cobegin/coend, fork/join, corutinas.

d) Concurrencia y sincronización: ejecución intercalada.

e) Operaciones atómicas: principio de no interferencia

f ) Invariantes globales

3. Mecanismos de control de concurrencia basados en variables compartidas

a) Semáforos.

b) Barreras.

c) Lista de esperas acotadas.

d) Algoritmos clásicos de la programación concurrente: Productores y consumidores 5 filósofos, barbero dormido, etc.

4. Pascal – S

a) Importancia histórica de Pascal – S en la evolución de la programación concurrente.

b) Primer trabajo práctico.

5. Paso de mensajes

a) Rendez-vous

b) Llamados a procesos remotos

c) Llamado a métodos remotos

d) Comunicación síncrona y asíncrona

6. Lenguaje de programación SR (Sincronizing Resources)

a) Presentación de SR, como lenguaje académico para el desarrollo de aplicaciones concurrentes

b) Segundo trabajo práctico

7. Programación multi-hilo

a) Introducción a la programación multi-hilo

b) Diferencia entre hilos y procesos

c) Gestión de recursos de maquina al programar con hilos

d) Bibliotecas para la programación multi-hilo

e) Tercer trabajo práctico

 

 

Bibliografía

  1. Ben-Ari, M., Principles of Concurrent and Distributed Programming, Prentice Hall, 1990.

  2. Lewis, B,. Berg, D., Pthread Primer – A guide to Multithreaded Programming, SunSoft Press 1996.

  3. Hoare, C., Communicating Sequential Process, June 2004

  4. Goetz, B., Peierls, T., Bloch, J., Bowbeer, J., Holmes, D., Lea, D., Java Concurrency in Practice, Addison Wesley Professional, 2006