Title: Sistemas Concurrentes: caractersticas de los programas concurrentes
1Sistemas ConcurrentescaracterÃsticas de los
programas concurrentes
- I.T. Informática de Sistemas
2Contenidos
- 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)
3BibliografÃ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
4Modelo 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.
5Historias / 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
- ...
6Orden 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.
7No 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.
8No 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
9No 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.
10No 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?
11Acciones 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
12Acciones 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.
13Verificació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.
14Verificació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.
15Peculiaridades 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.
16Seguridad 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
17Ejemplos 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.
18Aná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
- ...