UNIDAD 2 ESPECIFICACIÓN FORMAL DE SISTEMAS CONCURRENTES

Documentos relacionados
CAPÍTULO 1. CONCEPTOS FUNDAMENTALES

Tema 3: Concurrencia de procesos

Técnicas de Programación Concurrente I Primeros temas a considerar.

La Máquina de Acceso Aleatorio (Random Access Machine)

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

APUNTES DE FUNDAMENTOS DE MATEMATICA. CASO I: Cuando todos los términos de un polinomio tienen un factor común.

Programación concurrente

Estructuras de control

Estructuras de Control

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Relaciones. Estructuras Discretas. Relaciones. Relaciones en un Conjunto. Propiedades de Relaciones en A Reflexividad

Usando el Sistema Operativo

Guía práctica de estudio 05: Diagramas de flujo

Álgebra y Trigonometría Clase 7 Sistemas de ecuaciones, Matrices y Determinantes

la solución a una ecuación cuadrática solicitando al usuario los términos de dicha ecuación.

1. Coordenadas en el plano. (Sistema de coordenadas, ejes de coordenadas, abcisas, ordenadas, cuadrantes)

Transacciones. M. Andrea Rodríguez-Tastets. II Semestre Universidad de Concepción,Chile andrea

Es un conjunto de objetos llamados vértices o nodos unidos por enlaces llamados aristas o arcos, que permiten representar relaciones binarias entre

INGENIERÍA DEL SOFTWARE I Práctica 5 Modelado de Diseño

Factorización de Polinomios con Coeficientes Enteros

PROGRAMACION CONCURRENTE. I.2 Recursos para la concurrencia.

Tema 3: El Método Simplex. Algoritmo de las Dos Fases.

Exterior del algoritmo. Entorno. Usuario. Procesador. Escribir. v1 v2 v3. Leer. <acción> {; <acción>}

RECONOCER EL GRADO, EL TÉRMINO Y LOS COEFICIENTES DE UN POLINOMIO

LEX. Las definiciones y subrutinas son opcionales. El segundo %% es opcional pero el primer %% indica el comienzo de las reglas.

Circuitos con fuentes independientes de corriente y resistencias, circuitos R, I

GRAMATICAS LIBRES DEL CONTEXTO

Diagrama de Actividades. Fuente: Profesor Guillermo Bustos.

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Cristian Blanco

Tema 1. Introducción a la arquitectura de computadores: diseño, coste y rendimiento

PRODUCTOS NOTABLES: son aquellas multiplicaciones algebraicas

Algebra lineal y conjuntos convexos

Convertir un AFND a un AFD

PROGRAMACIÓN. UNIDAD II. ALGORITMO PROFA : HAU MOY

Matemáticas Discretas TC1003

1. Halla la ecuación de la recta r, sabiendo que pasa por A(1,-2) y B(-1,2)

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

4 Ecuaciones diferenciales de orden superior

2.2 Rectas en el plano

OPTIMIZACIÓN DE CÓDIGO

Inicio del programa. Entrada de datos. Proceso de datos. Salida de datos. Fin del programa

Universidad de Cantabria. Facultad de Ciencias Ingeniería en Informática. Ingeniería del Software II

Electrotécnica 1 Práctico 1

Capítulo 6. Relaciones. Continuar

Guía práctica de estudio 03: Algoritmos

Estructuras de Control. Secuencia y Selección

Expresiones Aritméticas. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz

SUBPROGRAMAS PL/SQL César Martínez C. Profesor Instructor de Base de Datos Sede Puente Alto DUOC

CONTENIDO 1 Diagrama de flujo 2 Pseudocodigo 3 Diagrama estructurado (nassi-schneiderman)

Nombres de archivo. Sistemas Operativos III - ETB EMT - CETP

Procesadores de Lenguaje

[ GUÍA DIDÁCTICA: DESARROLLO DE ALGORITMOS PSEINT] 11 de julio de 2013

Álgebra Lineal Ma1010

Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto Segundo Cuatrimestre de 2002

Estructuras en LabVIEW.

Requerimientos de Software

Manual de turbo pascal

Teoría de grafos y optimización en redes

Profesor(a): M. A. Zeferino Galarza Hernández

TEMA 1. MATRICES, DETERMINANTES Y APLICACIÓN DE LOS DETERMINANTES. CONCEPTO DE MATRIZ. LA MATRIZ COMO EXPRESIÓN DE TABLAS Y GRAFOS.

Manipulación de procesos

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

LICEO MARTA DONOSO ESPEJO

DIAGRAMAS DE ACTIVIDAD SESION 9. Cap. 9 Kendall & Kendall Cap 5 Jacobson

Lenguajes Regulares. Antonio Falcó. - p. 1

