Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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 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)
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 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).
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.
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.
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?
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.