====== 75.59. Técnicas de Programación Concurrente I ====== Este es sólo un esqueleto sobre esta materia; te invitamos a que colabores completando la información relativa a la misma; al editar tendrás todas las instrucciones para hacerlo. **Coordinador:** Adriana Echeverria ++++Carreras:| ^ Carrera ^ Créditos ^ Correlativas ^ Condición ^ ++++ ===== Programa ===== ++++Objetivos| Familiarizar al estudiante con las técnicas de Programación Concurrente, los conceptos y los algoritmos correspondientes al manejo de procesos cooperantes, con ambiente propio (threads) o sin él. Introducir los principios de diseños de algoritmos cooperativos usando un lenguaje de programación y los recursos de sincronización como mensajes, semáforos, monitores, regiones críticas condicionales y barreras. Introducir al estudio de las Redes de Petri. Introducción a los problemas de concurrencia de transacciones distribuidas. ++++ ++++Programa sintético| Principios de la programación concurrente. Sección crítica. Exclusión Mutua, Sincronización y comunicación. Semáforos, Monitores. Problemas clasicos y su solución con diversos recursos de sincronización y comunicacón. Paso de mensajes. Redes de Petri. Transacciones distribuidas. ++++ ++++Programa analítico| - Unidad 1: Conceptos básicos de la programación concurrente. - Introducción - Programación secuencial vs programación concurrente. - Necesidad de la programación concurrente. - Problemas en la programación concurrente. - Arquitecturas de hardware que soportan la programación concurrente. - Unidad 2: Representación y ciclo de vida de los procesos. - Concepto de proceso. - Estructura de un proceso. - Ciclo de vida de un proceso. - Planificación de procesos. - Unidad 3: Interacción de procesos. - Entidades pasivas y activas. - Exclusión mutua y otros métodos. - Sincronización con variables compartidas. - Primitivas de sincronización para variables compartidas. - Modelos basados en intercambio de mensajes. - Abrazo mortal. - “Fairness”. - El problema de los filósofos comensales. - Unidad 4: Semáforos - Introducción - Invariantes - Problema del productor-consumidor - Buffers. - Unidad 5: Monitores - Introducción - El problema productor-consumidor - Semáforos y monitores - Problema de lectores – escritores - Unidad 6 : Sistemas basados en paso de mensajes - Introducción a los mecanismos de paso de mensajes en los lenguajes de programación concurrentes. - El modelo de programación distribuida CSP. Sintaxis y semántica de las órdenes de la notación CSP. - Mecanismos de alto nivel en sistemas y lenguajes de programación. - Paradigma cliente-servidor. - Invocación remota. Citas. - Idempotencia. - Unidad 7: Modelado de sistemas concurrentes. - Redes de Petri Lugar/Transición (LT) - Clasificación de redes de Petri - Métodos de análisis de propiedades de redes LT. Árbol de alcance. Invariantes de marcado y disparo. - Métodos de análisis basados en el Álgebra Lineal de Matrices. - Aplicaciones. - Unidad 8: Introducción a la concurrencia en ambientes distribuidos. - Introducción. - Exclusión mutua distribuida. - Algoritmos de exclusión y elección. - Transacciones - Transacciones anidadas. - Bloqueos. - Métodos de control de concurrencia - Transacciones distribuidas - Transacciones planas y anidadas. - Control de la concurrencia. - Interbloqueos distribuidos. - Recuperación de transacciones. ++++ ===== Cursos ===== ===== Material ===== ++++Parciales| [[.59:parcial_1_20090519_1|Primer parcial, primer cuatrimestre, 19/05/2009 (jpg)]] ++++ ++++Finales| * {{:materias:75:final_7559_12dic14.pdf|Final, segundo cuatrimestre, 12/12/2014}} * {{:materias:75:59:final20140710.pdf|Primera Fecha, 10/07/2014}} * [[.59:final_1_20090930_1|Cuarto final, primer cuatrimestre, 30/09/2009]] * [[.59:final_1_20090826_1|Tercer final, primer cuatrimestre, 26/08/2009]] ++++