2.13.3 PD/Comunicación y coordinación (3 horas Core-Tier1)
Temas:
Core Tier1
- Memoria Compartida.
- La consistencia, y su papel en los lenguaje de programación garantias para los programas de carrera libre.
Core Tier2
- Pasos de Mensaje:
- Mensajes Punto a Punto versus multicast (o basados en eventos)
- Estilos para enviar y recibir mensajes Blocking vs non-blocking
- Buffering de mensajes
- Atomicidad:
- Especificar y probar atomicidad y requerimientos de seguridad
- Granularidad de accesos atómicos y actualizaciones, y uso de estructuras como secciones críticas o transacciones para describirlas
- Exclusión mutua usando bloques, semáforos, monitores o estructuras relacionadas
- Potencial para fallas y bloqueos (deadlock) (causas, condiciones, prevención)
- Composición
- Componiendo acciones atómicas granulares más grandes usando sincronización
- Transacciones, incluyendo enfoques optimistas y conservadores
Electivo
- Consensos:
- (Ciclicos) barerras, contadores y estructuras relacionadas
- Acciones condicionales:
- Espera condicional (p.e., empleando variables de condición)
Objetivos de Aprendizaje (Learning Outcomes):
Core-Tier1:
- Usar exclusión mútua para evitar una condición de carrera [Usar]
- Dar un ejemplo de una ordenación de accesos entre actividades concurrentes (por ejemplo, un programa con condición de carrera) que no son secuencialmente consistentes [Familiarizarse]
Core-Tier2:
- Dar un ejemplo de un escenario en el que el bloqueo de mensajes enviados pueden dar deadlock [Usar]
- Explicar cuándo y por qué mensajes de multidifusión (multicast) o basado en eventos puede ser preferible a otras alternativas [Familiarizarse]
- Escribir un programa que termine correctamente cuando todo el conjunto de procesos concurrentes hayan sido completados [Usar]
- Usar una apropiada cola de sincronización para almacenar temporalmente datos pasados entre actividades [Usar]
- Explicar por qué verificaciones para precondiciones, y acciones basados en estas verificaciones, deben compartir la misma unidad de atomicidad para ser efectivo [Familiarizarse]
- Escribir un programa de prueba que pueda revelar un error de programación concurrente; por ejemplo, falta una actualización cuando dos actividades intentan incrementar una variable [Usar]
- Describir al menos una técnica de diseño para evitar [Familiarizarse]
- Describir las ventajas relativas del control de concurrencia optimista y conservadora bajo diferentes tipos de carrera entre actualizaciones [Familiarizarse]
- Dar un ejemplo de un escenario en el que un intento optimista de actualización puede nunca completarse [Familiarizarse]
Elective:
- Usar semaforos o variables de condición para bloquear hebras hasta una necesaria precondición de mantenga [Usar]
Generado por Ernesto Cuadros-Vargas , Sociedad Peruana de Computación-Peru, basado en el modelo de la Computing Curricula de IEEE-CS/ACM