5.39.2.3 Comunicación y coordinación (24 horas) [Habilidades 1,6]

Referencias Bibliográficas: [Pacheco, 2011,Schmidt, 1995a] Temas
  1. Memoria Compartida.
  2. La consistencia, y su papel en los lenguaje de programación garantias para los programas de carrera libre.
  3. Pasos de Mensaje:
    1. Mensajes Punto a Punto versus multicast (o basados en eventos)
    2. Estilos para enviar y recibir mensajes Blocking vs non-blocking
    3. Buffering de mensajes
  4. Atomicidad:
    1. Especificar y probar atomicidad y requerimientos de seguridad
    2. Granularidad de accesos atómicos y actualizaciones, y uso de estructuras como secciones críticas o transacciones para describirlas
    3. Exclusión mutua usando bloques, semáforos, monitores o estructuras relacionadas
      1. Potencial para fallas y bloqueos (deadlock) (causas, condiciones, prevención)
    4. Composición
      1. Componiendo acciones atómicas granulares más grandes usando sincronización
      2. Transacciones, incluyendo enfoques optimistas y conservadores
  5. Consensos:
    1. (Ciclicos) barerras, contadores y estructuras relacionadas
  6. Acciones condicionales:
    1. Espera condicional (p.e., empleando variables de condición)
  7. Caminos críticos, el trabajo y la duración y la relación con la ley de Amdahl.
  8. Aceleración y escalabilidad.
  9. Productor-consumidor y algoritmos paralelos segmentados.
  10. Ejemplos de algoritmos paralelos no-escalables.

Objetivos de Aprendizaje

  1. Usar exclusión mútua para evitar una condición de carrera [Usar]
  2. 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]
  3. Dar un ejemplo de un escenario en el que el bloqueo de mensajes enviados pueden dar deadlock [Usar]
  4. Explicar cuándo y por qué mensajes de multidifusión (multicast) o basado en eventos puede ser preferible a otras alternativas [Familiarizarse]
  5. Escribir un programa que termine correctamente cuando todo el conjunto de procesos concurrentes hayan sido completados [Usar]
  6. 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]
  7. Usar semaforos o variables de condición para bloquear hebras hasta una necesaria precondición de mantenga [Usar]
  8. Definir: camino crítico, trabajo y span [Familiarizarse]
  9. Calcular el trabajo y el span y determinar el camino crítico con respecto a un diagrama de ejecución paralela. [Usar]
  10. Proporcionar un ejemplo de un problema que se corresponda con el paradigma productor-consumidor [Usar]
  11. Dar ejemplos de problemas donde el uso de pipelining sería un medio eficaz para la paralelización [Usar]
  12. Implementar un algoritmo de matriz paralela [Usar]
  13. 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