UNIVERSIDAD NACIONAL DE TRUJILLO
FACULTAD DE CIENCIAS FISICAS Y MATEMATICAS
ESCUELA DE INFORMATICA
CURSO : ESPECIFICACION FORMAL DE SISTEMAS
DOCENTE: CRUZ FLORIAN, IRIS AUREA
ALUMNOS : o AVALOS ANAYA, ANGELICAo CAPA SIXE, JORDANo GAVIDIA MEZA ALEXISo GUZMAN CHUMAN, JOSE o PEREDA PURIZAGA, JANN
CICLO : VIII
TRUJILLO – PERÚ
2015
INDICE
CONTENIDOMÉTODOS CONCURRENTES: PROCESO DE COMUNICACIÓN SECUENCIAL.................................3
1. INTRODUCCION...............................................................................................................3
2. COMUNICACIÓN SECUENCIAL DE PROCESOS (CSP)........................................................3
2.1. Historia.....................................................................................................................4
2.2. Características..........................................................................................................4
2.3. Aplicaciones.............................................................................................................5
2.4. Primitivas.................................................................................................................5
2.5. Operaciones Algebraicas.........................................................................................5
2.6. Ventajas...................................................................................................................7
3. OCCAM (A CONCURRENT PROGRAMMING LANGUAGE)....................................................8
3.1. Introducción............................................................................................................8
3.2. Historia.....................................................................................................................8
3.3. Uso y Beneficios.......................................................................................................9
3.4. Estructura /Sintaxis..................................................................................................9
3.5. Conclusión.............................................................................................................15
3.6. Referencias............................................................................................................15
MÉTODOS CONCURRENTES: PROCESO DE COMUNICACIÓN SECUENCIAL
1. INTRODUCCION.
Existen varios aspectos en nuestro mundo inherentemente distribuido que hacen necesaria la programación concurrente.
En primera instancia es más fácil modelar de una manera concurrente un sistema del mismo tipo, que hacerlo encajar dentro del paradigma secuencial que de ninguna manera esquematiza el comportamiento de ese sistema.
La P.C. permite que los sistemas sean más fácilmente escalables debido a la modularidad de su desarrollo y que también estos pueden ser mucho más eficientes debido a que permiten la ejecución en paralelo de múltiples instrucciones.
La P.C. es usada para modelar y simular sistemas físicos, inclusive si esos sistemas no están controlados directamente por un computador. La P.C. brinda una forma natural de asignar segmentos del programa para representar objetos físicos y por eso ayuda mucho a representar simulaciones.
Concurrencia: Tópico avanzado mucho más difícil que la programación serial.
a) Es la propiedad de los sistemas en la cual varios cálculos se ejecutan simultáneamente, e interactúan entre ellos.
b) Se han desarrollado diversos modelos matemáticos para los cálculos concurrentes incluyendo: Redes de Petri, Cálculo de procesos, el modelo de Maquina de acceso aleatorio, Modelo Actor, etc.
c) Es la simultaneidad en la ejecución de múltiples tareas interactivas. Estas tareas pueden ser un conjunto de procesos o hilos de ejecución creados por un único programa.
2. COMUNICACIÓN SECUENCIAL DE PROCESOS (CSP)
Fue descrito por primera vez en un documento presentado por Hoare en la década de los 70.
En ciencias de la computación, CSP es un lenguaje formal para describir patrones de interacción en sistemas concurrentes.
2.1. Historia
Publicado en 1985, CSP es un lenguaje desarrollado por Hoare que lleva a cuestas de su propio sistema de lógica explícitamente para su uso en sistemas con muchos procesos activos en un único sistema o sistemas múltiples que interactúan entre sí.
En mayo de 2005, el libro de Hoare sobre el tema seguía siendo la tercera más citada referencia en ciencias de la computación de todos los tiempos.
La versión teórica de CSP se presentó en el libro Comunicación de procesos secuenciales, que Hoare publicó en 1985.
La Teoría de la CSP ha sido objeto de algunos cambios menores desde la publicación del libro de Hoare.
La mayoría de estos cambios fueron motivados por la llegada de las herramientas automatizadas para el análisis de procesos CSP y verificación.
2.2. 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.
Ilustración 1. Tony Hoare
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.
En CSP, los procesos y eventos son las nociones centrales Todos los procesos en CSP son secuenciales a pesar de que el
lenguaje fue diseñado para estudiar el problema de la concurrencia.
Es difícil decir si CSP es un lenguaje tipado o no.
2.3. Aplicaciones
Una primera e importante aplicación de CSP fue su uso para la especificación y verificación de los elementos del IN-MOS T9000.
Es aplicado en la verificación de protocolos de seguridad y comunicaciones.
Se aplica en la verificación y especificación en un sistema de comercio electrónico.
2.4. Primitivas
a) Eventos: Éstos representan comunicaciones o interacciones. Se asume que son indivisibles e instantáneos. Pueden ser :
Nombres atómicos (por ejemplo on, off) Nombres compuestos (valve.open, valve.close) Eventos de entrada/salida (por ejemplo mouse?xy, screen!
bitmap).b) Procesos primitivos: Éstos representan comportamientos fundamentales.
STOP: El proceso que no comunica nada, también llamado DEADLOCK.
SKIP: El cual representa terminación exitosa.
2.5. Operaciones Algebraicas
a) Prefijo: Este operador combina un evento y un proceso para producir un nuevo proceso.
b) Elección Externa: Este operador permite que un proceso sea definido como una elección entre dos procesos componentes y permite al entorno resolver esta elección, comunicando un evento inicial para uno de los procesos.
(a→P)□(b→Q)
c) Elección Interna: Este operador permite que un proceso sea definido como una elección entre dos procesos componentes, pero no permite a su entorno elegir qué proceso. Por ejemplo,
(a→P)⊓(b→Q)
d) Intercalado: Este operador representa actividades concurrentes completamente independientes.
P∨¿∨Q
e) Interfaz Paralela: Este operador representa actividades concurrentes que requieren sincronización entre los procesos componentes. Cualquier evento en el conjunto interfaz solo puede ocurrir cuando todos los procesos componentes son capaces de llamar a ese evento.
P|[ {a } ]|Q
f) Ocultamiento : Este operador provee una forma de abstraer procesos, haciendo que algunos eventos sean inobservables.
(a→P )¿ a}¿
a→P
2.6. Ventajas
I. Posee una semántica sencilla y por ende su facilidad de aplicar.II. Su kernel es liviano mejorando así el rendimiento de las máquinas.
III. El enfoque de sincronización que utiliza CSP es el de rende Vuez, que no permite que un proceso escriba si al mismo tiempo el otro proceso está haciendo un leer y viceversa.
3. OCCAM (A CONCURRENT PROGRAMMING LANGUAGE)
3.1. Introducción
Proviene del nombre de filósofo Guillermo de Ockham, Inglaterra y su ley (más tarde) llamado la navaja de Occam
El procesamiento se realiza a través de la comunicación en serie (byte por byte de decodificación)
Una CPU usada para realizar operaciones secuenciales que necesitan para ser ejecutado con el fin.
El procesamiento paralelo / concurrente requiere un desglose de un problema, lo que requiere más recursos.
3.2. Historiao David May fue el arquitecto principal trabajando con un equipo de
INMOS
o Informático
o Trabajó en Bristol como Arquitecto del INMOS Transputer
o Inspirado y motivado por Tony (C.A.R.) Hoare
Ilustración 2. David May
3.3. Uso y Beneficios
Occam es un lenguaje procedimental imprescindible.
Lo que significa que está estructurado para tomar declaraciones secuencialmente (uno tras otro) y también tiene la capacidad de almacenar procedimientos (o funciones) que pueden ser llamados en cualquier momento.
Visto como el lenguaje ensamblador para el Transputer.
3.4. Estructura /Sintaxis
3.4.1. Lenguaje OCCAM
Hay 5 acciones primitivas de Occam:
• (:=) Asignación - asigna la variable el valor de la expresión
• (CH) Recibir - recibe un valor de un canal
• (CH)Enviar - envía valor de expresión en un canal
• SKIP - No hacer nada y poner fin a la declaración (sin operación)
• STOP - No hacer nada y nunca terminar la declaración (nunca llegar a la siguiente declaración)
• El "!" Y "?" Símbolos vienen directamente de la notación utilizada en CSP de Hoare
PRIMITIIVA SINTAXIS EJEMPLOassignment <variable> := <expression> x := y + 1
receive <channel> ? <variable> Ch ? x
send <channel> ! <expression> Ch ! y + 1
SKIP SKIP SKIP
STOP STOP STOP
Ilustración 3. Lenguaje OCCAM
3.4.2. Precedencia
En Occam, no hay precedencia de operadores. Los Paréntesis deben ser utilizados para especificar el orden de operación.
x := 2 * y + 1 -- incorrecto!
x := (2 * y) + 1 -- correcta aplicación
3.4.3. Declaración de Variables
Las declaraciones están en la forma:
<tipo> <uno o más identificadores>
Los tipos de variables disponibles son:
INT - para los números enteros BOOL - para Booleanos BYTE - de carácter REAL32 - para reales de 32 bits REAL64 - para reales de 64 bits CHAN para los canales
Ejemplos:
INT x, y:
CHAN q:
La única estructura que dispone de datos en Occam son matrices:
VAL n IS 100: -- declarando n como una constante
[n][n] INT a: -- array “a” de 2 dimensiones
3.4.4. Constructores y SEQ
En Occam, los constructores son un conjunto de palabras clave se aplica a un conjunto de estados, de forma similar a las palabras clave: begin-end utilizados en Pascal.
SEQ es un constructor que ejecuta un conjunto de instrucciones en un orden secuencial.
SEQ a := 3 b := a + 5 c := a – 5
3.4.5.PAR
PAR, abreviatura de forma paralela, se utiliza para ejecutar varias sentencias o procesos al mismo tiempo.
PAR
INT x:
ch1 ? x -- recibir de canal ch1
INT y:
ch2 ? y -- recibir de canal ch2
3.4.6. If y While
SEQ a := 3 b := a + 5 c := a – 5
WHILE i < 10 i := i + 1
IF
a > b
c := 3
a < b
c := 4
TRUE
SKIP
3.4.7. ALT
ALT, abreviatura de alternativa, es la implementación de Occam de comandos de guardia de Dijkstra.
Aleatoriamente selecciona una verdadera guardia y ejecuta su declaración. Si no hay guardias que son verdaderas, entonces se espera a que uno sea verdadero.
3.4.8. PROC
PROC, cortos de proceso, los nombres de proceso y uno permite que las variables que se deben pasar por valor o por referencia.
No se permite la recursividad.
ALT ch1 ? x A[1] := x ch2 ? x A[2] := x time ? AFTER begin.time + (10 * sec) SKIP
PROC buff(CHAN OF BYTE in, out) WHILE TRUE BYTE x: SEQ in ? x out ! x: -- fin del buff CHAN OF BYTE comms, buffer.in, buffer.out: PAR buff(buffer.in, comms) buff(comms, buffer.out)
3.4.9. Ejemplos
Tiempo de retardo
Productor/Consumidor
PROC delay(VAL INT us) TIMER Tim: INT t: SEQ Tim ? t t := t PLUS us Tim ? AFTER t
:
PROC consumer (CHAN INT in?)
WHILE TRUE
INT v:
SEQ
in ? v
-- hacer algo con `v‘
:
PROC network ()
CHAN INT c:
PAR
producer (c!)
consumer (c?)
:
PROC producer (CHAN INT out!)
INT x:
SEQ
x := 0
WHILE TRUE
SEQ
out ! x
Secuencia de Fibonacci
PROC Fibonacci(VAL INT num, CHAN BYTE scr!)
INT prev:
INT curr:
INT i:
INT temp:
SEQ
prev := 0
curr := 1s
SEQ i = 0 FOR num
out.int(prev, 0, scr)
out.string(“ “, 0, scr)
temp := prev + curr
prev := curr
curr := temp
:
3.5. Conclusión
Occam ayudó a innovar y ser pioneros de la aplicación de la programación concurrente.
Proporciona un enfoque fundamental y simple de procesamiento paralelo. Estructura simple (inspirado en lenguajes de programación anteriores)
ayudó a hacer que sea fácil de entender.
3.6. Referencias
1. Hyde, Daniel C. “Introduction to the Programming Language Occam. (20 Mar. 1995). Bucknell University. Web. 5 Nov. 2012.
<http://www.eg.bucknell.edu/~cs366/occam.pdf>.
2.
Christian L. Jacobsen, Matthew C. Jadud, towards concrete concurrency: occam-pi on the LEGO mindstorms, Proceedings of the 36th SIGCSE technical symposium on Computer science education. (February 23-27, 2005). St. Louis, Missouri, USA [doi>10.1145/1047344.1047485]
3. SGS-THOMSON, Occam 2.1 REFERENCE MANUAL, (1988). SGS-THOMSON Microelectronics Limited 1995. Web. 5 Nov. 2012.
<http :// www.wotug.org/occam/documentation/oc21refman.pdf