Concurrencia-2010

66
Informática III 2009 Ing. Estela D'Agostino 1 Programación secuencial vs programación concurrente Pascal, C, Fortran , Cobol Secuenciales único hilo de control Java, Ada, Posix Concurrentes varios hilos de contro

description

concurrencia

Transcript of Concurrencia-2010

  • 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