Comunicación indirecta

Con la comunicación indirecta, los mensajes se envían y se reciben de buzones, o puertos. Un buzón puede verse, de manera abstracta, como un objeto en donde los procesos pueden colocar y remover mensajes. Cada buzón tiene una identificación única. En este esquema, un proceso se puede comunicar con otro utilizando varios buzones diferentes. Dos procesos sólo se pueden comunicar si tienen un buzón compartido. Las primitivas send y receive se definen de la siguiente manera:

Send (A, mensaje) –Enviar un mensaje al buzón A. Receive (A, mensaje) –Recibir un mensaje del buzón A.

En este esquema, un enlace de comunicación tiene las siguientes propiedades:

Se establece un enlace entre un par de procesos sólo si ambos miembros tienen un buzón compartido.
Un enlace puede estar asociado con más de dos procesos. Entre cada par de procesos de comunicación, puede haber varios enlaces diferentes, y cada enlace corresponde un buzón.

Un buzón puede ser propiedad ya sea de un proceso o del sistema operativo. Si el buzón es propiedad de un proceso (es decir, forma parte del espacio de direcciones del proceso), entonces distinguimos entre el propietario (quien sólo puede recibir mensajes a través de este buzón) y el usuario del buzón (quien sólo puede enviar mensajes al buzón).

Debido a que cada buzón tiene un propietario único, no puede haber confusión acerca de quien recibirá un mensaje enviado a este buzón. Cuando un proceso propietario de un buzón termina, el buzón desaparece. Cualquier proceso que subsecuentemente envíe un mensaje a este buzón debe ser notificado de que ya no existe.

Por otra parte, un buzón cuyo propietario es el sistema operativo tiene una existencia propia. Es independiente y no está obligado a un proceso en particular. El sistema operativo debe entonces proporcionar un mecanismo que permita a los procesos:

– Crear un nuevo buzón.
– Enviar y recibir mensajes a través del buzón. Borrar un buzón.

El proceso que crea un nuevo buzón es, por omisión, el propietario de dicho buzón. Inicialmente, el propietario es el único proceso que puede recibir mensajes a través de este buzón.

Sin embargo, el privilegio de propiedad y recepción puede transferirse a otros procesos mediante llamadas al sistema apropiadas. Por supuesto, esto puede dar como resultado varios receptores para cada buzón.

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