Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
PROGRAMACION CONCURRENTE
-
Upload
percy-javier-flores-mamani -
Category
Documents
-
view
15.935 -
download
0
Transcript of PROGRAMACION CONCURRENTE
![Page 1: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/1.jpg)
PROGRAMACION PROGRAMACION CONCURRENTECONCURRENTE
• La programación concurrente 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. Las tareas se pueden ejecutar en un sola UCP (multiprogramación), en varios procesadores o en una red de computadores distribuidos. La programación concurrente está relacionada con la programación paralela, pero enfatiza más la interacción entre tareas. Así, la correcta secuencia de interacciones o comunicaciones entre los procesos y el acceso coordinado de recursos que se comparten por todos los procesos o tareas son las claves de esta disciplina.
![Page 2: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/2.jpg)
Multitarea, Multiprogramacion, Multitarea, Multiprogramacion, multiprocesosmultiprocesos
La programacion concurrente tiene capacidad para realziar varias tareas al mismo tiempo o muchas tareas en una sola PC con un procesador o varios.
![Page 3: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/3.jpg)
Multitareas Multitareas
• Es la capacidad de un sistema operativo para ejecutar varios procesos al mismo tiempo corriendo sobre un procesador.
• Con los sistemas operativos DOS esto era incapaz de realizarse.
• Existen varios tipos de multitareas y son :
* Multitarea Nula* Multitarea Cooperativa* Multitarea Preferente* Multitarea Real
![Page 4: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/4.jpg)
Multitarea NulaMultitarea Nula
ES aquel sistema operativo que carece de multitarea. Aún así puede simularla implementándola en un espacio de usuario o usando trucos como los TSR en MS-DOS. Justamente la familia DOS son ejemplos de sistemas operativos de multitarea nula.
![Page 5: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/5.jpg)
Multitarea CooperativaMultitarea Cooperativa• Tipo de multitarea en donde los
procesos de usuario son quieres ceden la CPU al sistema operativo a intervalos regulares.
Es sumamente problemático porque si por algún motivo el proceso de usuario es interrumpido, no cede la CPU al sistema operativo que lo ejecuta y, por lo tanto, quedará trabado (tildado).
Los sistemas operativos Windows antes de la versión 1995 implementaban este tipo de multitarea.
![Page 6: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/6.jpg)
Multitarea PreferenteMultitarea Preferente
Multitarea en donde el SO se encarga de administrar uno o más procesadores, repartiendo el tiempo de uso del mismo entre los distintos procesos que esperan utilizarlo (tareas en ejecución).
En el caso de un solo procesador, cada proceso o tarea lo utiliza en períodos cortísimos de tiempo, lo que, en la práctica, da la sensación de que estuviesen ejecutándose al mismo tiempo.
Los sistemas operativos que utilizan este tipo de multitareas son los UNIX y sus clones (Linux, etc), Windows NT, etc.
![Page 7: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/7.jpg)
Multitarea RealMultitarea Real
Multitarea en donde el SO ejecuta los procesos realmente al mismo tiempo haciendo uso de múltiples procesadores (más de dos).
La ejecución realmente se realiza en distintos procesadores para cada proceso o tarea. Obviamente en el caso de que los procesos o tareas sean más que la cantidad de procesadores, éstos comienzan a ejecutarse en procesadores "en uso" en la forma de multitareas preferente
Todos los sistemas operativos modernos soportan esta capacidad.
![Page 8: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/8.jpg)
Multitarea RealMultitarea Real
![Page 9: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/9.jpg)
Multiprogramacion• MULTIPROGRAMACION Es la técnica que permite que dos o mas
programas ocupen la misma unidad de memoria principal y que sean ejecutados al mismo tiempo.
• La multiprogramación se refiere a dos o mas programas corriendo o procesándose al mismo tiempo; La multiprogramación se controla a través del sistema operativo, el cual observa los programas y los vigila hasta que estén concluidos.
• El numero de programas que pueden multiprogramarse en forma efectiva, depende de una combinación de la cantidad de memoria, de la velocidad de la CPU y del numero y velocidad de los recursos periféricos que tenga conectados, así como de la eficiencia del SISTEMA OPERATIVO.
![Page 10: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/10.jpg)
Principios de ConcurrenciaPrincipios de Concurrencia
• En un sistema multiprogramado con un único procesador, los procesos se intercalan en el tiempo aparentando una ejecución simultánea. Aunque no se logra un procesamiento paralelo y produce una sobrecarga en los intercambios de procesos, la ejecución intercalada produce beneficios en la eficiencia del procesamiento y en la estructuración de los programas.
![Page 11: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/11.jpg)
Principios de ConcurrenciaPrincipios de Concurrencia• La concurrencia es el punto clave en los conceptos de multitarea,
multiprogramación y multiproceso, la concurrencia comprende un gran numero de cuestiones de diseño incluyendo la comunicación entre procesos, la compartición y competencia por los recursos, la sincronización de la ejecución de varios procesos y la asignación del procesador a los procesos, la concurrencia puede presentarse en tres contextos diferentes:
• Varias aplicaciones:• Aplicaciones estructuradas:• Estructura del sistema operativo:
![Page 12: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/12.jpg)
Varias aplicaciones:Varias aplicaciones:
En este caso el tiempo de procesador de una máquina es compartido dinámicamente entre varios trabajos o aplicaciones activas.
![Page 13: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/13.jpg)
Aplicaciones estructuradas:Aplicaciones estructuradas:
Como consecuencia del diseño modular de una aplicación y la división de la misma en tareas explícitas estas pueden ser ejecutadas de forma concurrente.
En programación, un lenguaje estructurado es aquel que soporta la división en bloques (procedimientos y funciones) que pueden o no comunicarse entre sí.
Es contrario a inestructurado, de poco uso, que no tiene ninguna estructura, es simplemente un “bloque”, como por ejemplo, los archivos batch (.bat).
![Page 14: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/14.jpg)
Estructura del sistema operativo:Estructura del sistema operativo:
Como resultado de la aplicación de la estructuración en el diseño del propio SO, de forma que este se implemente como un conjunto de procesos.
![Page 15: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/15.jpg)
LABORES DEL SISTEMA LABORES DEL SISTEMA OPERATIVOOPERATIVO
Elementos de gestión y diseño que surgen por causa de la concurrencia:1) El sistema operativo debe seguir a los distintos procesos activos
2) El sistema operativo debe asignar y retirar los distintos recursos a cada proceso activo, entre estos se incluyen:
_Tiempo de procesador _Memoria
_Archivos _Dispositivos de E/S
3) El sistema operativo debe proteger los datos y los recursos físicos de cada proceso contra injerencias no intencionadas de otros procesos.
4) Los resultados de un proceso deben ser independientes de la velocidad a la que se realiza la ejecución de otros procesos concurrentes.
![Page 16: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/16.jpg)
![Page 17: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/17.jpg)
Puede verse la concurrencia de procesos como una ejecución simultánea de varios procesos. Si tenemos un multiprocesador la concurrencia parece clara, en un momento dado cada procesador ejecuta un proceso.
•Se puede ampliar el concepto de concurrencia si entendemos por procesado concurrente del sistema en conjunto,
•varios procesos se vean en un estado intermedio entre su estado inicial y final. Esta última definición incluye los sistemas multiprogramados de un único procesador que estudiamos en los temas anteriores.
![Page 18: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/18.jpg)
• Cooperación entre Procesos
La velocidad de un proceso depende de la frecuencia de la interrupción asociada a cada uno de ellos que un procesose ejecuta asíncronamente con respecto a otro, es decir,
sus ejecuciones son independientes. Sin embargo, hay ciertos instantes en lo que los procesos deben sincronizar sus actividades. Son estos puntos a partir de los cuales un proceso no puede progresar hasta que otro haya completado algún tipo de actividad
![Page 19: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/19.jpg)
Posibilidad de interaccion de procesos
• Las posibilidadades de interaccion de los procesos pueden clasificarse en funcion del nivel de conocimiento que cada proceso requieren la existencia de los demas.
1. Un proceso no tiene en absoluto conocimiento de la existencia de los demas
1. Que los procesos tengan un conocimiento indirecto de los otros procesos.
1. Tiene lugar cuando los procesos tienen conocimiento directo unos de otros por haber sido diseñados para trabajar
conjuntamente el alguna actividad
![Page 20: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/20.jpg)
Comunicación y sincronisacion de proceso
1. Necesidad de exclusion mutua. Es decir, los procesos deberan acceder de forma exclusiva a ciertos recursos o zonas de memoria considerados como crıticos.
2. Interbloqueos: tienen lugar cuando ninguno de los procesos en competencia puedecontinuar su ejecucion normal por carecer de alguno de los recursos que necesita.
3. 3. ejecucion incompleto: este problema tiene lugar cuando la ejecucion de un proceso quedasiempre pospuesta a favor de algun otro de los procesos en competencia.
![Page 21: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/21.jpg)
Necesidad de sincronizacion de los procesos: region crıtica y
exclusion mutua
• La sincronización entre procesos puede definirse como la necesidad que tienen algunos procesos de bloquearse en determinadas circunstancias y ser despertados cuando ocurren ciertos eventos. Un caso típico que muestra la necesidad de sincronización entre procesos es cuando un proceso inicia una lectura y va a utilizar en la siguiente instrucción la información leída. En este caso el proceso debe esperar a que se termine la operación de Entrada/Salida para continuar.
![Page 23: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/23.jpg)
La exclusión mutua la podríamos definir como una operación de control que permite la coordinación de procesos concurrentes (Comunicación requerida entre dos o mas procesos), y que tiene la capacidad de prohibir a los demás procesos realizar una acción cuando un proceso haya obtenido el permiso.
LA EXCLUSION MUTUA
![Page 24: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/24.jpg)
SOLUCIONES SOFTWARE PARA LA EXCLUSION MUTUA
Soluciones por Software. Una manera es dejar la responsabilidad a los procesos que deseen ejecutar concurrentemente, de esta manera los procesos deben coordinarse unos con otros para cumplir la exclusión mutua sin ayuda alguna, aunque estas soluciones son propensas a errores y a una fuerte carga de proceso (Algunos ejemplos de estas son: Algoritmo de Dekker y Algoritmo de Peterson).
![Page 25: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/25.jpg)
Algoritmo de Dekker
Algoritmo de Peterson
Semáforos
Monitores
Paso de Mensajes
Soluciones Hardware para la exclusión mutua
![Page 26: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/26.jpg)
Algoritmo de Dekker
es un algoritmo de programación concurrente para exclusión mutua, que permite a dos procesos o hilos de ejecusion compartir un recurso sin conflictos. Fue uno de los primeros algoritmos de exclusión mutua inventados, implementado por Edsger Diikstra.
Si ambos procesos intentan acceder a la sección crítica simultáneamente, el algoritmo elige un proceso según una variable turno. Si el otro proceso está ejecutando en su sección crítica, deberá esperar su finalización.
Existen cinco versiones del algoritmo Dekker, teniendo ciertos fallos los primeros cuatro. La versión 5 es la que trabaja más eficientemente, siendo una combinación de la 1 y la 4.
![Page 27: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/27.jpg)
Versión 1: Alternancia estricta. Garantiza la exclusión mutua, pero su desventaja es que acopla los procesos fuertemente, esto significa que los procesos lentos atrasan a los procesos rápidos.
Versión 2: Problema interbloqueo. No existe la alternancia, aunque ambos procesos caen a un mismo estado y nunca salen de ahí. Versión 3: Colisión región crítica no garantiza la exclusión mutua. Este algoritmo no evita que dos procesos puedan acceder al mismo tiempo a la región critica.
Versión 4: Postergación indefinida. Aunque los procesos no están en interbloqueo, un proceso o varios se quedan esperando a que suceda un evento que tal vez nunca suceda.
![Page 28: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/28.jpg)
Peterson desarrolló el primer algoritmo (1981) para dos procesos que fue una simplificación del algoritmo de Dekker para dos procesos. Posteriormente este algoritmo fue generalizado para que funcione para N procesos .En el algoritmo para N procesos las variables c[i] además de valer "verdadero" y "falso", pueden valer "en sección critica" y turno desde 1 hasta N. El procedimiento es una generalización de este .c[i], que es un array y turno, que solo puede valer 1o 2 ..Este algoritmo garantiza la exclusión mutua debido al uso de una variable compartida , turno, que se chequea cada vez.
![Page 29: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/29.jpg)
Inicialmente, c[0]=c[1]= falso, y el valor de turno no tiene relevancia (pero de be ser 0 o 1). Para entrar en la sección crítica, el proceso Pi primero asigna el valor verdadero a c[i] y luego afirma que es el turno del otro proceso para entrar si así lo desea (turno = j). Si ambos procesos tratan de entrar a la vez, se asignará turno como i y j aproximadamente al mismo tiempo. Sólo una de estas asignaciones durará; la otra ocurrirá, pero será reemplazada de inmediato. El valor eventual de turno decide a cuál de los dos procesos se le permitirá entrar primero en su sección crítica.
![Page 30: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/30.jpg)
Los semáforos pueden contemplarse como variables que tienen un valor entero sobre
las que se definen las tres operaciones siguientes:Un semáforo puede inicializarse con un valor no negativo.Un semáforo puede inicializarse con un valor no negativo.La operación WAIT decremento el valor del semáforo. Si el
valor se hace negativo,el proceso que ejecuta WAIT queda bloqueado.
La operación SIGNAL incrementa el valor del semáforo. Si el valor no es positivo,
se desbloquea a un proceso bloqueado previamente por una operación WAIT.
Veamos cual serıa la implementación de un semáforo.
![Page 31: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/31.jpg)
Un monitor es, esencialmente, una colección de datos y de procedimientos para sumanipulación junto con una secuencia de inicialización. Las variables de datos globalesson generalmente privadas al monitor por lo que solo son accesibles a los procedimientosde este. Los procedimientos del monitor podrán ser públicos o privados. Un monitorpuede considerarse como una estructura estática que se activa únicamente cuando algunode sus procedimientos públicos es llamado por un proceso en ejecución y se dice, entonces,que el proceso en cuestión entra o tiene acceso al monitor.Solamente un proceso puede estar ejecutándose en el monitor en un instante determinado.Una estructura de datos compartida puede así protegerse situándola dentro deun monitor que ofrecerá un servicio de exclusión mutua para dicha estructura. Para queresulten útiles en el procesamiento concurrente, los monitores deben incluir alguna herramientade sincronización de forma que se impida el acceso al monitor a un procesocuando otro esta ejecutando dentro de el. Esta sincronización se consigue por medio
![Page 32: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/32.jpg)
PASO
DE
MENSAJES
![Page 33: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/33.jpg)
Los mensajes constituyen relativamente sencillo y adecuado para la comunicación y para la sincronización entre procesos que trabajan en entornos
![Page 34: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/34.jpg)
• LA CABECERA
• EL CUERPO DEL MENSAJE
![Page 35: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/35.jpg)
• Denominación o direccionamiento
• Copia
• Intercambio sincrono vs. intercambio asíncrono
• Longitud
![Page 36: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/36.jpg)
SOLUCIONES HADWARE PARA LA EXCLUSION MUTUA
• Estrategias pesimistas
• Estrategias obtimistas
![Page 37: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/37.jpg)
Habilitación / deshabilitacion de interrupciones
instrucción comprobar y fijar (test and set)
![Page 38: PROGRAMACION CONCURRENTE](https://reader036.fdocuments.co/reader036/viewer/2022062514/55936a3a1a28ab1a748b45ee/html5/thumbnails/38.jpg)
instrucción comparar e intercambiar (compare and swap)
el problema de la cena de los filósofos