( x) Coordinación de Nivel Curso: 2º Medio Profesora: María Victoria Torres M. Guía de Repaso Evaluación Global Primer Semestre. Nombre: Fecha: 2011

COMANDOS EN LENGUAJE DE PROGRAMACIÓN BASIC

Enteros. Son los números que no contienen componentes fraccionarios y, por tanto, no contienen punto decimal.

Lenguajes, Gramáticas y Autómatas Conceptos

Tema 2 Introducción a la Programación en C.

XQuery. Un lenguaje de consulta para XML.

Contenido: 1. Definición y clasificación. Polinomios.

Memoria. Organización de memorias estáticas.

MÉTODOS DE ANÁLISIS DE CIRCUITOS. Mg. Amancio R. Rojas Flores

Algoritmos y solución de problemas. Fundamentos de Programación Otoño 2008 Mtro. Luis Eduardo Pérez Bernal

Un. VI. Generador de código intermedio.

Aula Virtual Análisis de Circuitos D.C. Facultad Tecnológica Universidad Distrital Francisco José de Caldas.

CICLOS DEL PROCESADOR

Algoritmos. Diagramas de Flujo. Informática IV. L. S. C. Heriberto Sánchez Costeira

Distancia Mapa. Distancia Real. Escala mediana: 1:250,000 a 1: 1,000,000 Escala pequeña: 1:1,000,,000 o > Más área Menos detalle

DESARROLLO D) 4. para a = 1 y b = 2 (a 2 + b 2 )(2a 3b 2 ) es:

PROBLEMAS RESUELTOS DE PREPARACIÓN PARA OPOSICIONES. Problemas 02

Aplicaciones Concurrentes

Clase 4 Funciones polinomiales y racionales

Estatutos de Control C# Estatutos de Decisión (Selección)

Tema 4. Probabilidad Condicionada

May 4, 2012 CAPÍTULO 5: OPTIMIZACIÓN

ESTRUCTURAS REPETITIVAS EN PHP

LABORATORIO TIC 2 Primer Parcial Etapas 1 y 2.

VARIABLE COMPLEJA Y ANÁLISIS FUNCIONAL

UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO

UNIDAD 2 RELACIONES Y FUNCIONES

Jerarquía de memoria - Motivación

TEMA 11. VECTORES EN EL ESPACIO

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

1. Lección 9 - Continuidad y Derivabilidad

José de Jesús Ángel Ángel, c Factorización

APUNTES ACERCA DE LA ECUACIÓN DE LA RECTA

Transcripción:

UNIDAD 2 ESPECIFICACIÓN FORMAL DE SISTEMAS CONCURRENTES

Sentencias Concurrentes Ahora es necesario, dado un programa concurrente, saber que secciones del código son concurrentes y cuáles no, además es indispensable especificarlo en un lenguaje de programación. No todas las sentencias son concurrentes, consideremos el siguiente fragmento del programa: S1: S2: x:=x+1 y:=x+2 En este caso las instrucciones no pueden ejecutarse de forma independiente.

Sentencias Concurrentes Consideremos ahora: x:=1 y:=2 z:=3 Cada una de las sentencias se pueden ejecutar concurrentemente puesto que el orden en que se ejecuten no afecta el resultado final. Si se tuvieran 3 procesadores en cada uno se colocaría cada instrucción. Aunque la intuición nos indique cuando ejecutar concurrentemente Bernstein definió condiciones para garantizar la concurrencia.

Condiciones de Bernstein Para determinar si dos conjuntos de instrucciones se pueden ejecutar de forma concurrente se definen: L(S k )={a 1,a 2,,a n } conjunto de lectura del conjunto de instrucciones S k, formado por todas las variables cuyos valores son leídos (referenciados) durante la ejecución de las instrucciones en S k. E(S k ) ={b 1,b 2,,b n } conjunto de escritura del conjunto de instrucciones S k, formado por todas las variables cuyos valores son actualizados (se escriben) durante la ejecución de las instrucciones en S k.

Condiciones de Bernstein Para que dos conjuntos de instrucciones S i y S j, i j, i<j se puedan ejecutar concurrentemente se tiene que cumplir que: 1. L(S i ) E(S j )= 2. E(S i ) L(S j )= 3. E(S i ) E(S j )=

Ejemplo de Condiciones de Bernstein Sean: S 1 a:=x+y; S 2 b:=z-1; S 3 c:=a-b; S 4 w:=c+1; Se calculan los conjuntos de lectura y escritura L(S 1 )={x,y} E(S 1 )={a} L(S 2 )={z} E(S 2 )={b} L(S 3 )={a,b} E(S 3 )={c} L(S 4 )={c} E(S 4 )={w}

