Sistemas Concurrentes: caractersticas de los programas concurrentes - PowerPoint PPT Presentation

1 / 18
About This Presentation
Title:

Sistemas Concurrentes: caractersticas de los programas concurrentes

Description:

Dadas dos instrucciones A y B, sabemos que siempre A se ejecuta antes que B, o B ... Dadas unas precondiciones correctas, el programa termina y se cumplen las ... – PowerPoint PPT presentation

Number of Views:406
Avg rating:3.0/5.0
Slides: 19
Provided by: josmi2
Category:

less

Transcript and Presenter's Notes

Title: Sistemas Concurrentes: caractersticas de los programas concurrentes


1
Sistemas Concurrentescaracterísticas de los
programas concurrentes
  • I.T. Informática de Sistemas

2
Contenidos
  • Modelo abstracto del sistema concurrente
  • No determinismo de la concurrencia
  • Acciones atómicas
  • Verificación de programas concurrentes
  • Propiedades de seguridad y progreso (safety,
    liveness)

3
Bibliografía
  • Principles of Concurrent and Distributed
    Programming
  • M. Ben-Ari. Prentice Hall, 1990
  • Capítulos 1 y 2
  • Programación Concurrente
  • J. Palma et al. Thomson, 2003
  • Capítulo 1
  • Concurrent Programming
  • A. Burns, G. Davis. Addison-Wesley, 1993
  • Capítulo 1

4
Modelo de ejecuciónprocesadores virtuales
  • Supondremos que nuestro programa concurrente
    consiste en un conjunto de procesos secuenciales
    que se ejecutan en paralelo, cada uno de ellos
    corriendo sobre un procesador virtual.
  • No podemos presuponer nada sobre las velocidades
    relativas de los procesadores virtuales, ni sobre
    el ritmo de ejecución de las instrucciones.

5
Historias / secuencias de ejecución
  • Una historia o la secuencia de ejecución es una
    secuencia temporal de acciones que ocurren
    durante la ejecución de un programa.
  • Un programa concurrente puede tener múltiples
    historias de ejecución (y todas ellas pueden ser
    correctas)
  • a ? b ? c
  • c ? a ? b
  • ...

6
Orden de ejecución de las instrucciones
  • La programación secuencial define un orden total
    de las instrucciones.
  • Dadas dos instrucciones A y B, sabemos que
    siempre A se ejecuta antes que B, o B se ejecuta
    antes que A.
  • Un programa concurrente define un orden parcial
    de ejecución.
  • Existen parejas de instrucciones A y B sobre las
    que no podemos afirmar ninguna dependencia.

7
No determinismo
  • Un programa secuencial es determinista
  • Si se le presenta el mismo conjunto de datos de
    entrada, siempre producirá la misma salida.
  • Sólo hay una historia correcta de ejecución
  • Un programa concurrente esno determinista
  • Un mismo conjunto de datos de entrada puede
    producir diferentes datos de salida, según el
    orden de ejecución de los procesos.
  • Puede haber muchas historias correctas de
    ejecución.

8
No determinismo ejemplo
  • x,y integer 0
  • cobegin
  • x 5
  • if x 0 then
  • y 1
  • else
  • y 2
  • end if
  • x x 1
  • coend
  • Cuáles son los valores finales de x,y?

a
b
c
d
e
9
No determinismo
  • El no determinismo es una propiedad inherente a
    la concurrencia.
  • A causa del no determinismo, es más difícil
    analizar y verificar un algoritmo concurrente.
  • Ojo, que existan varias posibilidades de salida
    NO significa necesariamente que un programa
    concurrente sea incorrecto.

10
No determinismo ejemplo
  • Saldo_Cuenta Money 2000.0
  • cobegin
  • -- un proceso hace un ingreso
  • Saldo_Cuenta Saldo_Cuenta 1000.0
  • -- un proceso hace un reintegro
  • Saldo_Cuenta Saldo_Cuenta 1000.0
  • coend
  • Cuál es el valor final de Saldo_Cuenta?
  • Cuál debería ser?

11
Acciones atómicas (1)
  • Por culpa del no determinismo, la ejecución del
    programa puede ser incorrecta, inesperada y
    sorprendente.
  • Surge la necesidad de imponer que ciertas piezas
    de código se ejecuten de forma atómica
    (indivisible).

el resultado podría ser x65538!!
cobegin x 2 x 65536 coend
12
Acciones atómicas (2)
  • En el análisis de algoritmos concurrentes, se
    permite declarar que una sentencia se ejecuta de
    forma atómica.
  • cobegin ltxx1gt ltxx2gt coend
  • Así se facilita el análisis y verificación de
    estos algoritmos.
  • En algunos lenguajes (Java) se garantiza la
    ejecución atómica de las sentencias simples.

13
Verificación de programas secuenciales
  • En el análisis de algoritmos secuenciales,
    utilizamos estos conceptos
  • Precondiciones ? predicados que deberían ser
    ciertos antes de ejecutar el algoritmo
  • Postcondiciones ? predicados que deben ser
    ciertos si se cumplen las precondiciones y el
    algoritmo finaliza correctamente
  • Invariantes ? en general, predicados que deben
    mantenerse ciertos dentro de una clase, un bucle,
    etc.

14
Verificación de programas secuenciales
  • Cuándo un programa (secuencial) se considera
    correcto?
  • Totalmente correcto. Dadas unas precondiciones
    correctas, el programa termina y se cumplen las
    postcondiciones.
  • Parcialmente correcto. Dadas unas precondiciones
    correctas, si el programa termina se cumplen las
    postcondiciones previstas.

15
Peculiaridades de los programas concurrentes
  • Los programas concurrentes pueden no terminar
    nunca y al mismo tiempo ser correctos.
  • Ej. un módulo de sistema operativo (gestor de
    cola de impresión)
  • Un pr.c. puede tener múltiples historias de
    ejecución.
  • Cuando se dice que un pr.c. es correcto, se
    entiende que se refiere a todas sus posibles
    secuencias de ejecución.

16
Seguridad y progreso(safety and liveness)
  • Dos tipos de propiedades útiles en los sistemas
    concurrentes
  • Propiedades de seguridad (safety)
  • Un invariante que debe ser cierto siempre
  • ejs. exclusión mutua, no interbloqueo
  • Propiedades de progreso (liveness)
  • una propiedad que se cumplirá con toda seguridad
    en algún momento futuro
  • ejs. propiedades de justicia (fairness), no
    inanición

17
Ejemplos de justicia (fairness)
  • Justicia débil. Si un proceso realiza
    continuamente una petición, terminará siendo
    atendido.
  • Justicia fuerte. Si un proceso realiza una
    petición con frecuencia infinita, terminará
    siendo atendido.
  • Espera lineal. Si un proceso realiza una
    petición, ningún otro proceso puede ser atendido
    dos veces antes que él.
  • Espera FIFO. Si un proceso realiza una petición,
    será atendido antes que cualquier otra solicitud
    posterior.

18
Análisis de algoritmos concurrentes
  • Usar invariantes y lógica proposicional
  • Usar métodos inductivos
  • Usar historias de ejecución (a-gtb)
  • Usar predicados posicionales at(I), in(I),
    after(I)
  • Usar lógica temporal
  • ...
Write a Comment
User Comments (0)
About PowerShow.com