Post on 17-Sep-2015
description
Programacin secuencial vs programacin concurrentePascal, C, Fortran , CobolSecuencialesnico hilo de controlJava, Ada, PosixConcurrentes varios hilos de control
Ing. Estela D'Agostino
ConcurrenciaSon la notacin y las tcnicas de programacin que expresan el paralelismo potencialUn programa concurrente es un conjunto de procesos autnomos que se ejecutan en paralelo.
Ing. Estela D'Agostino
Procesos concurrentesEl trabajar con procesos concurrentes aade complejidad a la tarea de programar cules son entonces los beneficios que aporta la programacin concurrente?
Ing. Estela D'Agostino
Beneficios de la programacinconcurrenteMejor aprovechamiento de la CPUVelocidad de ejecucinSolucin de problemas de naturaleza concurrenteSistemas de controlTecnologas webAplicaciones basadas en interfaces de usuariosSimulacinSGDB
Ing. Estela D'Agostino
ProcesoEs una instancia de ejecucin de un programa.Tiene un ciclo de vida, es decir pasa por distintos estados.
Ing. Estela D'Agostino
Ciclo de vida de un procesolisto
Ing. Estela D'Agostino
Finalizacin de un procesoFinaliza la ejecucin de su cuerpo.Ejecucin de alguna sentencia de auto finalizacin.Condicin de error sin tratar.Aborto por medio de la intervencin de otro proceso.Nunca: procesos que se ejecutan en bloques que no terminan.Cuando ya no son necesarios.
Ing. Estela D'Agostino
Programa concurrenteEs un conjunto de procesos secuenciales autnomos que se ejecutan en paralelo
Ing. Estela D'Agostino
Implementacin de un conjunto de procesosMultiplexar sus ejecuciones en un nico procesador (multiprogramacin).Multiplexar sus ejecuciones en un sistema multiprocesador con acceso a memoria compartida (multiprocesamiento)Multiplexar sus ejecuciones en diversos procesadores que no comparten memoria (sistema distribudo)
Ing. Estela D'Agostino
Ejecucin de un programa concurrenteLos procesos deben ser creados, distribuidos en los procesadores y finalizados. Estas actividades la realiza el nucleo de ejecucin conocido como Run Time System Support (RTSS).Se encarga de la creacin, terminacin y multiplexado de los procesos
Ing. Estela D'Agostino
Run Time System Support Estructura software programada como parte de la aplicacin (Modula-2).Sistema software generado junto al cdigo objeto del programa por el compilador. (Ada y Java).Estructura hardware microcodificada en el procesador. Es mas eficiente. (Occam2)
Ing. Estela D'Agostino
Quien provee los mecanismos de concurrencia?Sistema operativo (SO de Tiempo real)
Lenguaje ( lenguaje que proporciona mecanismos para concurrencia)
Ing. Estela D'Agostino
Ejecucin de los procesosTodos los SO tiene formas de crear procesos.Cada proceso se ejecuta en su propia maquina virtual.Los SO modernos permiten crear hilos (procesos ligeros) dentro de la misma mquina virtual.
Ing. Estela D'Agostino
Ventajas si el lenguaje proporciona los mecanismos de concurrenciaProgramas ms legiblesProgramas ms portablesSi el sistema es embebido puede que no tenga un SO residente
Ing. Estela D'Agostino
Ventajas si el SO proporciona la concurrenciaEl modelo de concurrencia es el mismo para todos los lenguajes.Puede no ser fcil implementar el modelo de concurrencia sobre algn modelo de SO
Ing. Estela D'Agostino
Programacin concurrenteLos lenguajes concurrentes tiene elementos para:Crear procesos Sincronizar procesosComunicar procesos
Ing. Estela D'Agostino
Comportamiento de procesosIndependientes: no se sincronizan ni comunican. (son muy raros)
Cooperativos: se comunican y sincronizan sus actividades.Competitivos: compiten por recursos del sistema.
Ing. Estela D'Agostino
Sincronizar y ComunicarSincronizar: Satisfacer las restricciones en el enlazado de las acciones de los distintos procesos.Comunicar: pasar informacin de un proceso a otro.
Ing. Estela D'Agostino
Modelo de concurrenciaEstructura: nro de procesos fijo o variableNivel: paralelismo soportadoGranularidad: muchos o pocos procesosInicializacin: paso de parmetros, o comunicacin explcita despus de su ejecucinFinalizacin: termino, error, aborto, nunca, suicidio, no son necesariosRepresentacin : proceso responsable de la creacin (padre/hijo) y proceso afectado por su finalizacin (guardin/dependiente)
Ing. Estela D'Agostino
Sincronizar y ComunicarVariables compartidas: objetos a los que puede acceder ms de un procesoPaso de mensajes: intercambio explcito de datos entre dos procesos mediante el paso de un mensaje mediante alguna forma que brinda el SO o el propio lenguaje.
Ing. Estela D'Agostino
Sincronizacion y comunicacin basada en variables compartidas
Son objetos a los que puede acceder mas de un proceso.
La comunicacin se logra accediendo a dichas variables cuando sea necesarioTrae problemas
Ing. Estela D'Agostino
Variables compartidasConsidere dos procesos que actualizan una variable compartida, X, mediante la sentencia: X:= X+1 Carga el valor de X en algn registro. Incrementa el valor en el registro en 1.Almacena el valor del registro de nuevo en X.Como ninguna de las tres operaciones es indivisible, dos procesos que actualicen la variable simultneamente generaran un entrelazamiento que podra producir un resultado incorrecto.
Ing. Estela D'Agostino
Variables compartidasLas partes de un proceso que tienen acceso a las variables compartidas han de ejecutarse indivisiblemente unas respecto a las otras.Estas partes se denominan secciones crticas.La proteccin requerida se conoce como exclusin mutua.
Ing. Estela D'Agostino
Seccin crtica: secuencia de instrucciones que debe ejecutarse sin perder el control, y afecta variables compartidas. Si un proceso esta ejecutando cdigo de su seccin crtica, ningn otro proceso puede estar ejecutando cdigo de su seccin crticaVariables compartidas
Ing. Estela D'Agostino
El problema de la seccin crtica(SC)Intenta sistematizar el estudio de la sincronizacin Sean n procesos que tienen datos compartidos. Cada proceso tiene un segmento de cdigo llamado SC en el cual se accede a los datos compartidosSe pretende que cuando un proceso est en su seccin crtica, ningn otro este en su SCSeccin de entradaSeccin crticaSeccin de salidaSeccin siguientes
Ing. Estela D'Agostino
Sincronizaciones necesarias en la programacin concurrenteExclusin mutua: es el mecanismo que asegura que solo un proceso est haciendo algo en un instante determinado. Sincronizacin para proteger una seccin crtica. Es necesario si dos procesos comparten variables. Sincronizacin condicionada: necesaria cuando un proceso necesita realizar alguna accin, solo despus que se haya cumplido una condicin.
Ing. Estela D'Agostino
Sincronizacin de condicinUtilizacin de buferes: productor / consumidorSon aquellos problemas en los que existe un conjunto de procesos que producen informacin que otros procesos consumen, siendo diferentes las velocidades de produccin y consumo de la informacin. Este desajuste en las velocidades, hace necesario que se establezca una sincronizacin entre los procesos de manera que la informacin no se pierda ni se duplique, consumindose en el orden en que es producida.
Ing. Estela D'Agostino
Variables compartidasSemforos Monitores tipos protegidosMtodos sincronizados
Ing. Estela D'Agostino
SemforosIntrodujo Dikstra en 1968. Permite resolver la mayora de los problemas de sincronizacin entre procesos y forma parte del diseo de muchos sistemas operativos y de lenguajes de programacin concurrentes.
Ing. Estela D'Agostino
SemforosEs una estructura de datos:con una variable tipo entera una cola de procesos en espera.typedef semaforo {int contador;cola: lista de procesos;}
Ing. Estela D'Agostino
Semforosdown(S)
sleep(S)
wait(S)
Espera(S) Mientras S sea cero suspende el proceso y lo ingresa a la cola asociada. Decrementa el contador.
up(S)
wakeup(S)
notify()
Signal(S) Incrementa el contador. Si el resultado es positivo despierta a un proceso que se encuentra en la cola (y le permite completar su down).
Ing. Estela D'Agostino
Semforospublic final class Semaforo {String nombre;int s;
// constructor
public synchronized void down() {while (s == 0) {try { wait(); } catch (InterruptedException e) {}}s--;}
public synchronized void up() {s++;notify();}
}
Ing. Estela D'Agostino
Sincronizacin de condicin con semforosvar S : semaforo (inicialmente en 0)
process p1..........wait(S); //espera hasta que S=1..........end p1;
process p2..............signal(S);..........end p2;El uso de wait y signal se da en dos procesos por separado. En uno se ejecuta wait y en el otro signal.
Ing. Estela D'Agostino
Caractersticas de los semforosLos semforos tienen algunas caractersticas que pueden generar incovenientes:las variables compartidas son globales a todos los procesos.las acciones que acceden y modifican dichas variables estn diseminadas por los procesos.para poder decir algo del estado de las variables compartidas, es necesario mirar todo el cdigo.la adicin de un nuevo proceso puede requerir verificar que el uso de las variables compartidas es el adecuado.Programas poco escalables
Ing. Estela D'Agostino
Crticas a los semaforosSi el semforo se ubico en un lugar errneo fallaNo se garantiza la exclusin mutuaPosible solucin : monitores
Ing. Estela D'Agostino
MonitoresEs un conjunto de procedimientos que proporciona el acceso con exclusin mutua a un recurso o conjunto de recursos (datos o dispositivos) compartidos por un grupo de procesos. Los procedimientos van encapsulados dentro de un mdulo que tiene la propiedad especial de que slo un proceso puede estar activo cada vez para ejecutar un procedimiento del monitor.
Ing. Estela D'Agostino
Caractersticas de un monitorEs un TAD:uso independiente de la implementacin.el usuario no conoce la implementacin.nada se sabe del orden en que se van a invocar acciones del monitor.por lo que necesita una correcta especificacin.
Ing. Estela D'Agostino
Funcionamiento de un monitorRespecto a la sincronizacin:la exclusin mutua se asegura por definicin:por lo tanto, slo un proceso puede estar ejecutando acciones de un monitor en un momento dado.aunque varios procesos pueden en ese momento ejecutar acciones que nada tengan que ver con el monitor
Ing. Estela D'Agostino
Funcionamiento de un monitorla sincronizacin condicionada:cada proceso puede requerir una sincronizacin distinta, por lo que hay que programar cada caso. para ello, se usarn las variables condicin:se usan para hacer esperar a un proceso hasta que determinada condicin sobre el estado del monitor se anuncietambin para despertar a un proceso que estaba esperando por su causa
Ing. Estela D'Agostino
MonitoresExiste necesidad de sincronizacin de condicin.Se maneja con dos operadores que se llaman wait y signal.
Ing. Estela D'Agostino
MonitoresUn wait siempre bloquea y se ubica en una cola asociada a esa variable de condicin.Cuando un proceso bloqueado libera su bloqueo permitir ingresar a otro proceso.Cuando un proceso ejecuta una operacin signal, liberar un proceso bloqueado.
Ing. Estela D'Agostino
Crticas a monitoresSolucin elegante a problemas de exclusin mutua.No soluciona bien las sincronizaciones de variables de condicin.Slo lo implementan muy pocos lenguajes (Mesa, Pascal Concurrente y Modula-1)
Ing. Estela D'Agostino
Mtodos sincronizados
Es el concepto de monitor implementado en el paradigma de Orientacin a ObjetosSe utilizan en lenguajes como Java, que tiene la concurrencia totalmente integrada.
Ing. Estela D'Agostino
Mtodos sincronizados
Los mtodos se califican con el modificador synchronized.Puede existir tambin synchronized a nivel de bloque.
Ing. Estela D'Agostino
Sincronizacion y comunicacin basada en mensajesEl envo de mensajes se usa tanto para sincronizar como para comunicar.
Se necesita un proceso emisor y uno receptor.Informacin para intercambiar.Operaciones bsicas son: Enviar (mensaje)Recibir (mensaje)
Ing. Estela D'Agostino
Paso de mensajesSe debe establecer un enlace entre receptor y emisor:Modelo de sincronizacinComo nombrar los procesosEstructura del mensaje
Ing. Estela D'Agostino
Modelo de sincronizacinSincronizacin implcita: un proceso no puede recibir un mensaje antes que el emisor lo haya emitido.El receptor puede leer una variable que no haya sido escrita por el emisorProceso ejecuta una recepcin de mensaje incondicional cuando no existe ningn mensaje, permanecer suspendido hasta que llegue el mensaje
Ing. Estela D'Agostino
Modelo de sincronizacin de procesosOperacin enva:
Asncrona: el emisor continua trabajando sin saber si el mensaje lleg o noSncrona: el emisor continua trabajando solo cuando se recibi el mensaje (rendezvous)Invocacin remota: el emisor continua slo cuando se recibi una respuesta desde el receptor
Ing. Estela D'Agostino
Nombrado de procesos
Direccin:nombrado directo:enva
nombrado indirecto:enva
Simetra:simtrico:si el emisor y el receptor se nombrar entre senva espera
asimtrico: acepta mensajes de cualquier procesoespera
Ing. Estela D'Agostino
Estructura del mensajeIdealmente: cualquier objeto.Cada lenguaje ha impuesto sus restricciones.
Ing. Estela D'Agostino
Acciones atmicas Hasta aqu la comunicacin entre dos procesos se expreso como una comunicacin simple.
No siempre ocurre as:Ej: extraccion por cajero automtico Necesito que todos vean un estado consistente del sistemaEstado: valores de las variables en un momento dado de tiempo
Ing. Estela D'Agostino
Acciones atmicasTraspaso de fondos de una cuenta bancaria a otra:
Proceso de pedido de transferenciaProceso de autenticacin de clienteProceso de autenticacin de cuenta a la que se transfiereProceso de debitoProceso de Acreditacin
Accin atmica
Ing. Estela D'Agostino
Acciones atmicasUna accin es atmica si los procesos que la realizan no saben de la existencia de ningn otro proceso activo, y ningn otro proceso activo tiene constancia de las actividades de los procesos durante el tiempo en el que estn realizando la accin.Una accin es atmica si los procesos que la realizan no se comunican con otros procesos mientras se est realizando la accin.
Ing. Estela D'Agostino
Acciones atmicasUna accin es atmica si los procesos que la realizan no pueden detectar ningn cambio de estado salvo aquellos realizados por ellos mismos, y si no revelan sus cambios de estado hasta que la accin se haya completado.Las acciones son atmicas si, en lo que respecta a otros procesos, pueden ser consideradas indivisibles e instantneas, de forma que los efectos sobre el sistema sean como si estuvieran entrelazadas y no en concurrencia.
Ing. Estela D'Agostino
Acciones atmicas de dos fasesPrimer fasePeticin de recursosSegunda faseLiberacin de recursosSi se liberan recursos antes que la accin atmica finalice puede existir problemas con la recuperacin de un fallo
Ing. Estela D'Agostino
Control de recursosTienen injerencia los procesos competitivos.Aunque no se comuniquen entre ellos, pueden comunicarse para coordinar el acceso a recursos.Muy pocos recursos admiten el acceso concurrente de procesos.
Ing. Estela D'Agostino
Control de recursosCuando varios procesos que compiten necesiten recursos el modo de operacin es el siguiente:Peticin del recursoUtilizacin Liberacin
Ing. Estela D'Agostino
Peticin de recursosUn recurso se puede solicitar con:Acceso compartido: se puede utilizar concurrentemente por ms de un proceso.
Acceso exclusivo: acceso en cada instante a un nico proceso.
Algunos se pueden utilizar en cualquier modo
Ing. Estela D'Agostino
Peticin de recursosSi un proceso pide acceso compartido mientras otro lo est usando en forma exclusiva ,entonces debe esperar. Si se estaba usando en forma compartida puede seguir.
Ing. Estela D'Agostino
Peticin de recursosComo los procesos pueden bloquearse al solicitar recursos, no deben pedirlos hasta que lo necesiten.Una vez asignados deben liberarse tan pronto como sea posible, una vez que la accin que se quera realizar con el recurso haya finalizado
Ing. Estela D'Agostino
Interbloqueo ( deadlock, abrazo mortal)Dos procesos forman un interbloqueo cuando cada uno mantiene un recurso mientras que espera el recurso mantenido por el otro.
Interbloqueo activoDos procesos forman un interbloqueo activo si cada uno se ejecuta, pero ninguno es capaz de avanzar.
Ing. Estela D'Agostino
Interbloqueo activoDos procesos forman un interbloqueo activo si cada uno se ejecuta, pero ninguno es capaz de avanzar.type Indicador is (Arriba, Abajo);Indicador1 : Indicador := Arriba;task A;task body A isbegin ... while Indicador1 = Arriba loop null; end loop; ...end A; task B;task body B isbegin ... while Indicador1 = Arriba loop null; end loop; ...end A;
Ing. Estela D'Agostino
InterbloqueoCondiciones necesariasExclusin mutua.Espera circular.No desalojo.Mantenimiento y espera.
Ing. Estela D'Agostino
Inanicin Varios procesos estn intentando continuamente conseguir acceso exclusivo al mismo recurso. Si la poltica con que se asignan no es justa, puede que un proceso no acceda nunca al recurso.Vivacidad (liveness): Si se supone que algo puede ocurrir, en algn momento ocurrir.
Ing. Estela D'Agostino
Ejecucin concurrente en JavaClase ThreadInterfaz RunnableCrear hilos:Crear una subclase de ThreadCrear una clase que implemente Runnable
Ing. Estela D'Agostino
Identificacin de hilos
Ing. Estela D'Agostino
Problemas cuando se quiere por ejemplo actualizar el valor de una variable compartida:
X=x+1
Esto no es una operacin indivisible
Cargar en un registro el valor de XIcrementar el valorAlmacenar el valor