Comunicación directa

En este tipo de comunicación cada proceso que quiere comunicarse debe nombrar explícitamente al receptor o al emisor de la comunicación. En este esquema, las primitivas send y receive se definen como:

Send (P, mensaje): Enviar un mensaje al proceso P. Receive (Q, mensaje): Recibir un mensaje del proceso Q.

Un enlace de comunicación en este esquema tiene las siguientes propiedades:

Un enlace se establece automáticamente entre cada par de procesos que desean comunicarse. Los procesos sólo necesitan conocer la identidad de los demás para comunicarse.

Un enlace está asociado exactamente con dos procesos. Entre cada par de procesos, existe exactamente un enlace.

Este esquema exhibe una simetría en el direccionamiento; es decir, tanto el proceso emisor como el receptor tienen que nombrar al otro para comunicarse. Una variante de este esquema emplea la asimetría en el direccionamiento. Sólo el emisor nombra al receptor; no se requiere que éste nombre al emisor. En este esquema, las primitivas send y receive se definen como sigue:

Send (P, mensaje) –Enviar un mensaje al proceso P

Receive (ID, mensaje) –Recibir un mensaje de cualquier proceso; el valor de la variable id se fija en el nombre del proceso con el que ha tenido lugar la comunicación.

La desventaja en ambos esquemas (simétrico y asimétrico) es la modularidad limitada de las definiciones de procesos resultantes. Cambiar el nombre de un proceso puede requerir examinar todas las demás definiciones de procesos. Se deben encontrar todas las referencias al nombre anterior, de modo que puedan modificarse con el nuevo nombre. Esta situación no es deseable desde el punto de vista de una compilación separada.

Fuente: Apuntes de la materia Sistemas Operativos Multiusuario de la FCA – UNAM