Skip to content

7 Comunicación

Comunicación de Tareas

Las distintas tareas de un programa concurrente se pueden comunicar de dos maneras distintas:

  • A través de memoria compartida, habitualmente cuando las tareas se están ejecutando en el mismo ordenador. Requieren de mecanismos de sincronización de acceso a datos.
  • A través de paso de mensajes, normalmente cuando las tareas se están ejecutando en ordenadores distintos, aunque no necesariamente.

El intercambio de mensajes, se puede realizar de dos formas:

  • Utilizar un buffer de memoria: Se crea un canal de comunicación entre dos procesos utilizando la memoria principal del sistema.
  • Utilizar un socket: Se utilizan para intercambiar información entre procesos en distintas máquinas a través de la red.

Tipos de Comunicación

En cualquier comunicación, vamos a tener los siguientes elementos:

  • Mensaje: Información que es el objeto de la comunicación.
  • Emisor: Entidad que emite, genera o es origen del mensaje.
  • Receptor: Entidad que recibe, recoge o es destinataria del mensaje.
  • Canal: Medio por el que viaja o es enviado y recibido el mensaje.

Podemos clasificar el canal de comunicación según su capacidad, y los sentidos en los que puede viajar la información:

  • Simplex (símplex): La comunicación se produce en un sólo sentido. El emisor es origen del mensaje y el receptor escucha el mensaje al final del canal. Por ejemplo, la reproducción de una película en una sala de cine.
  • Full duplex (dúplex): Pueden viajar mensajes en ambos sentidos simultáneamente entre emisor y receptor. El emisor es también receptor y el receptor es también emisor. Por ejemplo, las comunicaciones telefónicas.
  • Half duplex (semidúplex): El mensaje puede viajar en ambos sentidos, pero no al mismo tiempo. Por ejemplo, la comunicación con walkie-talkies.

Comunicación duplex

Figura 4 - Comunicación duplex

Tipos de canales de comunicación

Otra clasificación dependiendo de la sincronía que mantengan el emisor y el receptor durante la comunicación, será:

  • Síncrona: El emisor queda bloqueado hasta que el receptor recibe el mensaje. Ambos se sincronizan en el momento de la recepción del mensaje.
  • Asíncrona: El emisor continúa con su ejecución inmediatamente después de emitir el mensaje, sin quedar bloqueado.
  • Invocación remota: El proceso emisor queda suspendido hasta que recibe la confirmación de que el receptor ha recibido correctamente el mensaje. Después emisor y receptor ejecutarán síncronamente un segmento de código común.

Dependiendo del comportamiento que tengan los interlocutores que intervienen en la comunicación, tendremos comunicación:

  • Simétrica: Todos los procesos pueden enviar y recibir información.
  • Asimétrica: Sólo un proceso actúa de emisor, el resto sólo escucharán el o los mensajes.