Ejemplo de Condiciones de Bernstein Sean: L(S 1 )={x,y} 2.Aplicando las condiciones de Bernstein Entre S 1 y S 2 E(S 1 )={a} 1. L(S 1 ) E(S 2 )= 2. E(S L(S 2 )={z} 1 ) L(S 2 )= 3. E(S E(S 2 )={b} 1 ) E(S 2 )= L(S 3 )={a,b} E(S 3 )={c} L(S 4 )={c} E(S 4 )={w} Entre S 1 y S 3 1. L(S 1 ) E(S 3 )= 2. E(S 1 ) L(S 3 )={ a } 3. E(S 1 ) E(S 3 )= Entre S 1 y S 4 1. L(S 1 ) E(S 4 )= 2. E(S 1 ) L(S 4 )= 3. E(S 1 ) E(S 4 )=

Ejemplo de Condiciones de Bernstein Sean: L(S 1 )={x,y} E(S 1 )={a} L(S 2 )={z} E(S 2 )={b} L(S 3 )={a,b} E(S 3 )={c} L(S 4 )={c} E(S 4 )={w} 2.Aplicando las condiciones de Bernstein Entre S 2 y S 3 1. L(S 2 ) E(S 3 )= 2. E(S 2 ) L(S 3 )={ b } 3. E(S 2 ) E(S 3 )= Entre S 2 y S 4 1. L(S 2 ) E(S 4 )= 2. E(S 2 ) L(S 4 )= 3. E(S 2 ) E(S 4 )= Entre S 3 y S 4 1. L(S 3 ) E(S 4 )= 2. E(S 3 ) L(S 4 )={ c } 3. E(S 3 ) E(S 4 )=

Tabla resultante al aplicar las condiciones de Bernstein En este caso se indica que sentencias se pueden ejecutar concurrentemente y cuales no S 1 S 2 S 3 S 4 S 1 ---- Si No Si S 2 ---- ---- No Si S 3 ---- ---- ---- No S 4 ---- ---- ---- ----

Especificación concurrente Existen dos formas de realizar la especificación concurrente: Grafo de precedencia Sentencias cobegin-coend

Grafos de precedencia Es una notación gráfica. Se representa como un grafo dirigido acíclico. Cada nodo representa una parte del sistema (conjunto de instrucciones). Una flecha desde A hasta B representa que B sólo se puede ejecutar cuando A haya finalizado. Si aparecen dos nodos en paralelo, significa que se pueden ejecutar concurrentemente.

Ejemplo de grafo de precedencia S1 S2 S3 S4 S1 ---- Si No Si S2 ---- ---- No Si S1 S2 S3 ---- ---- ---- No S3 S4 ---- ---- ---- ---- S1a:=x+y; S2b:=z-1; S3c:=a-b; S4w:=c+1; S3 S4

Sentencias COBEGIN-COEND Aquellas instrucciones que puedan ejecutarse concurrentemente se introducen entre el par cobegin/coend. Las instrucciones en el bloque pueden ejecutarse en cualquier orden, el resto de manera secuencial. Ejemplo: S 1 a:=x+y; S 2 b:=z-1; S 3 c:=a-b; S 4 w:=c+1; Begin cobegin a:=x+y b:=z-1 coend c:=a-b; w:=c+1; end

Ejercicios 1. Construir un programa concurrente, utilizando el par cobegin / coend, del siguiente grafo de precedencia.

Solución S1; Cobegin S3 begin S2; S4 Cobegin S5; S6; Coend; end; Coend; S7;

Ejercicio Dato el siguiente código obtener el grafo de precedencia S0; Cobegin S1; Begin S2; Cobegin S3; S4 Coend; S5 End; S6 Coend; S7

Solución S0; Cobegin S1; Begin S2; Cobegin S3; S4 Coend; S5 End; S6 Coend; S7

Paralelo Cobegin P1 P2 P3 P4 Coend

Serie/Paralelo Begin End P1 Cobegin P6 Begin End Coend P7 Cobegin P2 P3 Coend P4

Ejercicio Construir dos programas concurrentes, usando cobegin/coend, que correspondan con los siguientes grafos de precedencia.

Ejercicio Usando las condiciones de Bernstein, construir el grafo de precedencia del siguiente código y el programa concurrente correspondiente usando el par cobegin/coend. S1: cuad:= x*x; S2: m1:= a*cuad; S3: m2:= b*x; S4: z:= m1 + m2; S5: y:= z + c;

Fork y Join Fork y Join tienen dos funciones Fork(label L), y join(int x) Fork(label L) produce dos ejecuciones concurrentes. Una inicia inmediatamente despues de la instrucción fork, y la otra en la label L. Esto tiene los efectos de dividir una ejecución de un proceso en dos procesos concurrentes. Join(int x) combina x procesos en 1.

Ejercicio Modele el siguiente grafo usando fork-join

Solución

Ejercicio