En informática , los procesos secuenciales comunicantes ( CSP ) son un lenguaje formal para describir patrones de interacción en sistemas concurrentes . [ 1 ] Es un miembro de la familia de teorías matemáticas de concurrencia conocidas como álgebras de procesos o cálculos de procesos , basadas en el paso de mensajes a través de canales . CSP fue muy influyente en el diseño del lenguaje de programación occam [ 1 ] [ 2 ] y también influyó en el diseño de lenguajes de programación como Limbo , [ 3 ] RaftLib , Erlang , [ 4 ] Go , [ 5 ] [ 3 ] Crystal y core.async de Clojure . [ 6 ]
CSP fue descrito por primera vez por Tony Hoare en un artículo de 1978, [ 7 ] y desde entonces ha evolucionado sustancialmente. [ 8 ] CSP se ha aplicado prácticamente en la industria como una herramienta para especificar y verificar los aspectos concurrentes de una variedad de sistemas diferentes, como el Transputer T9000 , [ 9 ] así como un sistema de comercio electrónico seguro. [ 10 ] La teoría de CSP en sí misma también sigue siendo objeto de investigación activa, incluyendo trabajos para aumentar su rango de aplicabilidad práctica (por ejemplo, aumentar la escala de los sistemas que se pueden analizar de manera manejable). [ 11 ]
Historia
Versión original
La versión de CSP presentada en el artículo original de Hoare de 1978 era esencialmente un lenguaje de programación concurrente en lugar de un cálculo de procesos . Tenía una sintaxis sustancialmente diferente a la de versiones posteriores de CSP, no poseía una semántica definida matemáticamente [ 12 ] y era incapaz de representar el no determinismo ilimitado [ 13 ] . Los programas en el CSP original se escribían como una composición paralela de un número fijo de procesos secuenciales que se comunicaban entre sí estrictamente a través del paso de mensajes síncrono. A diferencia de versiones posteriores de CSP, a cada proceso se le asignaba un nombre explícito, y el origen o destino de un mensaje se definía especificando el nombre del proceso emisor o receptor previsto. Por ejemplo, el proceso
COPIA = *[c:carácter; oeste?c → este!c]
Recibe repetidamente un carácter del proceso llamado westy envía ese carácter al proceso llamado east. La composición paralela
[oeste::DESMONTAJE || X::COPIAR || este::MONTAJE]
asigna los nombres westal DISASSEMBLEproceso, Xal COPYproceso y eastal ASSEMBLEproceso, y ejecuta estos tres procesos simultáneamente. [ 7 ]
Desarrollo en álgebra de procesos
Tras la publicación de la versión original de CSP, Hoare, Stephen Brookes y AW Roscoe desarrollaron y perfeccionaron la teoría de CSP hasta su forma moderna de álgebra de procesos. El enfoque adoptado para desarrollar CSP como un álgebra de procesos estuvo influenciado por el trabajo de Robin Milner sobre el Cálculo de Sistemas de Comunicación (CCS) y viceversa. La versión teórica de CSP se presentó inicialmente en un artículo de 1984 de Brookes, Hoare y Roscoe, [ 14 ] y posteriormente en el libro de Hoare, Communicating Sequential Processes , [ 12 ] publicado en 1985. En septiembre de 2006, ese libro seguía siendo la tercera referencia de informática más citada de todos los tiempos según Citeseer (aunque una fuente poco fiable debido a la naturaleza de su muestreo). La teoría de CSP ha sufrido algunos cambios menores desde la publicación del libro de Hoare. La mayoría de estos cambios fueron motivados por la aparición de herramientas automatizadas para el análisis y la verificación de procesos CSP. El libro de Roscoe, The Theory and Practice of Concurrency [ 1 ], describe esta versión más reciente de CSP.
Aplicaciones
Una aplicación temprana e importante de CSP fue su uso para la especificación y verificación de elementos del Transputer INMOS T9000 , un procesador segmentado superescalar complejo diseñado para soportar el multiprocesamiento a gran escala . CSP se empleó para verificar la corrección tanto de la segmentación del procesador como del Procesador de Canal Virtual , que gestionaba las comunicaciones externas del procesador. [ 9 ]
La aplicación industrial de CSP al diseño de software se ha centrado generalmente en sistemas fiables y críticos para la seguridad. Por ejemplo, el Instituto de Sistemas Seguros de Bremen y Daimler-Benz Aerospace modelaron un sistema de gestión de fallos y una interfaz de aviónica (que consta de aproximadamente 23 000 líneas de código) destinados a su uso en la Estación Espacial Internacional en CSP, y analizaron el modelo para confirmar que su diseño estaba libre de interbloqueos y bloqueos permanentes . [ 15 ] [ 16 ] El proceso de modelado y análisis permitió descubrir una serie de errores que habrían sido difíciles de detectar solo mediante pruebas. De manera similar, Praxis High Integrity Systems aplicó el modelado y análisis de CSP durante el desarrollo de software (aproximadamente 100 000 líneas de código) para una autoridad de certificación de tarjetas inteligentes seguras para verificar que su diseño fuera seguro y estuviera libre de interbloqueos. Praxis afirma que el sistema tiene una tasa de defectos mucho menor que los sistemas comparables. [ 10 ]
Dado que CSP es idóneo para modelar y analizar sistemas que incorporan intercambios de mensajes complejos, también se ha aplicado a la verificación de protocolos de comunicación y seguridad. Un ejemplo destacado de este tipo de aplicación es el uso que hizo Lowe de CSP y del verificador de refinamiento FDR para descubrir un ataque previamente desconocido contra el protocolo de autenticación de clave pública Needham-Schroeder y, posteriormente, desarrollar un protocolo corregido capaz de contrarrestar dicho ataque. [ 17 ]
Descripción informal
Como su nombre indica, CSP permite describir sistemas en términos de procesos componentes que operan de forma independiente e interactúan entre sí únicamente mediante comunicación por paso de mensajes . Sin embargo, el término "secuencial" en el nombre CSP resulta ahora algo inapropiado, ya que la CSP moderna permite definir los procesos componentes tanto como procesos secuenciales como la composición paralela de procesos más primitivos. Las relaciones entre los distintos procesos y la forma en que cada uno se comunica con su entorno se describen mediante diversos operadores algebraicos de procesos . Mediante este enfoque algebraico, se pueden construir fácilmente descripciones de procesos bastante complejas a partir de unos pocos elementos primitivos.
Primitivos
CSP proporciona dos clases de primitivas en su álgebra de procesos: eventos y procesos primitivos.
- Eventos
Los eventos representan comunicaciones o interacciones. Se asume que son instantáneos, y su comunicación es todo lo que un "entorno" externo puede saber sobre los procesos. Un evento se comunica solo si el entorno lo permite. Si un proceso ofrece un evento y el entorno lo permite, entonces ese evento debe comunicarse. Los eventos pueden ser nombres atómicos (p. ej., encendido , apagado ), nombres compuestos (p. ej. , válvula.abrir , válvula.cerrar ) o eventos de entrada/salida (p. ej., ratón?xy , pantalla!mapa de bits ). El conjunto de todos los eventos se denota. [ 18 ]
- Procesos primitivos
Los procesos primitivos representan comportamientos fundamentales: algunos ejemplos incluyen(el proceso que se bloquea inmediatamente) y(el proceso que finaliza inmediatamente con éxito). [ 18 ]
Operadores algebraicos
CSP tiene una amplia gama de operadores algebraicos. Los principales se presentan informalmente de la siguiente manera.
- Prefijo
El operador de prefijo combina un evento y un proceso para producir un nuevo proceso. Por ejemplo,es el proceso que está dispuesto a comunicar el eventocon su entorno y, despuésse comporta como el proceso. [ 18 ]
- Recursión
Los procesos se pueden definir mediante recursión. Donde¿Es algún término de CSP que involucre?, el procesodefine un proceso recursivo dado por la ecuación . Las recursiones también pueden definirse mutuamente, como por ejemplo: que define un par de procesos mutuamente recursivos que alternan entre comunicarsey. [ 18 ]
- Elección determinista
El operador de elección determinista (o externo) permite definir la evolución futura de un proceso como una elección entre dos procesos componentes y permite que el entorno resuelva la elección comunicando un evento inicial para uno de los procesos. Por ejemplo,es el proceso que está dispuesto a comunicar los eventos inicialesyy posteriormente se comporta comoo, dependiendo del evento inicial que el entorno elija comunicar. [ 18 ]
- Elección no determinista
El operador de elección no determinista (o interno) permite definir la evolución futura de un proceso como una elección entre dos procesos componentes, pero no permite que el entorno tenga ningún control sobre cuál de los procesos componentes será seleccionado. Por ejemplo,puede comportarse como cualquiera de las dosoPuede negarse a aceptarlo.oy solo está obligado a comunicarse si el entorno ofrece ambas cosas.y.
El no determinismo puede introducirse inadvertidamente en una elección aparentemente determinista si los eventos iniciales de ambos lados de la elección son idénticos. Por ejemplo, y son equivalentes. [ 18 ]
- Intercalación
El operador de intercalación representa una actividad concurrente completamente independiente. El procesose comporta como ambosysimultáneamente. Los eventos de ambos procesos se intercalan arbitrariamente en el tiempo. El intercalado puede introducir no determinismo incluso siyambos son deterministas: siyambos pueden comunicar el mismo evento, entonceselige de forma no determinista cuál de los dos procesos comunicó ese evento. [ 18 ]
- Interfaz paralela
El operador de paralelismo de interfaz (o paralelismo generalizado) representa una actividad concurrente que requiere sincronización entre los procesos componentes: paracualquier evento en el conjunto de interfazsolo puede ocurrir cuando ambosyson capaces de participar en ese evento. [ 18 ]
Por ejemplo, el procesorequiere queyambos deben poder realizar el eventoantes de que ese evento pueda ocurrir. Entonces, el procesoes equivalente a, mientrases equivalente a(es decir, el proceso se bloquea).
- Ocultación
El operador de ocultación proporciona una forma de abstraer procesos haciendo que algunos eventos no sean observables por el entorno.es el procesocon el evento programadooculto.
Un ejemplo trivial de ocultamiento eslo cual, suponiendo que el eventono aparece en, simplemente se reduce aLos eventos ocultos se internalizan como acciones τ , que son invisibles e incontrolables por el entorno. La existencia de ocultamiento introduce un comportamiento adicional llamado divergencia , donde se realiza una secuencia infinita de acciones τ. Esto es capturado por el proceso, cuyo comportamiento consiste únicamente en realizar acciones τ para siempre. [ 18 ] Por ejemplo,es equivalente a.
Ejemplos
Uno de los ejemplos arquetípicos de CSP es la representación abstracta de una máquina expendedora de chocolate y su interacción con una persona que desea comprar chocolate. Esta máquina expendedora puede realizar dos eventos diferentes: "moneda" y "chocolate", que representan la inserción del pago y la entrega del chocolate, respectivamente. Una máquina que exige el pago (solo en efectivo) antes de ofrecer un chocolate se puede escribir como:
Una persona que podría optar por usar una moneda o una tarjeta para realizar pagos podría modelarse de la siguiente manera:
Estos dos procesos pueden ponerse en paralelo, de modo que puedan interactuar entre sí. El comportamiento del proceso compuesto depende de los eventos en los que los dos procesos componentes deben sincronizarse. Por lo tanto,
mientras que si la sincronización solo se requiriera en la “moneda”, obtendríamos
Si abstraemos este último proceso compuesto ocultando los eventos de “moneda” y “carta”, es decir,
obtenemos el proceso no determinista
Este es un proceso que ofrece un evento de "choque" y luego se detiene, o simplemente se detiene. En otras palabras, si consideramos la abstracción como una vista externa del sistema (por ejemplo, alguien que no ve la decisión tomada por la persona), se introduce el no determinismo .
Definición formal
Sintaxis
La sintaxis de CSP define las formas “válidas” en que se pueden combinar procesos y eventos. Sea e un evento, b un valor booleano y X un conjunto de eventos. Entonces, la sintaxis básica de CSP se puede definir como:
Tenga en cuenta que, en aras de la brevedad, la sintaxis presentada anteriormente omite laproceso, que representa la divergencia , así como varios operadores como el paralelismo alfabético, la canalización y las opciones indexadas.
semántica formal
CSP se ha dotado de varias semánticas formales diferentes , que definen el significado de las expresiones CSP sintácticamente correctas. La teoría de CSP incluye semántica denotacional mutuamente consistente , semántica algebraica y semántica operacional .
semántica denotacional
Los tres principales modelos denotacionales de CSP son el modelo de trazas , el modelo de fallos estables y el modelo de fallos/divergencias . Las asignaciones semánticas de expresiones de proceso a cada uno de estos tres modelos proporcionan la semántica denotacional para CSP. [ 1 ]
La semántica denotacional permite varias definiciones de un orden parcial de refinamiento en los procesos, que a su vez pueden usarse para representar elegantemente varias propiedades en los procesos. En general,denotarefina.
Modelo de trazas
El modelo de trazas define el significado de una expresión de proceso como el conjunto de secuencias de eventos (trazas) que se puede observar que realiza el proceso. Por ejemplo,
- desdeno realiza eventos
- ya que el procesose puede observar que no se ha realizado ningún evento, el evento a , o la secuencia de eventos a seguido de b
De forma más formal, el modelo de trazasse define como el conjunto de subconjuntos cerrados por prefijo no vacíos de. El significado de un proceso P en el modelo de trazas se define comode tal manera que:
- (es decircontiene la secuencia vacía)
- (es decir(está cerrado por prefijo)
dóndees el conjunto de todas las posibles secuencias finitas de eventos.
Un procesoSe dice que refina otrosi y solo si.refinamiento de trazasse denota. [ 18 ]
Modelo de fallos estables
El modelo de fallos establesextiende el modelo de trazas con conjuntos de rechazo, que son conjuntos de eventosque un proceso puede negarse a realizar. Un fallo es un par, que consiste en una traza s y un conjunto de rechazo X que identifica los eventos que un proceso puede rechazar una vez que ha ejecutado la traza s . El comportamiento observado de un proceso en el modelo de fallos estables se describe mediante el par. Por ejemplo,
Un procesorefinamientos de fallos establessi y solo si.refinamientos de fallos establesse denota. [ 18 ]
Modelo de fallos/divergencias
El modelo de fallos/divergenciaextiende aún más el modelo de fallos para manejar la divergencia . La semántica de un proceso en el modelo de fallos/divergencias es un pardóndese define como el cierre de extensión del conjunto de todas las trazas después del cual el proceso puede divergir inmediatamente, y, que es la extensión decon todas las trazas divergentes.
Un procesofallos-divergencias-refinamientossi y solo si.fallas-divergencias refinanse denota. [ 18 ]
Puntos fijos únicos
Uno de los principios más importantes en CSP es la regla de puntos fijos únicos (UFP). En general, establece que un proceso que satisface ciertas propiedades deseables tiene una única interpretación semántica. Se puede utilizar para concluir demostraciones algebraicas de que dos procesos son iguales en un modelo de CSP. Aquí se describe una versión para recursiones simples en el modelo de trazas.
Consideremos los procesos como sus conjuntos de trazas. El operadorestá definido para todos los procesos, todode modo que, dóndeindica la longitud de la cadena: el conjunto de trazas ende longitud como máximoEsto permite definir una métrica en. Para cada,, dejarDe manera informal, un proceso que coincide en trazas con otro hasta cierta longitud está "más distante" de él que uno que coincide con él hasta una longitud mayor. Se puede demostrar que esto forma un espacio métrico completo .
Una función en conjuntos de trazaSe denomina constructivo si y solo si para todos los procesos,, todo, sientoncesEsto significa que una función es constructiva si y solo si es una aplicación de contracción con respecto a la métrica en conjuntos de traza.
Según el teorema del punto fijo de Banach , sies una función constructiva, tiene un único punto fijo . Esto significa que siyson procesos definidos recursivamente comoy, entonces son equivalentes en el modelo de trazas. UFP también se puede extender a recursiones mutuas (mediante el uso de vectores de procesos) y otros modelos de CSP (por ejemplo, endefiniendo la métrica como en, con respecto a las partes traza del par traza-fallo de un proceso).
Se puede derivar usando UFP (y el teorema del punto fijo de Tarski ) que para monótona, un término recursivo definido comotiene la interpretación semántica, dóndees el elemento más pequeño del modelo. En los modelos de trazas, fallas estables y fallas/divergencias,(equivalente aen el modelo de trazas). [ 1 ] [ 18 ]
Herramientas
A lo largo de los años, se han producido varias herramientas para analizar y comprender sistemas descritos mediante CSP. Las primeras implementaciones de herramientas utilizaban diversas sintaxis legibles por máquina para CSP, lo que hacía que los archivos de entrada escritos para diferentes herramientas fueran incompatibles. Sin embargo, la mayoría de las herramientas de CSP ahora se han estandarizado en el dialecto legible por máquina de CSP ideado por Bryan Scattergood, a veces denominado CSP M. [ 19 ] El dialecto CSP M de CSP posee una semántica operacional definida formalmente, que incluye un lenguaje de programación funcional integrado .
FDR
La herramienta CSP más conocida es probablemente Failures–Divergences Refinement (FDR), un producto comercial desarrollado originalmente por Formal Systems (Europe) Ltd. FDR se describe a menudo como un verificador de modelos , pero técnicamente es un verificador de refinamiento , ya que convierte dos expresiones de proceso CSP en sistemas de transición etiquetados (LTS) y luego determina si uno de los procesos es un refinamiento del otro dentro de algún modelo semántico especificado (trazas, fallos o fallos/divergencia). [ 20 ] FDR aplica varios algoritmos de compresión del espacio de estados a los LTS de proceso para reducir el tamaño del espacio de estados que debe explorarse durante una verificación de refinamiento. FDR fue sucedido por FDR2, FDR3 y FDR4. [ 21 ]
ARCO
El Adelaide Refinement Checker ( ARC ) [ 22 ] es un verificador de refinamiento CSP desarrollado por el Formal Modelling and Verification Group de la Universidad de Adelaida . ARC se diferencia de FDR2 en que representa internamente los procesos CSP como diagramas de decisión binarios ordenados (OBDD), lo que alivia el problema de la explosión de estados de las representaciones LTS explícitas sin requerir el uso de algoritmos de compresión de espacio de estados como los utilizados en FDR2.
ProB
El proyecto ProB , [ 23 ] alojado en el Institut für Informatik, Heinrich-Heine-Universität Düsseldorf, se creó originalmente para apoyar el análisis de especificaciones construidas con el método B. Sin embargo, también incluye soporte para el análisis de procesos CSP mediante verificación de refinamiento y verificación de modelos LTL . ProB también puede utilizarse para verificar propiedades de especificaciones combinadas de CSP y B. FDR3 integra un animador ProBE CSP.
PALMADITA
El Process Analysis Toolkit (PAT) [ 24 ] [ 25 ] es una herramienta de análisis CSP desarrollada en la Escuela de Computación de la Universidad Nacional de Singapur . PAT puede realizar comprobación de refinamiento, comprobación de modelos LTL y simulación de procesos CSP y Timed CSP. El lenguaje de procesos PAT extiende CSP con soporte para variables compartidas mutables, paso de mensajes asíncrono y una variedad de construcciones de procesos relacionadas con el tiempo y la equidad cuantitativa como deadliney waituntil. El principio de diseño subyacente del lenguaje de procesos PAT es combinar un lenguaje de especificación de alto nivel con programas procedimentales (por ejemplo, un evento en PAT puede ser un programa secuencial o incluso una llamada a una biblioteca C# externa) para una mayor expresividad. Las variables compartidas mutables y los canales asíncronos proporcionan un azúcar sintáctico conveniente para patrones de modelado de procesos bien conocidos utilizados en CSP estándar. La sintaxis de PAT es similar, pero no idéntica, a CSP M . [ 26 ] Las principales diferencias entre la sintaxis PAT y el estándar CSP M son el uso de punto y coma para terminar las expresiones de proceso, la inclusión de azúcar sintáctico para variables y asignaciones, y el uso de una sintaxis ligeramente diferente para la elección interna y la composición paralela.
Otros
VisualNets [ 27 ] produce visualizaciones animadas de sistemas CSP a partir de especificaciones y admite CSP temporizado.
CSPsim [ 28 ] es un simulador perezoso. No realiza una verificación de modelo de CSP, pero es útil para explorar sistemas muy grandes (potencialmente infinitos).
SyncStitch [ 29 ] es un verificador de refinamiento CSP con un entorno interactivo de modelado y análisis. Cuenta con un editor gráfico de diagramas de transición de estados. El usuario puede modelar el comportamiento de los procesos no solo como expresiones CSP, sino también como diagramas de transición de estados. Los resultados de la verificación se presentan gráficamente como árboles de cálculo y pueden analizarse de forma interactiva con herramientas de inspección periféricas. Además de las verificaciones de refinamiento, puede realizar verificaciones de interbloqueo y de bloqueo permanente.
Formalismos relacionados
Otros lenguajes de especificación y formalismos se han derivado o inspirado en el CSP clásico sin temporización, entre ellos:
- CSP temporizado , que incorpora información de temporización para el razonamiento sobre sistemas en tiempo real.
- Teoría del Proceso Receptivo , una especialización de CSP que asume una operación de envío asíncrona (es decir, sin bloqueo ).
- CSPP
- HCSP
- TCOZ , una integración de Timed CSP y Object Z
- Circus , una integración de CSP y Z basada en las Teorías Unificadoras de la Programación.
- CML archivado el 19/02/2020 en Wayback Machine (COMPASS Modelling Language), una combinación de Circus y VDM desarrollada para el modelado de sistemas de sistemas (SoS).
- CspCASL , una extensión de CASL que integra CSP
- LOTOS , un estándar internacional [ 30 ] que incorpora características de CSP y CCS .
- PALPS , una extensión probabilística con localizaciones para modelos ecológicos desarrollada por Anna Philippou y Mauricio Toro Bermúdez
Comparación con el modelo actoral
En la medida en que se ocupa de procesos concurrentes que intercambian mensajes, el modelo de actor es, en líneas generales, similar al CSP. Sin embargo, ambos modelos toman algunas decisiones fundamentalmente diferentes con respecto a las primitivas que proporcionan:
- Los procesos de CSP son anónimos, mientras que los actores tienen identidades.
- CSP utiliza canales explícitos para el paso de mensajes, mientras que los sistemas de actores transmiten mensajes a actores de destino con nombre. Estos enfoques pueden considerarse duales entre sí, en el sentido de que los procesos recibidos a través de un único canal tienen efectivamente una identidad que corresponde a ese canal, mientras que el acoplamiento basado en nombres entre actores puede romperse mediante la construcción de actores que se comportan como canales.
- El paso de mensajes en CSP implica fundamentalmente un encuentro entre los procesos involucrados en el envío y la recepción del mensaje; es decir, el remitente no puede transmitir un mensaje hasta que el receptor esté listo para aceptarlo. En cambio, el paso de mensajes en sistemas de actores es fundamentalmente asíncrono; es decir, la transmisión y la recepción de mensajes no tienen por qué ocurrir simultáneamente, y los remitentes pueden transmitir mensajes antes de que los receptores estén listos para aceptarlos. Estos enfoques también pueden considerarse duales entre sí, en el sentido de que los sistemas basados en encuentro pueden utilizarse para construir comunicaciones con búfer que se comportan como sistemas de mensajería asíncronos, mientras que los sistemas asíncronos pueden utilizarse para construir comunicaciones de estilo encuentro mediante un protocolo de mensaje/acuse de recibo para sincronizar a remitentes y receptores.
Cabe señalar que las propiedades mencionadas no se refieren necesariamente al documento original de Hoare sobre CSP, sino más bien a la versión moderna de la idea, presente en implementaciones como Go y core.async de Clojure . En el documento original, los canales no eran una parte central de la especificación, y los procesos emisor y receptor se identificaban entre sí por su nombre.
Otorgar
En 1990, “ Se otorgó un Premio de la Reina al Logro Tecnológico al Laboratorio de Computación de la Universidad de Oxford . El premio reconoce una colaboración exitosa entre el laboratorio e Inmos Ltd. … El producto estrella de Inmos es el ' transputer ', un microprocesador con muchas de las piezas que normalmente se necesitarían adicionales integradas en un solo componente ”. [ 31 ] Según Tony Hoare, [ 32 ] “El Transputer de INMOS fue la materialización de las ideas … de construir microprocesadores que pudieran comunicarse entre sí a través de cables que se extenderían entre sus terminales. El fundador tuvo la visión de que las ideas de CSP estaban listas para la explotación industrial, y las convirtió en la base del lenguaje para programar Transputers, que se llamó Occam . … La empresa estimó que esto les permitió entregar el hardware un año antes de lo que hubiera ocurrido de otra manera. Solicitaron y ganaron un Premio de la Reina al logro tecnológico, en conjunto con el Laboratorio de Computación de la Universidad de Oxford”.
Véase también
- Teoría de las huellas , la teoría general de las huellas.
- Monoide de traza y monoide de historia
- Lenguaje de programación sencillo
- Lenguaje de programación XC
- VerilogCSP es un conjunto de macros añadidas a Verilog HDL para admitir la comunicación de canales entre procesos secuenciales.
- Joyce es un lenguaje de programación basado en los principios de CSP, desarrollado por Brinch Hansen alrededor de 1989.
- SuperPascal es un lenguaje de programación también desarrollado por Brinch Hansen , influenciado por CSP y su trabajo anterior con Joyce .
- Ada implementa características de CSP como el encuentro.
- DirectShow es el marco de vídeo dentro de DirectX ; utiliza los conceptos de CSP para implementar los filtros de audio y vídeo.
- OpenComRTOS es un sistema operativo en tiempo real distribuido, centrado en la red y desarrollado formalmente , basado en un superconjunto pragmático de CSP.
- Autómata de entrada/salida
- Modelo de programación paralela
- TLA + es otro lenguaje formal para modelar y verificar sistemas concurrentes.
Referencias
- 1 2 3 4 5 Roscoe, AW (1997). Teoría y práctica de la concurrencia (PDF) . Prentice Hall . ISBN 978-0-13-674409-2.
- ↑ Inmos (12 de mayo de 1995). Manual de referencia de occam 2.1 (PDF) . SGS-Thomson Microelectronics Ltd., documento INMOS 72 occ 45 03.
- 1 2 Cox, Russ. "Bell Labs y CSP Threads" . Recuperado el 15 de abril de 2010 .
- ↑ "10 preguntas académicas e históricas" . Consultado el 15 de noviembre de 2021 .
- ↑ "Preguntas frecuentes: ¿Por qué construir la concurrencia sobre las ideas de CSP?" . El lenguaje de programación Go . Consultado el 15 de octubre de 2021 .
- ↑ Hickey, Rich (2013-06-28). "Canales core.async de Clojure" . Recuperado el 2021-10-15 .
- 1 2 Hoare, CAR (1978). "Comunicación de procesos secuenciales" . Communications of the ACM . 21 (8): 666– 677. doi : 10.1145/359576.359585 . S2CID 849342 .
- ↑ Abdallah, Ali E.; Jones, Cliff B.; Sanders, Jeff W. (2005). Comunicación de procesos secuenciales: Los primeros 25 años . LNCS . Vol. 3525. Springer. ISBN 9783540258131.
- 1 2 Barrett, G. (1995). "Verificación de modelos en la práctica: El procesador de canal virtual T9000". IEEE Transactions on Software Engineering . 21 (2): 69– 78. doi : 10.1109/32.345823 .
- 1 2 Hall, A; Chapman, R. (2002). "Corrección por construcción: desarrollo de un sistema seguro comercial" (PDF) . IEEE Software . 19 (1): 18– 25. CiteSeerX 10.1.1.16.1811 . doi : 10.1109/52.976937 .
- ↑ Creese, S. (2001). Inducción independiente de datos: verificación de modelos CSP de redes de tamaño arbitrario (D. Phil.). Oxford University . CiteSeerX 10.1.1.13.7185 .
- 1 2 Hoare, CAR (1985). Comunicación de procesos secuenciales . Prentice Hall. ISBN 978-0-13-153289-2.
- ↑ Clinger, William (junio de 1981). Fundamentos de la semántica de actores (tesis doctoral en matemáticas). MIT. hdl : 1721.1/6935 .
- ↑ Brookes, Stephen; Hoare, CAR ; Roscoe, AW (1984). "Una teoría de los procesos secuenciales comunicantes" . Journal of the ACM . 31 (3): 560– 599. doi : 10.1145/828.833 . S2CID 488666 .
- ↑ Buth, B.; M. Kouvaras; J. Peleska; H. Shi (diciembre de 1997). "Análisis de interbloqueo para un sistema tolerante a fallos". Actas de la 6.ª Conferencia Internacional sobre Metodología Algebraica y Tecnología de Software (AMAST'97) . págs. 60–75 .
- ↑ Buth, B.; J. Peleska; H. Shi (enero de 1999). "Combinación de métodos para el análisis de bloqueos en vivo de un sistema tolerante a fallos". Actas de la 7.ª Conferencia Internacional sobre Metodología Algebraica y Tecnología de Software (AMAST'98) . págs. 124–139 .
- ↑ Lowe, G. (1996). "Romper y reparar el protocolo de clave pública Needham-Schroeder usando FDR" . Herramientas y algoritmos para la construcción y el análisis de sistemas (TACAS) . Springer-Verlag. págs. 147-166 .
- 1 2 3 4 5 6 7 8 9 10 11 12 13 Roscoe, AW (2010). Comprensión de los sistemas concurrentes . Textos en Ciencias de la Computación. doi : 10.1007/978-1-84882-258-0 . ISBN 978-1-84882-257-3.
- ↑ Scattergood, JB (1998). La semántica y la implementación de CSP legible por máquina ( D.Phil. ). Laboratorio de Computación de la Universidad de Oxford .
- ↑ Roscoe, AW (1994). "Verificación de modelos CSP". Una mente clásica: ensayos en honor de CAR Hoare . Prentice Hall.
- ↑ "Introducción — Documentación de FDR 4.2.4" . www.cs.ox.ac.uk .
- ↑ Parashkevov, Atanas N.; Yantchev, Jay (1996). "ARC: una herramienta para el refinamiento eficiente y la verificación de equivalencia para CSP". IEEE Int. Conf. on Algorithms and Architectures for Parallel Processing ICA3PP '96 . pp. 68–75 . CiteSeerX 10.1.1.45.3212 .
- ↑ Leuschel, Michael; Fontaine, Marc (2008). "Explorando las profundidades de CSP-M: una nueva herramienta de validación compatible con FDR" (PDF) . ICFEM 2008. Springer-Verlag. Archivado del original (PDF) el 19 de julio de 2011. Consultado el 26 de noviembre de 2008 .
- ↑ Sun, Jun; Liu, Yang; Dong, Jin Song (2009). "PAT: Hacia una verificación flexible bajo equidad" (PDF) . Actas de la 20.ª Conferencia Internacional sobre Verificación Asistida por Computadora (CAV 2009) . Lecture Notes in Computer Science. Vol. 5643. Springer. Archivado del original (PDF) el 11 de junio de 2011. Recuperado el 16 de junio de 2009 .
- ↑ Sun, Jun; Liu, Yang; Dong, Jin Song (2008). "Model Checking CSP Revisited: Introducing a Process Analysis Toolkit" (PDF) . Actas del Tercer Simposio Internacional sobre el Aprovechamiento de Aplicaciones de Métodos Formales, Verificación y Validación (ISoLA 2008) . Communications in Computer and Information Science. Vol. 17. Springer. pp. 307–322 . Archivado del original (PDF) el 8 de enero de 2009. Recuperado el 15 de enero de 2009 .
- ↑ Sun, Jun; Liu, Yang; Dong, Jin Song; Chen, Chunqing (2009). "Integración de especificaciones y programas para la especificación y verificación de sistemas" (PDF) . Conferencia Internacional IEEE sobre Aspectos Teóricos de la Ingeniería de Software TASE '09 . Archivado del original (PDF) el 11 de junio de 2011. Consultado el 13 de abril de 2009 .
- ↑ Green, Mark; Abdallah, Ali (2002). "Análisis de rendimiento y ajuste de comportamiento para la optimización de sistemas de comunicación" . Arquitecturas de procesos de comunicación 2002 .
- ↑ Brooke, Phillip; Paige, Richard (2007). "Exploración y verificación perezosa de modelos CSP con CSPsim". Arquitecturas de procesos comunicantes 2007 .
- ↑ "SyncStitch" . principia-m.com .
- ↑ ISO 8807, Especificación del lenguaje de ordenación temporal
- ↑ Geraint Jones (1990). "Afilado como una navaja: Premio de la Reina para el Laboratorio de Computación" . The Oxford Magazine (59, Cuarta Semana, Trimestre de Trinity).
- ↑ Len Shustek (marzo de 2009). "Una entrevista con CAR Hoare" . Communications of the ACM . 52 (3): 38– 41. doi : 10.1145/1467247.1467261 . S2CID 1868477 .
Lecturas adicionales
- Hoare, CAR (2004) [1985]. Comunicación de procesos secuenciales . Prentice Hall International. ISBN 978-0-13-153271-7Archivado del original el 22 de enero de 2025.
- Este libro ha sido actualizado por Jim Davies en el Laboratorio de Computación de la Universidad de Oxford y la nueva edición está disponible para su descarga en formato PDF en el sitio web Using CSP (enlace arriba).
- Roscoe, AW (1997). Teoría y práctica de la concurrencia . Prentice Hall . ISBN 978-0-13-674409-2.
- Aquí encontrará algunos enlaces relacionados con este libro . El texto completo está disponible para su descarga en formato PS o PDF en la lista de publicaciones académicas de Bill Roscoe .
Enlaces externos
- La anotación de CSP (versión china) , obra de traducción y anotación sin ánimo de lucro basada en el libro de Prentice-Hall (1985), la versión china de Chaochen Zhou (1988) y la versión en línea de Jim Davies (2015).
- WoTUG , un grupo de usuarios de sistemas CSP y de estilo occam, contiene información sobre CSP y enlaces útiles.
- "Citas CSP" de CiteSeer
- Introducciones relacionadas con la informática en 1978
- 1978 en informática
- Cálculos de proceso
- Computación concurrente
- Tony Hoare