Referencias Bibliográficas: [Pacheco, 2011,Schmidt, 1995a]
Temas
- Memoria Compartida.
- La consistencia, y su papel en los lenguaje de programación garantias para los programas de carrera libre.
- 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
- Consensos:
- (Ciclicos) barerras, contadores y estructuras relacionadas
- Acciones condicionales:
- Espera condicional (p.e., empleando variables de condición)
- Caminos críticos, el trabajo y la duración y la relación con la ley de Amdahl.
- Aceleración y escalabilidad.
- Productor-consumidor y algoritmos paralelos segmentados.
- Ejemplos de algoritmos paralelos no-escalables.
Objetivos de Aprendizaje
- 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]
- 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]
- Dar un ejemplo de un escenario en el que un intento optimista de actualización puede nunca completarse [Familiarizarse]
- Usar semaforos o variables de condición para bloquear hebras hasta una necesaria precondición de mantenga [Usar]
- Definir: camino crítico, trabajo y span [Familiarizarse]
- Calcular el trabajo y el span y determinar el camino crítico con respecto a un diagrama de ejecución paralela. [Usar]
- Proporcionar un ejemplo de un problema que se corresponda con el paradigma productor-consumidor [Usar]
- Dar ejemplos de problemas donde el uso de pipelining sería un medio eficaz para la paralelización [Usar]
- Implementar un algoritmo de matriz paralela [Usar]
- Identificar los problemas que surgen en los algoritmos del tipo productor-consumidor y los mecanismos que pueden utilizarse para superar dichos problemas [Usar]
Generado por Ernesto Cuadros-Vargas , Sociedad Peruana de Computación-Peru, basado en el modelo de la Computing Curricula de IEEE-CS/ACM