Professional Documents
Culture Documents
Multiprogramacin
No hay paralelismo. Los procesos se reparten el procesador: entrelazado (interleaving) Quin planifica los procesos?
el sistema operativo el propio ejecutable (gracias al compilador) -> runtime
scheduler (RTSS)
SistemasConcurrentes
Planificadores
Nuestro programa se ejecutar de manera diferente segn la poltica de planificacin empleada. Algunos programas funcionarn adecuadamente con un planificador, pero con otros pueden fracasar.
SistemasConcurrentes
Grano fino --> grano grueso Cada grano propicia unas herramientas y tcnicas de programacin diferentes
SistemasConcurrentes
Abstraccin de la concurrencia
Nuestro programa expresa acciones concurrentes (procesos o hilos), pero stas no tienen por qu ejecutarse en paralelo. Cada proceso concurrente se ejecuta sobre un procesador virtual. El compilador y el s.o. sern responsables de ejecutar nuestros procesos como consideren ms oportuno.
SistemasConcurrentes
Procesadores 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. Nos deben dar igual las velocidades relativas de los procesadores virtuales.
SistemasConcurrentes
SistemasConcurrentes
No determinismo
Un programa secuencial es determinista:
si se le presenta el mismo conjunto de datos de entrada, siempre producir la misma salida.
SistemasConcurrentes
No determinismo
El no determinismo es una propiedad inherente a la concurrencia. Por culpa del no determinismo, es ms difcil analizar y verificar un algoritmo concurrente. Ojo, que existan varias posibilidades de salida NO significa necesariamente que un programa concurrente sea incorrecto.
SistemasConcurrentes
Acciones atmicas
Por culpa del no determinismo, la ejecucin del programa puede ser incorrecta e inesperada.
cobegin x := 2; x := 65536; coend;
Surge la conveniencia de imponer que ciertas piezas de cdigo se ejecuten de forma atmica.
SistemasConcurrentes
As se facilita el anlisis y verificacin de estos algoritmos. No nos incumbe (por ahora) cmo se consigue la ejecucin atmica.
SistemasConcurrentes
Verificacin de programas
Cundo un programa (secuencial) se considera correcto?
Parcialmente correcto. Dadas unas precondiciones correctas, si el programa termina se cumplen las postcondiciones previstas. Totalmente correcto. Dadas unas precondiciones correctas, el programa termina y se cumplen las postcondiciones.
SistemasConcurrentes
SistemasConcurrentes
SistemasConcurrentes
SistemasConcurrentes