proceso de comunicacion secuencial

18
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, ANGELICA o CAPA SIXE, JORDAN o GAVIDIA MEZA ALEXIS o GUZMAN CHUMAN, JOSE o PEREDA PURIZAGA, JANN CICLO : VIII

Upload: jose-guzman-chuman

Post on 18-Feb-2016

182 views

Category:

Documents


1 download

DESCRIPTION

Existen varios aspectos en nuestro mundo inherentemente distribuido que hacen necesaria la programación concurrente.

TRANSCRIPT

Page 1: Proceso de Comunicacion Secuencial

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

Page 2: Proceso de Comunicacion Secuencial

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

Page 3: Proceso de Comunicacion Secuencial

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.

Page 4: Proceso de Comunicacion Secuencial

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

Page 5: Proceso de Comunicacion Secuencial

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

Page 6: Proceso de Comunicacion Secuencial

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

Page 7: Proceso de Comunicacion Secuencial

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.

Page 8: Proceso de Comunicacion Secuencial

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

Page 9: Proceso de Comunicacion Secuencial

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

Page 10: Proceso de Comunicacion Secuencial

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

Page 11: Proceso de Comunicacion Secuencial

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

Page 12: Proceso de Comunicacion Secuencial

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)

Page 13: Proceso de Comunicacion Secuencial

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

Page 14: Proceso de Comunicacion Secuencial

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

:

Page 15: Proceso de Comunicacion Secuencial

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