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
|
|||