Ejercicios de comunicación en los sistemas distribuidos

  1. Considere una función que recibe cuatro parámetros que representan la dirección de comienzo de dos buffers, así como sus tamaños respectivos, y que debe enviarlos por un socket. ¿Cuál de los siguientes servicios del S.O. puede optimizar la transmisión?
    1. writev
    2. mmap
    3. sendfile
    4. send
Explicación
La meta a lograr en un escenario como el planteado sería poder enviar los dos buffers con una única llamada y sin realizar ningún tipo de copia a buffers intermedios. Los servicios mmap y sendfile están orientados a optimizar el acceso a los ficheros pero en este caso no hay ninguno involucrado. En cuanto a la llamada send, si se usa para la transmisión planteada o bien habría que utilizarla dos veces o bien previamente habría que copiar ambos buffers en uno intermedio. El servicio writev permite con una sola invocación enviar ambos buffers sin realizar copias intermedias.
  1. Sea una función con 4 parámetros que representan la dirección de 2 buffers y sus tamaños respectivos, y que va recibir un mensaje por un socket tal que la primera parte es una cabecera que se almacenará en el primer buffer y la segunda es el cuerpo del mensaje que se guardará en el segundo. ¿Qué servicio del S.O. puede optimizar la operación de esa función?
    1. readv
    2. mmap
    3. sendfile
    4. recv
Explicación
La meta a lograr en un escenario como el planteado sería poder recibir los datos directamente sobre los dos buffers con una única llamada y sin realizar ningún tipo de copia desde buffers intermedios. Los servicios mmap y sendfile están orientados a optimizar el acceso a los ficheros pero en este caso no hay ninguno involucrado. En cuanto a la llamada recv, si se usa para la recepción planteada o bien habría que utilizarla dos veces o bien habría que usar un buffer intermedio y copiar los datos desde el mismo. El servicio readv permite con una sola invocación recibir los datos en ambos buffers sin realizar copias intermedias.
  1. Ordene de menor a mayor, en cuanto al número de copias de memoria requeridas, las siguientes técnicas que se podrían usar a la hora de enviar un fichero: (1) mmap + send (2) read + send; (3) sendfile.
    1. 3 1 2
    2. 3 2 1
    3. 2 3 1
    4. 1 3 2
Explicación
Con la opción de ir leyendo y enviando cada bloque del fichero (read + send), se requieren dos copias de memoria por cada bloque: del buffer del sistema de ficheros al del usuario y desde éste hasta el asociado al sistema de comunicaciones. Con mmap + send, sólo se produce la copia del buffer del sistema de ficheros al asociado al sistema de comunicaciones. Con sendfile no se requiere ninguna copia de memoria.
  1. ¿Qué es cierto con respecto a un sistema de serialización que proporciona un esquema de unmarshalling genérico: (i) consume menos ancho de banda; (ii) es más eficiente?
    1. Ninguna.
    2. (i)
    3. (ii)
    4. Ambas.
Explicación
Un esquema de unmarshalling genérico requiere que, junto con los datos que se pretenden transmitir o almacenar, se incluya información de cuál es el tipo de los mismos, lo que implica un mayor consumo de ancho de banda y un procesado menos eficiente frente a un esquema no genérico donde solo se envían los datos y el receptor conoce implícitamente cuál es el tipo de los mismos.
  1. ¿Cuántos de estos sistemas de serialización incluyen información sobre la identificación de cada campo: XDR, Protocol Buffers y Java Serialization?
    1. 2
    2. 1
    3. 3
    4. 0
Explicación
XDR solo transmite, o almacena, los datos que se pretender compartir, no incluyendo información identificativa de los campos que componen la información ni del tipo de los mismos. Protocol Buffers incluye información identificativa de los campos. Java Serialization incluye el nombre de los campos.
  1. ¿Cuántos de los siguientes esquemas de serialización representan como texto un número entero: XDR, JSON, Protocol Buffers y Java Serialization?
    1. 1
    2. 2
    3. 3
    4. 4
Explicación
Todos los esquemas planteados serializan la información en binario con la excepción de JSON, que usa un formato de texto.
  1. ¿En cuántos de los siguientes esquemas de serialización el tamaño del objeto serializado depende de la longitud que tengan los nombres de los campos del objeto original: XDR, JSON, Protocol Buffers y Java Serialization?
    1. 2
    2. 1
    3. 3
    4. 4
Explicación
Tanto JSON como el mecanismo de serialización estándar de Java incluyen el nombre de los campos en el objeto serializado. XDR no incluye esa información, mientras que Protocol Buffers incluye el identificador numérico del campo, pero no su nombre.
  1. ¿Cuál de las siguientes tecnologías de serialización genera mensajes más grandes: XDR (X), Java Serialization (J) o Protocol Buffers (P)?
    1. J
    2. P
    3. X
    4. No hay diferencias significativas entre ellas.
Explicación
El mecanismo de serialización de Java incurre en un gasto de memoria significativamente mayor que el de las otras dos técnicas.
  1. ¿Cuáles de estas tecnologías de serialización usan un mecanismo de deserialización genérico: XDR (X), JSON (S), Java Serialization (J) y Protocol Buffers (P)?
    1. SJ
    2. SP
    3. XJ
    4. XP
