Volver al temario
Tema 04 · 70 páginas

Comunicación y sincronización

Tema completo Modo estudio
TEXTO ORIGINAL · Páginas 2628 Ver PDF

3.1.1. Características generales

Texto íntegro de la conversión. Las figuras y la disposición de las notas se pueden consultar en el PDF.

3.1.1. Características generales

Un sistema que soporta mensajes generalmente ofrece dos tipos de operaciones, que son enviar_mensaje (send) y recibir_mensaje (receive). La implementación específica del paso de mensajes en un sistema afecta directamente a los parámetros que se han de pasar a estas operaciones. Así pues, pasamos a describir con más detalle algunas cuestiones que se deben tener en cuenta a la hora de definir un mecanismo de paso de mensajes:

  • Los mensajes directos y los mensajes indirectos.
  • La comunicación síncrona y asíncrona.
  • La longitud de los mensajes.

Los mensajes directos y los mensajes indirectos

Si el tipo de mensaje es directo, el proceso emisor debe indicar cuál es el proceso receptor y, al revés, el proceso receptor debe indicar cuál es el proceso de quien quiere recibir el mensaje.

Por ejemplo, si tenemos dos procesos A y B y A quiere enviar un mensaje a B, se podría ejecutar en los dos procesos el código siguiente (figura 24):

Proceso A ... send(B, mensaje)

Proceso B ... receive(A, mensaje)

Figura 24. Paso de mensajes directo

donde A y B han de ser los identificadores de los procesos dentro del sistema y la variable mensaje contiene la información que se están intercambiando. Este tipo de comunicación se denomina comunicación simétrica, ya que cada emisor debe conocer todos los posibles receptores, y al revés.

En el caso de que el receptor no conozca a priori quién es el emisor que envía el mensaje, se habla de comunicación asimétrica.

Página 27

Cuando el tipo de mensaje es indirecto, el proceso emisor no debe indicar cuál es el proceso receptor y el proceso receptor no debe indicar cuál es el proceso emisor. Los mensajes se envían y se reciben mediante ciertas estructuras que hacen de intermediarias. Estas estructuras se denominan buzones (mailboxes) a causa de su funcionamiento.

Por ejemplo, si el proceso A quiere enviar un mensaje al proceso B mediante un buzón, los procesos podrían ejecutar las instrucciones siguientes (figura 25):

Proceso A ... send(buzón1, mensaje)

Proceso B

... receive(buzón1, mensaje)

Figura 25. Paso de mensajes indirecto

El proceso A deja el mensaje en el buzón designado, buzón1, mediante la operación send(buzón1, mensaje) y el proceso B cuando lo quiere leer lo saca del buzón mediante la operación receive(buzón1, mensaje). Cuando se dispone de un mecanismo de este tipo, también son necesarias otras operaciones para el mantenimiento del buzón, como las de crear y destruir un buzón.

Consideraremos que intentar leer (receive) de un buzón vacío bloquea la ejecución del proceso e intentar escribir (send) en un buzón lleno también lo hace. La comunicación mediante buzones permite la comunicación de uno a uno, de uno a muchos, de muchos a uno y de muchos a muchos (seguramente con ciertas restricciones).

La comunicación síncrona y asíncrona

La comunicación síncrona se basa en el intercambio síncrono de mensajes. Este intercambio implica que el emisor y el receptor deben acabar la transferencia de información en el mismo momento, se deben sincronizar11.

En sistemas síncronos, la operación send es bloqueadora; por lo tanto, si un emisor quiere enviar un mensaje y el receptor todavía no ha efectuado la operación complementaria, receive, el emisor queda bloqueado. Por lo tanto, sólo puede haber un único mensaje pendiente para cada pareja de emisor-receptor.

Notas y pies de figura de la fuente

(11)La telefonía clásica sería un ejemplo convencional de este tipo de comunicación.

Página 28

Las ventajas de la comunicación síncrona son la fácil implementación y un bajo coste de recursos. Además, este modo de comunicación permite establecer un punto de sincronismo entre el emisor y el receptor: el emisor puede estar seguro de que el mensaje ha sido recibido.

La comunicación asíncrona no bloquea el proceso y el sistema operativo se encarga de guardar el mensaje temporalmente en la memoria

hasta que se lleva a cabo la operación receive complementaria. Con esta manera de proceder, el emisor, una vez ha enviado el mensaje, puede continuar su ejecución independientemente de lo que hagan los receptores12.

Con la comunicación asíncrona, aumenta el grado de concurrencia del sistema. Como inconveniente, cabe mencionar la gestión de los vectores de memoria intermedia para almacenar los mensajes pendientes, que es el aspecto más complicado de este método de comunicación.

La longitud de los mensajes

Por último, hemos de considerar la longitud de los mensajes, que puede ser fija o variable. Debemos tener en cuenta, a la hora de decidir la longitud de los mensajes, que hay que llegar a un compromiso entre la flexibilidad de los mensajes de longitud variable y la sencillez y la facilidad de gestión de los mensajes de longitud fija.

Notas y pies de figura de la fuente

(12)El correo postal sería un ejemplo convencional de este tipo de comunicación.

Ver fragmento extraído sin normalizar
3.1.1.  Características generales


