Mensajes, Canales y Actores Flashcards

1
Q

Explicar las tres clasificaciones de modelos de comunicación vistos en clase.

A

La primer clasificación de comunicación es:
- sincrónica: se envía un mensaje y el sistema se queda esperando a que llegue la respuesta. Pensá en una llamada telefónica.
- asincrónica: se envía un mensaje, pero el sistema no se queda esperando, continúa ejecutando otras tareas, enviando otros mensajes, etc. Eventualmente llegará la respuesta y se reaccionará en ese entonces. Pensá en un email.

La segunda clasificación es:
- simétrica: comunicación 1-1
- asimétrica: comunicación 1-muchos, como un broadcast. Pensá en publicar un tweet.
- sin direccionamiento: cuando el mensaje se manda a todos, pero dependiendo del tipo de mensaje, algunos lo procesan y otros lo descartan.

La tercer clasificación es según el flujo de datos:
- unidireccional: sólo escribo o sólo recibo mensajes
- bidireccional: escribo y recibo mensajes

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Qué es un canal? Qué lo compone?

A

Un canal es una entidad que comunica un emisor con un receptor, y posee las siguientes características:
- nombre (para identificarlo)
- tipo (se puede mandar un único tipo de objeto por canal)
- clasificación de sincrónico o asincrónico
- suelen ser unidireccionales

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Qué es un pipe? Y una fifo? Cuál es su diferencia?

A

Son los canales que se implementan en UNIX. La diferencia es que un pipe no vive en el file system, mientras que una fifo sí. Los pipes sólo viven en memoria.

Pero ambos sirven para comunicar programas en la misma computadora.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Qué es el Selective Input?

A

Es una herramienta que Rust no implementa, pero otros lenguajes sí. Se trata de una sintaxis que permite escuchar en varios canales de forma bloqueante, y desbloquearse cuando llega un mensaje a alguno de ellos.

Esta herramienta nos permite evitar un busy wait para revisar de a varios canales a la vez.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Qué son las Remote Procedura Calls?

A

Esta herramienta permite al cliente ejecutar funciones en un servidor localizado en otro procesador. Parece que se está llamando a una función normal, pero en realidad esta función se ejecuta en otro servidor. El objetivo es simplificar el código para el programador y el lector.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Qué características tiene un canal en Rust?

A

Características de un canal en Rust:
- tiene un extremo emisor y otro receptor, es unidireccional
- permite duplicar el extremo emisor para tener múltiples productores, aunque sólo se permite un único consumidor
- al enviar un elemento al canal, se transfiere el ownership del elemento enviado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Qué es un actor? Qué características tiene?

A

Un actor es una entidad que encapsulan comportamiento y estado interno. Para modificar el estado interno, se deben enviar mensajes que lo modifiquen.

Un actor posee:
- estado interno
- implementa mensajes y handlers para recibir esos msjs
- vive en un contexto de ejecución propio
- una casilla de mensajes interna

A su vez, los mensajes se envían de manera bloqueante (aunque no se espera a la respuesta antes de continuar) y se procesan de a uno a la vez.

Por otro lado, los actores se pueden comunicar con otros actores que viven en la misma computadora, o en otra computadora (a través de sockets) sin inconvenientes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Cuáles son las funciones para enviar mensajes entre actores de Rust? En qué se diferencian?

A

Las tres funciones que se proveen en Rust son:

  • do_send: envía inmediatamente pero ignora errores en el envío de mensajes
  • try_send: envía inmediatamente pero si hay un error, lo comunica
  • send: retorna un future del resultado del proceso

Se recomienda utilizar try_send.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Cuáles son los beneficios de utilizar el modelo de actores?

A
  • Los actores son más livianos que los threads: se pueden tener miles en memoria sin problemas.
  • El estado interno de los actores es privado, y sólo él puede acceder a él. A su vez, los mensajes entrantes se procesan de a uno a la vez. Todo esto implica que no hay necesidad de utilizar locks o mutexs de manera interna. No hay memoria compartida, race conditions ni deadlocks.
  • Perfectos para resolver situaciones asincrónicas, el código es muy legible y sencillo de implementar y entender
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Qué es el Context? Y el Arbiter?

A

El contexto es el espacio de memoria donde vive el actor, es un contexto específico para él, y contiene su estado y toda la información necesaria para que él se ejecute correctamente. Aquí vive la casilla de mensajes, a donde llega el mensaje originalmente, para que luego el contexto llame al handler correspondiente.

El arbiter es la entidad superior a los actores, que los spawnea y los sobrevive. Él es el que crea el o los threads correspondientes, ejecutan el event loop, y demás.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly