Professional Documents
Culture Documents
La programacin concurrente es la simultaneidad en la ejecucin de mltiples tareas interactivas. Estas tareas pueden ser un conjunto de procesos o hilos de ejecucin creados por un nico programa. Las tareas se pueden ejecutar en un sola UCP (multiprogramacin), en varios procesadores o en una red de computadores distribuidos. La programacin concurrente est relacionada con la programacin paralela, pero enfatiza ms la interaccin 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.
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 Nula
aquel sistema operativo que carece de multitarea. An as puede simularla implementndola 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.
ES
Multitarea Cooperativa
Tipo de multitarea en donde los procesos de usuario son quieres ceden la CPU al sistema operativo a intervalos regulares. Es sumamente problemtico porque si por algn 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 versin 1995 implementaban este tipo de multitarea.
Multitarea Preferente
Multitarea en donde el SO se encarga de administrar uno o ms procesadores, repartiendo el tiempo de uso del mismo entre los distintos procesos que esperan utilizarlo (tareas en ejecucin). En el caso de un solo procesador, cada proceso o tarea lo utiliza en perodos cortsimos de tiempo, lo que, en la prctica, da la sensacin de que estuviesen ejecutndose al mismo tiempo. Los sistemas operativos que utilizan este tipo de multitareas son los UNIX y sus clones (Linux, etc), Windows NT, etc.
Multitarea Real
Multitarea en donde el SO ejecuta los procesos realmente al mismo tiempo haciendo uso de mltiples procesadores (ms de dos). La ejecucin realmente se realiza en distintos procesadores para cada proceso o tarea. Obviamente en el caso de que los procesos o tareas sean ms 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.
Multitarea Real
Multiprogramacion
MULTIPROGRAMACION Es la tcnica que permite que dos o mas programas ocupen la misma unidad de memoria principal y que sean ejecutados al mismo tiempo. La multiprogramacin se refiere a dos o mas programas corriendo o procesndose al mismo tiempo; La multiprogramacin se controla a travs del sistema operativo, el cual observa los programas y los vigila hasta que estn concluidos. El numero de programas que pueden multiprogramarse en forma efectiva, depende de una combinacin de la cantidad de memoria, de la velocidad de la CPU y del numero y velocidad de los recursos perifricos que tenga conectados, as como de la eficiencia del SISTEMA OPERATIVO.
Principios de Concurrencia
En un sistema multiprogramado con un nico procesador, los procesos se intercalan en el tiempo aparentando una ejecucin simultnea. Aunque no se logra un procesamiento paralelo y produce una sobrecarga en los intercambios de procesos, la ejecucin intercalada produce beneficios en la eficiencia del procesamiento y en la estructuracin de los programas.
Principios de Concurrencia
La concurrencia es el punto clave en los conceptos de multitarea, multiprogramacin y multiproceso, la concurrencia comprende un gran numero de cuestiones de diseo incluyendo la comunicacin entre procesos, la comparticin y competencia por los recursos, la sincronizacin de la ejecucin de varios procesos y la asignacin del procesador a los procesos, la concurrencia puede presentarse en tres contextos diferentes: Varias aplicaciones: Aplicaciones estructuradas: Estructura del sistema operativo:
Varias aplicaciones:
En este caso el tiempo de procesador de una mquina es compartido dinmicamente entre varios trabajos o aplicaciones activas.
Aplicaciones estructuradas:
Como consecuencia del diseo modular de una aplicacin y la divisin de la misma en tareas explcitas estas pueden ser ejecutadas de forma concurrente. En programacin, un lenguaje estructurado es aquel que soporta la divisin 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).
_Archivos _Dispositivos de E/S 3) El sistema operativo debe proteger los datos y los recursos fsicos 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 ejecucin de otros procesos concurrentes.
Puede verse la concurrencia de procesos como una ejecucin simultnea 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 definicin incluye los sistemas multiprogramados de un nico procesador que estudiamos en los temas anteriores.
1.
1.
1.
Necesidad de exclusion mutua. Es decir, los procesos deberan acceder de forma exclusiva a ciertos recursos o zonas de memoria considerados como crticos.
Interbloqueos: tienen lugar cuando ninguno de los procesos en competencia puede continuar su ejecucion normal por carecer de alguno de los recursos que necesita.
2.
3.
3. ejecucion incompleto: este problema tiene lugar cuando la ejecucion de un proceso queda siempre pospuesta a favor de algun otro de los procesos en competencia.
Gestion de procesos
ejecucion
LA EXCLUSION MUTUA
La exclusin mutua la podramos definir como una operacin de control que permite la coordinacin de procesos concurrentes (Comunicacin requerida entre dos o mas procesos), y que tiene la capacidad de prohibir a los dems procesos realizar una accin cuando un proceso haya obtenido el permiso.
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 exclusin mutua sin ayuda alguna, aunque estas soluciones son propensas a errores y a una fuerte carga de proceso (Algunos ejempl de estas son: Algoritmo de Dekker y Algoritmo de Peterson).
Algoritmo de Dekker
Algoritmo de Peterson Semforos
Monitores
Paso de Mensajes
Algoritmo de Dekker
es un algoritmo de programacin concurrente para exclusin mutua, que permite a dos procesos o hilos de ejecusion compartir un recurso sin conflictos. Fue uno de los primeros algoritmos de exclusin mutua inventados, implementado por Edsger Diikstra.
Si ambos procesos intentan acceder a la seccin crtica simultneamen el algoritmo elige un proceso segn una variable turno. Si el otro proce est ejecutando en su seccin crtica, deber esperar su finalizacin.
Existen cinco versiones del algoritmo Dekker, teniendo ciertos fallos lo primeros cuatro. La versin 5 es la que trabaja ms eficientemente, sie una combinacin de la 1 y la 4.
Versin 1: Alternancia estricta. Garantiza la exclusin mutua, pero su desventaja es que acopla los procesos fuertemente, esto significa que los procesos lentos atrasan a los procesos rpidos. Versin 2: Problema interbloqueo. No existe la alternancia, aunque ambos procesos caen a un mismo estado y nunca salen de ah. Versin 3: Colisin regin crtica no garantiza la exclusin mutua. Este algoritmo no evita que dos procesos puedan acceder al mismo tiempo a la regin critica. Versin 4: Postergacin indefinida. Aunque los procesos no estn en interbloqueo, un proceso o varios se quedan esperando a que suceda un evento que tal vez nunca suceda.
Peterson desarroll el primer algoritmo (1981) para dos procesos que fue una simplificacin 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] adems de valer "verdadero" y "falso", pueden valer "en seccin critica" y turno desde 1 hasta N. El procedimiento es una generalizacin de este .c[i], que es un array y turno, que solo puede valer 1o 2 . .Este algoritmo garantiza la exclusin mutua debido al uso de una variable compartida , turno, que se chequea cada vez.
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 seccin crtica, 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. Slo una de estas asignaciones durar; la otra ocurrir, pero ser reemplazada de inmediato. El valor eventual de turno decide a cul de los dos procesos se le permitir entrar primero en su seccin crtica.
Los semforos pueden contemplarse como variables que tienen un valor entero sobre las que se definen las tres operaciones siguientes: Un semforo puede inicializarse con un valor no negativo. Un semforo puede inicializarse con un valor no negativo. La operacin WAIT decremento el valor del semforo. Si el valor se hace negativo, el proceso que ejecuta WAIT queda bloqueado. La operacin SIGNAL incrementa el valor del semforo. Si el valor no es positivo, se desbloquea a un proceso bloqueado previamente por una operacin WAIT. Veamos cual sera la implementacin de un semforo.
Un monitor es, esencialmente, una coleccin de datos y de procedimientos para su manipulacin junto con una secuencia de inicializacin. Las variables de datos globales son generalmente privadas al monitor por lo que solo son accesibles a los procedimientos de este. Los procedimientos del monitor podrn ser pblicos o privados. Un monitor puede considerarse como una estructura esttica que se activa nicamente cuando alguno de sus procedimientos pblicos es llamado por un proceso en ejecucin y se dice, entonces, que el proceso en cuestin entra o tiene acceso al monitor. Solamente un proceso puede estar ejecutndose en el monitor en un instante determinado. Una estructura de datos compartida puede as protegerse situndola dentro de un monitor que ofrecer un servicio de exclusin mutua para dicha estructura. Para que resulten tiles en el procesamiento concurrente, los monitores deben incluir alguna herramienta de sincronizacin de forma que se impida el acceso al monitor a un proceso cuando otro esta ejecutando dentro de el. Esta sincronizacin se consigue por medio
PASO
DE MENSAJES
Los mensajes constituyen relativamente sencillo y adecuado para la comunicacin y para la sincronizacin entre procesos que trabajan en entornos
LA CABECERA
Denominacin o direccionamiento
Copia
Intercambio sincrono vs. intercambio asncrono Longitud