next up previous contents
Next: Bloqueo Up: Concurrencia y Distribución Previous: Problema del productor y

Comunicación y sincronización


Programas concurrentes necesitan algún tipo de comunicación entre los procesos. Hay dos razones principales:

  1. los procesos compiten para obtener acceso a recursos compartidos,
  2. los procesos quieren intercambiar datos.

En ambos casos hace falta un método de sincronización entre los procesos que quieren comunicarse entre ellos. Al nivel del programador existen tres variantes como realizar las interacciones entre procesos:

  1. usar memoria compartida,
  2. mandar mensajes,
  3. lanzar procedimientos remotos.

Con la sincronización condicional se protege un objeto (p.ej. un trozo de memoria) para que ningún otro proceso puede acceder el objeto hasta que este se encuentre en un estado permitido.

Los objetivos requeridos para la sincronización de procesos son normalmente:

La comunicación no tiene que ser síncrona en todos los casos. Existe también la forma asíncrona donde un proceso deja su mensaje en una estructura de datos compartida por los procesos. El proceso que ha mandado los datos puede seguir con otras tareas. El proceso que debe leer los datos lo hace en su momento.

Una comunicación entre procesos puede ser no fiable en todos los sistemas, existen varias posibilidades de fallos:

  1. se pierden mensajes
  2. se cambia el orden de los mensajes
  3. se modifican mensajes
  4. se añaden mensajes que nunca fueron mandados

Existen técnicas para superar los problemas:

  1. protocolo de recepción (¿Cuándo se sabe que haya llegado el último mensaje?)
  2. enumeración de los mensajes
  3. uso de código de correción (CRC)
  4. protocolo de autentificación

next up previous contents
Next: Bloqueo Up: Concurrencia y Distribución Previous: Problema del productor y
© 2003, Dr. Arno Formella, Universidad de Vigo, Departamento de Informática