Un sistema que soporta mensajes generalmente ofrece dos tipos de operacio-
nes, que son enviar_mensaje (send) y recibir_mensaje (receive). La implemen-
tación específica del paso de mensajes en un sistema afecta directamente a
los parámetros que se han de pasar a estas operaciones. Así pues, pasamos a
describir con más detalle algunas cuestiones que se deben tener en cuenta a la
hora de definir un mecanismo de paso de mensajes:


•    Los mensajes directos y los mensajes indirectos.
•    La comunicación síncrona y asíncrona.
•    La longitud de los mensajes.

Los mensajes directos y los mensajes indirectos



    Si el tipo de mensaje es directo, el proceso emisor debe indicar cuál es
    el proceso receptor y, al revés, el proceso receptor debe indicar cuál es
    el proceso de quien quiere recibir el mensaje.



Por ejemplo, si tenemos dos procesos A y B y A quiere enviar un mensaje a B,
se podría ejecutar en los dos procesos el código siguiente (figura 24):


    Proceso A
    ... send(B, mensaje)


    Proceso B
    ... receive(A, mensaje)


Figura 24. Paso de mensajes directo


donde A y B han de ser los identificadores de los procesos dentro del sistema y
la variable mensaje contiene la información que se están intercambiando. Este
tipo de comunicación se denomina comunicación￿simétrica, ya que cada
emisor debe conocer todos los posibles receptores, y al revés.


En el caso de que el receptor no conozca a priori quién es el emisor que envía
el mensaje, se habla de comunicación￿asimétrica.

## Página 27

<!-- source-page: 27 -->

GNUFDL • PID_00214803                                                                                  27                                                                                         Comunicación y sincronización


    Cuando el tipo de mensaje es indirecto, el proceso emisor no debe in-
    dicar cuál es el proceso receptor y el proceso receptor no debe indicar
    cuál es el proceso emisor. Los mensajes se envían y se reciben mediante
    ciertas estructuras que hacen de intermediarias. Estas estructuras se de-
    nominan buzones￿(mailboxes) a causa de su funcionamiento.



Por ejemplo, si el proceso A quiere enviar un mensaje al proceso B mediante un
buzón, los procesos podrían ejecutar las instrucciones siguientes (figura 25):


    Proceso A
    ... send(buzón1, mensaje)


    Proceso B

    ... receive(buzón1, mensaje)


Figura 25. Paso de mensajes indirecto

El proceso A deja el mensaje en el buzón designado, buzón1, mediante la ope-
ración send(buzón1, mensaje) y el proceso B cuando lo quiere leer lo saca
del buzón mediante la operación receive(buzón1, mensaje). Cuando se
dispone de un mecanismo de este tipo, también son necesarias otras operacio-
nes para el mantenimiento del buzón, como las de crear y destruir un buzón.


Consideraremos que intentar leer (receive) de un buzón vacío bloquea la ejecu-
ción del proceso e intentar escribir (send) en un buzón lleno también lo hace.
La comunicación mediante buzones permite la comunicación de uno a uno,
de uno a muchos, de muchos a uno y de muchos a muchos (seguramente con
ciertas restricciones).


La comunicación síncrona y asíncrona



                                                                                                        (11)La telefonía clásica sería un
    La comunicación￿síncrona se basa en el intercambio síncrono de men-                                 ejemplo convencional de este tipo
    sajes. Este intercambio implica que el emisor y el receptor deben aca-                              de comunicación.

    bar la transferencia de información en el mismo momento, se deben
    sincronizar11.



En sistemas síncronos, la operación send es bloqueadora; por lo tanto, si un
emisor quiere enviar un mensaje y el receptor todavía no ha efectuado la ope-
ración complementaria, receive, el emisor queda bloqueado. Por lo tanto,
sólo puede haber un único mensaje pendiente para cada pareja de emisor-re-
ceptor.

## Página 28

<!-- source-page: 28 -->

GNUFDL • PID_00214803                                                                                  28                                                                                         Comunicación y sincronización

Las ventajas de la comunicación síncrona son la fácil implementación y un
bajo coste de recursos. Además, este modo de comunicación permite establecer
un punto de sincronismo entre el emisor y el receptor: el emisor puede estar
seguro de que el mensaje ha sido recibido.



                                                                                                       (12)El correo postal sería un ejem-
    La comunicación￿asíncrona no bloquea el proceso y el sistema opera-                                plo convencional de este tipo de
    tivo se encarga de guardar el mensaje temporalmente en la memoria                                  comunicación.

    hasta que se lleva a cabo la operación receive complementaria. Con esta
    manera de proceder, el emisor, una vez ha enviado el mensaje, puede
    continuar su ejecución independientemente de lo que hagan los recep-
    tores12.



Con la comunicación asíncrona, aumenta el grado de concurrencia del siste-
ma. Como inconveniente, cabe mencionar la gestión de los vectores de me-
moria intermedia para almacenar los mensajes pendientes, que es el aspecto
más complicado de este método de comunicación.


La longitud de los mensajes

Por último, hemos de considerar la longitud de los mensajes, que puede ser
fija o variable. Debemos tener en cuenta, a la hora de decidir la longitud de
los mensajes, que hay que llegar a un compromiso entre la flexibilidad de los
mensajes de longitud variable y la sencillez y la facilidad de gestión de los
mensajes de longitud fija.


Descargar Markdown originalEstudiar este apartado