Explicación
Tanto con JSON como con la serialización de Java, en los mensajes se incluye información suficiente para realizar un proceso de deserialización genérico. En cambio, en XDR y Protocol Buffers se requiere conocer el tipo de datos de información contenida en un mensaje para poder realizar la deserialización.
  1. ¿Qué es cierto con respecto a un send sobre un socket: (1) cuando retorna, el programa puede reutilizar el buffer inmediatamente; (2) es zero-copy; (3) nunca se bloquea; (4) se bloquea hasta que el destinatario recibe el mensaje?
    1. 1
    2. 2
    3. 3
    4. 4
Explicación
Cuando devuelve el control una llamada send sobre un socket, el mensaje se ha copiado a un buffer local (bloqueándose si no hay sitio en el mismo), rompiendo el criterio zero-copy, por lo que el programa puede reutilizar inmediatamente el buffer del mensaje, pero no se garantiza que el mensaje haya llegado al nodo remoto.
  1. Suponga que un proceso tiene que enviar dos mensajes y para ello realiza la siguiente secuencia: define una variable; rellena la variable con el contenido del primer mensaje; lo envía; rellena la misma variable con el contenido del segundo; lo envía. ¿Para qué tipo de envío esta solución no es adecuada?
    1. Envío con retorno inmediato.
    2. Envío con retorno después de copia local.
    3. Envío con retorno cuando ha llegado el mensaje al nodo remoto.
    4. Envío con retorno cuando el proceso remoto ha recibido el mensaje.
Explicación
En el escenario planteado puede haber problemas si la primera llamada de envío no asegura que el buffer pasado como parámetro puede reutilizarse inmediatamente al completarse la llamada. El envío con retorno inmediato no lo asegura por lo que no es adecuado para el escenario propuesto.
  1. Suponga que un proceso tiene que enviar un mensaje a otro y, a continuación, recibir uno de un tercero. Para ello realiza la secuencia: define una variable; rellena la variable con el contenido del primer mensaje; lo envía; invoca una llamada de recepción bloqueante especificando la misma variable. ¿Para qué tipo de envío esta solución no es adecuada?
    1. Envío con retorno inmediato.
    2. Envío con retorno después de copia local.
    3. Envío con retorno cuando ha llegado el mensaje al nodo remoto.
    4. Envío con retorno cuando el proceso remoto ha recibido el mensaje.
Explicación
En el escenario planteado puede haber problemas si la primera llamada de envío no asegura que el buffer pasado como parámetro puede reutilizarse inmediatamente al completarse la llamada. El envío con retorno inmediato no lo asegura por lo que no es adecuado para el escenario propuesto.
  1. Suponga un sistema de comunicación en grupo causal con 3 procesos A, B y C tal que A envía un mensaje en t=0, que B recibe en t=5 y C en T=10, y B envía un mensaje en t=6 que A recibe en t=X y C en t=Y. Identifique qué valores de X e Y son factibles.
    1. X=7; Y=11
    2. X=5; Y=11
    3. X=7; Y=9
    4. X=5; Y=9
Explicación
Para satisfacer el orden causal, hay que asegurarse de que no se le entrega a C el mensaje de B hasta que no haya recibido el de A. Por tanto, el valor de Y no puede ser menor que 10. Por otro lado, el valor de X no puede ser menor que 6 puesto que, obviamente, no se puede recibir un mensaje antes de que haya sido enviado.
  1. ¿Qué tipo de desacoplo proporciona un esquema de comunicación basado en sockets: espacial (E) o temporal (T)?
    1. Ninguno
    2. Ambos
    3. E
    4. T
Explicación
En la comunicación con sockets, el proceso que inicia la misma debe conocer la dirección del destinatario, no existiendo, por tanto, desacoplamiento espacial. Por otro lado, para que se complete la comunicación, ambos procesos deben coincidir en el tiempo, lo que implica que no hay tampoco desacoplamiento temporal.
  1. ¿Qué tipo de desacoplo proporciona un esquema de comunicación basado en colas de mensajes: espacial (E) o temporal (T)?
    1. Ambos
    2. Ninguno
    3. E
    4. T
Explicación
En un sistema de colas de mensajes, el proceso que inicia la comunicación especifica simplemente la dirección de una cola, no requiriendo conocer quiénes son los destinatarios, lo que significa que hay desacoplamiento espacial. Por otro lado, el sistema de colas almacena el mensaje hasta que sea recibido, incluso aunque, para entonces, el proceso remitente haya dejado de existir, existiendo, por tanto, también desacoplamiento temporal.
  1. ¿Qué tipo de desacoplo proporciona un esquema de comunicación de grupo: espacial (E) o temporal (T)?
    1. E
    2. Ninguno
    3. Ambos
    4. T
Explicación
En un sistema de comunicación de grupo, el proceso que inicia la comunicación especifica simplemente una dirección de grupo, no requiriendo conocer quiénes son los destinatarios, lo que significa que hay desacoplamiento espacial. Por otro lado, para que se complete la comunicación, los procesos involucrados deben coincidir en el tiempo, lo que implica que no hay desacoplamiento temporal.