Download CSP: Sintaxis y semántica
Document related concepts
no text concepts found
Transcript
Communicating Sequential Processes Presentación realizada por : Alberto Calixto Simon Ivan Olmos Pineda CSP • Fue descrito por primera vez en un documento presentado por C. A. R. Hoare. • La idea del nombre fue tratar de describir sistemas como un número de componentes (procesos) que operan independientemente y se comunican entre si por un número bien definido de canales. • Influenciado por Ada CSP: Características • Enfocado a desarrollar sistemas paralelos. • Comunicación por medio de paso de mensajes mediante memoria compartida. • Sintaxis y semántica enfocada a desarrollar sistemas paralelos con naturalidad. • Sincronización entre procesos, comunicación síncrona. CSP: Características • Facilidad para implementar programas con múltiples entradas y salidas. • Se especifican claramente el número de procesos concurrentes, variables, etc. • Se dice que más que un lenguaje, es una filosofía de programación. CSP: Sintaxis, Semántica Comando asignación: := x := x +1; (x, y) := (y, x); • En caso que las variables que intervienen en una asignación sean de distintos tipos, esta no se realiza. CSP: Sintaxis, Semántica Instrucción ||: X(1) :: CL1 || X(2) :: CL2; user :: USER || sort(i: 1 .. 1000) :: SORT ||... • No hay almacenamiento de variables • Termina el procesamiento paralelo cuando terminan todos los procesos paralelos. • Como cada proceso se define explícitamente, no hay creación dinámica de procesos. CSP: Sintaxis y semántica Comandos de entrada / salida procl ? l lpr ! l La primera operación indica que del canal procl entra algo a l. La segunda operación indica que del canal b sale el valor de l. CSP: Sintaxis y semántica • Existen operadores básicos: +, -, <, >,... [ coutn < 100 ; xyz < 20 -> count:=count+1 [] count = 100 -> xyz := 34; [] xyz >= 20 -> xyz := 0 ] CSP: Sintaxis y semántica • En el ejemplo anterior, ; significa la conjunción lógica. • Se pueden realizar programas simples como el siguiente, el cual solo recibe un conjunto de 100 caracteres desde el teclado e imprime los que sean caracteres imprimibles. CSP: Sintaxis y semántica [ c: character; (i: 1.. 100) continue(i); keyboard(i) ? c -> [ c = LINEFEED -> console(i) ! RETURN; console(i) ! LINEFEED [] c <> LINEFEED -> console(i) ! C ] ] CSP: Sintaxis y semántica • Para crear una iteración de un conjunto de instrucciones, se coloca un asterisco al inicio de estas. *[ (i: 1.. 5) A(i) > A(i+1) (A(i),A(i+1)) := (A(i+1), A(i)) ] En este ejemplo, A es un arreglo de 1000 enteros. En este ejemplo, se ordena el arreglo en orden ascendente. FDR Failures Divergence Refinement Refinamiento Divergente de Fallas ¿Qué es FDR ? FDR es un modelo de chequeo para maquinas de estados, con base en la teoría de concurrencia establecida alrededor de CSP desarrollado en la Universidad de Oxford. Capacidad La versión FDR2 mejora la ejecución de su antecesor, e incorpora una jerarquía abstracta y mecanismos de compresión que permiten al sistema analizar una gran cantidad de estados (7^(2^1024)) en minutos. Aplicaciones • Desarrollo y verificación de comunicaciones de hardware (en el Transputer T9000 y el chip C104 de ruteadores) • Protocolos de Seguridad - Propiedades - Defectos en el intercambio de llaves - Autentificación, confidencialidad,... ¿Que ofrece FDR2? • Soporte de operadores fuera del núcleo de CSP y completamente diferente al lenguaje. • Todos los procesos pueden ser parametrizados. • Mejorar el manejo de la sincronización múltiple, con la representación de reglas de disparo basadas en los eventos los cuales integran. • Proveer de un lenguaje poderoso para los tipos de datos y expresiones. • La habilidad de construir un sistema convergente gradualmente, en cada etapa comprime al subsistema a producir un proceso equivalente con menos estados. FDR Soporta Directamente Tres Modelos • El modelo de trazos • El modelo de fallos estables • El modelo de fallos divergentes Entorno FDR requiere un sistema workstation y se aconseja usar FDR en un sistema con almenos 32Mb de memoria física, y al menos 64Mb de memoria virtual. Las plataformas de soporte son: Sun Sparc systems (Solaris 2.3 o superiores) HP PA-RISC systems (HP-UX 9.0.5) IBM RS/6000 systems (AIX 3.2.5) Procesos • • • • • • • c -> p prefijo simple c ?x ?x':a !y -> p prefijo complejo p;q composición secuencial p [[ c <- c' ]] re-etiquetar !x salida ?x:a entrada obligada ?x entrada espontanea Ejemplos BUFF(in,out) = in?x -> out!x -> BUFF(in, out) square(n) = n * n P = in ? x -> out ! square(x) -> P Ejemplos -- First, the set of values to be communicated datatype FRUIT = apples | oranges | pears channel left,right,mid : FRUIT channel ack COPY = left ? x -> right ! x -> COPY SEND = left ? x -> mid ! x -> ack -> SEND REC = mid ? x -> right ! x -> ack -> REC SYSTEM = (SEND [| {| mid, ack |} |] REC) \ {| mid, ack |} assert COPY [FD= SYSTEM assert SYSTEM [FD= COPY Referencias • http://cswww.vuse.vanderbilt.edu/~raghavan/cs38 1/csplect/index.htm • http://archive.comlab.ox.ac.uk/csp.html • http://www.formal.demon.co.uk/CSP.html • http://research.cem.itesm.mx/jesus/csp/csp.html