Blog de Contraslash (Legacy)

Programación Concurrente por Paso de Mensajes

May 04, 2018

Programación Concurrente por Paso de Mensajes

Definición

La programación concurrente por paso de mensajes es un estilo de programación donde entidades independientes se comunican asíncronamente por medio de mensajes.

Puerto

Se define este Tipo Abstracto de Dato con un Identificador P un flujo S.

Se define una operación Send(P,X) donde por el puerto P se envía el valor X

Máquina Abstracta

Como es un modelo que extiende del modelo de Programación Concurrente Declarativa, se mantiene la máquina conformada por:

  • Almacén Inmutable de datos
  • Conjunto de Pilas semánticas

y se añade un nuevo concepto:

-Almacén Mutable de Puertos

Como se extiene del modelo de Programación Concurrente Declarativa, se toma le concepto de Objeto Flujo: Un procedimiento recursivo que ejecuta en un hilo propio y se comunica con otros objetos flujo por medio de flujos de entrada y salida.

Con base en esta definición, se define un Objeto Puerto que combina uno o mas puertos con un objeto flujo

Multi Agent Systems (MAS)

Modelo:

  • Se basa en el modelo de Programación Concurrente por paso de mensajes
  • Un componente es un procedimiento con entradas y salidas tipo Flujo
  • Cuando se instancia, se crea un objeto tipo puerto

Para cada componente se debe definir:

  • Protocolo de mensajes
  • Diagrama de estado

Otra información importante

  • Composición: construcción de un nuevo componente a partir de otros
  • Acoplamiento: combinación de instancias de componentes por medio de las entradas y salidas
  • Instanciación: creación de una instancia de un componente
  • Restricción: definición de la visibilidad de las entradas o salidas de un componente compuesto
  • El concepto de puerto permite: el embebimiento de objetos puerto en estructuras de datos y la comunicación muchos a uno
  • Los cables de muchos tiros: Se utilizan para flujos de mensajes, pueden enviar cualquier número de mensaje, Se implementan con puertos
  • Los diagramas de estado definen como cada uno de los componentes reacciona con los mensajes recibidos.
  • Los cables de muchos tiros: Se implementan con variables de flujo de datos, solamente se puede pasar un mensaje con ellos, se usan para mensajes que no cambian o mensajes de una sola vez
  • El diagrama de componentes define como se envían mensajes los componentes, pero no como reaccionan ellos
  • Los objetos reactivos no tienen estado