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