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.
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.