En informática , los cálculos de procesos (o álgebras de procesos ) son una familia diversa de enfoques relacionados para modelar formalmente sistemas concurrentes . Los cálculos de procesos proporcionan una herramienta para la descripción de alto nivel de interacciones, comunicaciones y sincronizaciones entre una colección de agentes o procesos independientes. También proporcionan leyes algebraicas que permiten manipular y analizar las descripciones de procesos, y permiten el razonamiento formal sobre equivalencias entre procesos (por ejemplo, utilizando bisimulación ). Los principales ejemplos de cálculos de procesos incluyen CSP , CCS , ACP y LOTOS . [1] Las adiciones más recientes a la familia incluyen el cálculo π , el cálculo ambiental , PEPA , el cálculo de fusión y el cálculo de unión .
Si bien la variedad de cálculos de procesos existentes es muy grande (incluidas variantes que incorporan comportamiento estocástico , información de tiempo y especializaciones para estudiar interacciones moleculares), hay varias características que todos los cálculos de procesos tienen en común: [2]
Para definir un cálculo de procesos , se comienza con un conjunto de nombres (o canales ) cuyo propósito es proporcionar medios de comunicación. En muchas implementaciones, los canales tienen una estructura interna rica para mejorar la eficiencia, pero esto se abstrae en la mayoría de los modelos teóricos. Además de los nombres, se necesita un medio para formar nuevos procesos a partir de los antiguos. Los operadores básicos, siempre presentes de una forma u otra, permiten: [3]
La composición paralela de dos procesos y , que se escribe normalmente , es la primitiva clave que distingue los cálculos de procesos de los modelos secuenciales de computación. La composición paralela permite que la computación en y se realice de manera simultánea e independiente, pero también permite la interacción, es decir, la sincronización y el flujo de información de a (o viceversa) en un canal compartido por ambos. Fundamentalmente, un agente o proceso puede estar conectado a más de un canal a la vez.
Los canales pueden ser sincrónicos o asincrónicos. En el caso de un canal sincrónico, el agente que envía un mensaje espera hasta que otro agente haya recibido el mensaje. Los canales asincrónicos no requieren ninguna sincronización de este tipo. En algunos cálculos de procesos (en particular, el cálculo π ), los propios canales pueden enviarse en mensajes a través de (otros) canales, lo que permite cambiar la topología de las interconexiones de procesos. Algunos cálculos de procesos también permiten la creación de canales durante la ejecución de un cálculo.
La interacción puede ser (pero no siempre lo es) un flujo de información dirigido . Es decir, la entrada y la salida se pueden distinguir como primitivas de interacción dual. Los cálculos de proceso que hacen tales distinciones suelen definir un operador de entrada ( eg ) y un operador de salida ( eg ), los cuales nombran un punto de interacción (here ) que se utiliza para sincronizar con una primitiva de interacción dual.
Si se intercambia información, esta fluirá desde el proceso de salida al de entrada. La primitiva de salida especificará los datos que se enviarán. En , estos datos son . De manera similar, si una entrada espera recibir datos, una o más variables ligadas actuarán como marcadores de posición para ser reemplazados por datos, cuando lleguen. En , desempeña ese papel. La elección del tipo de datos que se pueden intercambiar en una interacción es una de las características clave que distingue a los diferentes cálculos de procesos.
A veces, las interacciones deben ordenarse temporalmente. Por ejemplo, puede ser deseable especificar algoritmos como: primero recibir algunos datos en y luego enviar esos datos en . La composición secuencial se puede utilizar para tales fines. Es bien conocida por otros modelos de computación. En los cálculos de procesos, el operador de secuenciación generalmente se integra con la entrada o la salida, o ambas. Por ejemplo, el proceso esperará una entrada en . Solo cuando se haya producido esta entrada , se activará el proceso, y los datos recibidos a través de se sustituirán por el identificador .
La regla de reducción operativa clave, que contiene la esencia computacional de los cálculos de procesos, se puede dar únicamente en términos de composición paralela, secuencialización, entrada y salida. Los detalles de esta reducción varían entre los cálculos, pero la esencia sigue siendo aproximadamente la misma. La regla de reducción es:
La interpretación de esta regla de reducción es:
La clase de procesos que se permite que se extienda como continuación de la operación de salida influye sustancialmente en las propiedades del cálculo.
Los procesos no limitan el número de conexiones que se pueden hacer en un punto de interacción dado. Pero los puntos de interacción permiten la interferencia (es decir, la interacción). Para la síntesis de sistemas compactos, mínimos y compositivos, la capacidad de restringir la interferencia es crucial. Las operaciones de ocultamiento permiten controlar las conexiones realizadas entre los puntos de interacción cuando se componen agentes en paralelo. El ocultamiento se puede denotar de diversas formas. Por ejemplo, en el cálculo π el ocultamiento de un nombre en se puede expresar como , mientras que en CSP podría escribirse como .
Las operaciones presentadas hasta ahora describen únicamente interacciones finitas y, en consecuencia, son insuficientes para la computabilidad completa, que incluye el comportamiento no terminante. La recursión y la replicación son operaciones que permiten descripciones finitas de un comportamiento infinito. La recursión es bien conocida en el mundo secuencial. La replicación puede entenderse como la abreviatura de la composición paralela de un número infinito numerable de procesos:
Los cálculos de procesos generalmente también incluyen un proceso nulo (denotado de diversas formas como , , , o algún otro símbolo apropiado) que no tiene puntos de interacción. Es completamente inactivo y su único propósito es actuar como el ancla inductiva sobre la cual se pueden generar procesos más interesantes.
El álgebra de procesos se ha estudiado para tiempo discreto y tiempo continuo (tiempo real o tiempo denso). [4]
En la primera mitad del siglo XX se propusieron varios formalismos para capturar el concepto informal de función computable , siendo las funciones μ-recursivas , las máquinas de Turing y el cálculo lambda posiblemente los ejemplos más conocidos en la actualidad. El hecho sorprendente de que sean esencialmente equivalentes, en el sentido de que todos son codificables entre sí, apoya la tesis de Church-Turing . Otra característica compartida que se comenta con menos frecuencia: todos ellos se entienden más fácilmente como modelos de computación secuencial . La posterior consolidación de la ciencia informática requirió una formulación más sutil de la noción de computación, en particular representaciones explícitas de concurrencia y comunicación. Modelos de concurrencia como los cálculos de procesos, las redes de Petri en 1962 y el modelo de actor en 1973 surgieron de esta línea de investigación.
La investigación sobre los cálculos de procesos comenzó en serio con el trabajo seminal de Robin Milner sobre el Cálculo de Sistemas de Comunicación (CCS) durante el período de 1973 a 1980. Los Procesos Secuenciales de Comunicación (CSP) de CAR Hoare aparecieron por primera vez en 1978, y posteriormente se desarrollaron hasta convertirse en un cálculo de procesos completo a principios de la década de 1980. Hubo mucha fertilización cruzada de ideas entre CCS y CSP a medida que se desarrollaban. En 1982, Jan Bergstra y Jan Willem Klop comenzaron a trabajar en lo que llegó a conocerse como el Álgebra de Procesos de Comunicación (ACP), e introdujeron el término álgebra de procesos para describir su trabajo. [1] CCS, CSP y ACP constituyen las tres ramas principales de la familia de cálculos de procesos: la mayoría de los otros cálculos de procesos pueden rastrear sus raíces en uno de estos tres cálculos.
Se han estudiado varios cálculos de procesos y no todos ellos se ajustan al paradigma esbozado aquí. El ejemplo más destacado puede ser el cálculo ambiental . Esto es de esperar, ya que los cálculos de procesos son un campo de estudio activo. Actualmente, la investigación sobre cálculos de procesos se centra en los siguientes problemas.
Las ideas detrás del álgebra de procesos han dado lugar a varias herramientas, entre ellas:
El monoide histórico es el objeto libre que es genéricamente capaz de representar las historias de procesos comunicativos individuales. Un cálculo de procesos es entonces un lenguaje formal impuesto sobre un monoide histórico de manera consistente. [6] Es decir, un monoide histórico solo puede registrar una secuencia de eventos, con sincronización, pero no especifica las transiciones de estado permitidas. Por lo tanto, un cálculo de procesos es a un monoide histórico lo que un lenguaje formal es a un monoide libre (un lenguaje formal es un subconjunto del conjunto de todas las posibles cadenas de longitud finita de un alfabeto generado por la estrella de Kleene ).
El uso de canales para la comunicación es una de las características que distinguen a los cálculos de procesos de otros modelos de concurrencia , como las redes de Petri y el modelo de actores (véase Modelo de actores y cálculos de procesos ). Una de las motivaciones fundamentales para incluir canales en los cálculos de procesos fue permitir ciertas técnicas algebraicas, facilitando así el razonamiento algebraico sobre los procesos.
{{cite journal}}
: Requiere citar revista |journal=
( ayuda ){{cite book}}
: |work=
ignorado ( ayuda )