Está en la página 1de 4

EVALUACIÓN: Capítulo 6

1. ¿Qué diferencia existe entre los modelos de comunicación síncrona, asíncrona y por
invocación remota?

Comunicación asíncrona: El emisor del mensaje continúa su labor nada más realizar el
envío, sin reparar en si dicho mensaje ha sido recibido ya o no (alguien que envía un
SMS a otra persona)

Comunicación síncrona: El proceso emisor sólo continúa su actividad cuando tiene


confirmación de que el mensaje emitido ha sido recibido (una llamada de teléfono).

Comunicación por invocación remota: El emisor del mensaje continúa sólo cuando
recibe una respuesta a su petición por parte del receptor (hablar en la llamada como
contestación y no sólo descolgar)

2. ¿Cuáles son las dos características fundamentales de los métodos de nombrado de


los socios de comunicación que intervienen en un esquema de intercambio de
mensajes? Describa su significado.

Directo o indirecto: En los esquemas de nombrado directo, el emisor llama directamente


al receptor. En los indirectos, el emisor llama a un intermediario que es el que finalmente
se comunica con el receptor.

Simétrico o asimétrico: Un método de nombrado es simétrico cuando el emisor y el


receptor se pueden nombrar entre sí (directa o indirectamente) y es asimétrico cuando el
receptor no nombra un emisor específico, pero acepta mensajes de cualquier fuente.

3. ¿Cuáles son los tres modos de funcionamiento según los distintos tipos de
nombrado posibles?

1) un hilo o proceso directamente (cuando los socios son procesos que corren en la
misma máquina)
2) una entrada o puerto de un módulo o proceso
3) algún tipo de toma o abstracción de canal.
4. ¿En qué consiste el direccionado de mensajes a procesos? ¿Y el direccionado
de mensajes a puertos? ¿Y el direccionado a canales?

Direccionado de mensajes a procesos: utiliza un id que está unívocamente asignado a


cada proceso. De esta forma, cada orden de enviar o recibir incorpora dicho parámetro
para identificar el socio de comunicación adecuado. Este es un método directo y puede
ser tanto simétrico como asimétrico (PVM,MPI)

Direccionado de mensajes a puertos: Los emisores deben incluir el nombre del puerto
de entrada del receptor, que habitualmente es un módulo o proceso con uno o varios
hilos dentro. Una llamada entrante de la forma t.foo (args) envía un mensaje a la entrada
con el nombre foo en la tarea (hilo) t. Se emplea típicamente en Ada. Así, una tarea en
Ada puede recibir un mensaje que ha sido enviado a una de sus entradas mediante la
ejecución de una declaración de aceptación. Cada entrada pertenece entonces
exactamente a una tarea y todos los mensajes enviados a la misma entrada deben ser
recibidos por esa única tarea. Este es un método de tipo directo y asimétrico (el
receptor acepta mensajes de cualquier emisor, siempre y cuando vengan a través del
puerto especificado).

Direccionado de mensajes a canales: El proceso consiste en, primero, que emisor y


receptor declaren un canal (que puede recibir el nombre de conexión o buzón) con un
nombre dado y, luego, utilizar dicho nombre para realizar el intercambio de los mensajes.
Aparece en Occam Este método es de tipo indirecto (la comunicación se realiza a través
del canal, conexión o buzón) y asimétrico (el receptor acepta mensajes de cualquier
emisor, siempre y cuando vengan a través del canal declarado)

5. Mencione dos librerías en Java que permitan implementar una arquitectura de paso
de mensajes y diga la principal utilidad o aplicación de cada una de ellas en este
contexto.

La librería java.nio, a través de la clase buffer y de los selectores permite realizar


operaciones de paso de mensajes en la línea de la opción 3 (Direccionado de mensajes
a canales). En un escenario de sistemas distribuidos puede emplearse la librería java.net
(direccionado de mensajes a puertos y de mensajes a procesos)
6. ¿Qué puede decir acerca de la estructura de los mensajes?

Lo ideal en cuanto al tipo de mensajes que puede enviarse sería que no hubiera
restricciones. Aunque actualmente muchos lenguajes modernos no presentan
restricciones de tipo para el intercambio de mensajes, algunos sí que restringen el
contenido a objetos fijos no estructurados de tipo definido por el sistema. Además, los
sistemas operativos mantienen la restricción de que los datos sean convertidos a bytes
antes de realizar la comunicación.

7. ¿Qué es y cómo funciona la espera selectiva?

Una espera selectiva es aquella estructura en la que las operaciones que se están
guardando son operadores de mensaje (normalmente de recibir) y no, por
ejemplo,meras asignaciones. En esta técnica un proceso repetidamente verifica una
condición, tal como esperar una entrada de teclado o si el ingreso a una sección crítica
está habilitado. Puede ser una estrategia válida en algunas circunstancias especiales,
spero en general debe ser evitada, ya que consume tiempo de CPU sin realizar ninguna
operación.

8. Describa una opción existente en Java que permita lograr una implementación óptima
en el uso de la CPU en situaciones de intercambio de mensajes. ¿Puede mencionar
alguna limitación de esta solución?

Java ofrece las estructuras conocidas como bloques guardados. Estas estructuras
consisten en utilizar la palabra clave synchronized junto con los métodos wait() (que
estará siempre dentro de un bucle con una guarda), notify() y/o notifyAll() Recordemos
que, una vez ejecutado el método wait(), este hilo quedaría suspendido hasta que otro
hilo del mismo objeto llamase a notify() o a notifyAll(), lo cual, habitualmente, se debería
producir cuando el valor de la variable condición se ha fijado a verdadero.

Esta solución es eficiente en una situación de paso de mensajes, tal y como se hace con
la espera selectiva, haciendo que los hilos estén sincronizados y suspendiendo o
reactivando la ejecución de los mismos según sea necesario. Así se evita desperdiciar
tiempos notables de ejecución en comprobaciones o esperas inútiles. Nótese, no
obstante, que esta solución es sólo aplicable en casos donde emisor y receptor tienen,
ambos, acceso a una memoria compartida.
9. Describa la comunicación basada en UDP para el paso de mensajes. ¿Qué
ventajas y desventajas tiene?

Cada mensaje se envía a su destino de forma independiente y poco fiable. El software


de red intentará entregar el mensaje, pero no garantiza que dicha entrega se produzca.
Además, dos mensajes enviados al mismo destino pueden llegar (en caso de que lo
hagan) en cualquier orden, sin respetar el hecho de que uno se enviase antes que el
otro. Los mensajes UDP usan nombres basados en puertos: cada mensaje es enviado a
una dirección IP específica y a un puerto concreto.

10. Describa la comunicación basada en TCP para el paso de mensajes. ¿Qué


ventajas y desventajas tiene?

TCP también utiliza el nombrado basado en puertos, pero sólo para establecer las
conexiones. Una vez establecida dicha conexión, ésta permanece invariable para todas
las comunicaciones posteriores, siendo esta la situación del direccionado de mensajes a
canales. Las conexiones entregan mensajes de manera confiable y en orden.

También podría gustarte