Programacin secuencial vs programacin concurrente Pascal C Fortran

  • Slides: 68
Download presentation
Programación secuencial vs programación concurrente Pascal, C, Fortran , Cobol Java, Ada, Posix Secuenciales

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

Concurrencia • Son la notación y las técnicas de programación que expresan el paralelismo

Concurrencia • Son la notación y las técnicas de programación que expresan el paralelismo potencial. Un programa concurrente es un conjunto de procesos autónomos que se ejecutan en paralelo. Informática III 2009 Ing. Estela D'Agostino

Procesos concurrentes El trabajar con procesos concurrentes añade complejidad a la tarea de programar.

Procesos concurrentes El trabajar con procesos concurrentes añade complejidad a la tarea de programar. ¿Cuáles son entonces los beneficios que aporta la programación concurrente? Informática III 2009 Ing. Estela D'Agostino

Beneficios de la programación concurrente • Mejor aprovechamiento de la CPU. • Velocidad de

Beneficios de la programación concurrente • Mejor aprovechamiento de la CPU. • Velocidad de ejecución. • Solución de problemas de naturaleza concurrente: – – – Sistemas de control Tecnologías web Aplicaciones basadas en interfaces de usuarios Simulación SGDB Informática III 2009 Ing. Estela D'Agostino

Proceso • Es una instancia de ejecución de un programa. • Tiene un ciclo

Proceso • Es una instancia de ejecución de un programa. • Tiene un ciclo de vida, es decir pasa por distintos estados. Informática III 2009 Ing. Estela D'Agostino

Ciclo de vida de un proceso No existente nacido listo terminado ejecución Informática III

Ciclo de vida de un proceso No existente nacido listo terminado ejecución Informática III 2009 Ing. Estela D'Agostino

Finalización de un proceso 1. 2. 3. 4. 5. Finaliza la ejecución de su

Finalización de un proceso 1. 2. 3. 4. 5. Finaliza la ejecución de su cuerpo. Ejecución de alguna sentencia de auto finalización. Condición de error sin tratar. Aborto por medio de la intervención de otro proceso. Nunca: procesos que se ejecutan en bloques que no terminan. 6. Cuando ya no son necesarios. Informática III 2009 Ing. Estela D'Agostino

Programa concurrente Es un conjunto de procesos secuenciales autónomos que se ejecutan en paralelo

Programa concurrente Es un conjunto de procesos secuenciales autónomos que se ejecutan en paralelo Informática III 2009 Ing. Estela D'Agostino

Implementación de un conjunto de procesos 1. Multiplexar sus ejecuciones en un único procesador

Implementación de un conjunto de procesos 1. Multiplexar sus ejecuciones en un único procesador (multiprogramación). 2. Multiplexar sus ejecuciones en un sistema multiprocesador con acceso a memoria compartida (multiprocesamiento). 3. Multiplexar sus ejecuciones en diversos procesadores que no comparten memoria (sistema distribuido). Informática III 2009 Ing. Estela D'Agostino

Ejecución de un programa concurrente Los procesos deben ser creados, distribuidos en los procesadores

Ejecución de un programa concurrente Los procesos deben ser creados, distribuidos en los procesadores y finalizados. Estas actividades la realiza el núcleo de ejecución conocido como Run Time System Support (RTSS). Se encarga de la creación, terminación y multiplexado de los procesos Informática III 2009 Ing. Estela D'Agostino

Run Time System Support • Estructura software programada como parte de la aplicación (Modula-2).

Run Time System Support • Estructura software programada como parte de la aplicación (Modula-2). • Sistema software generado junto al código objeto del programa por el compilador (Ada y Java). • Estructura hardware microcodificada en el procesador. Es más eficiente (Occam 2). Informática III 2009 Ing. Estela D'Agostino

¿Quién provee los mecanismos de concurrencia? • Sistema operativo (SO de Tiempo real) •

¿Quién provee los mecanismos de concurrencia? • Sistema operativo (SO de Tiempo real) • Lenguaje ( lenguaje que proporciona mecanismos para concurrencia) Informática III 2009 Ing. Estela D'Agostino

Ejecución de los procesos • Todos los SO tiene formas de crear procesos. •

Ejecución de los procesos • Todos los SO tiene formas de crear procesos. • Cada proceso se ejecuta en su propia máquina virtual. • Los SO modernos permiten crear hilos (procesos ligeros) dentro de la misma máquina virtual. Informática III 2009 Ing. Estela D'Agostino

Ventajas si el lenguaje proporciona los mecanismos de concurrencia • Programas más legibles. •

Ventajas si el lenguaje proporciona los mecanismos de concurrencia • Programas más legibles. • Programas más portables. • Si el sistema es embebido puede que no tenga un SO residente. Informática III 2009 Ing. Estela D'Agostino

Ventajas si el SO proporciona la concurrencia • El modelo de concurrencia es el

Ventajas si el SO proporciona la concurrencia • El modelo de concurrencia es el mismo para todos lenguajes. • Puede no ser fácil implementar el modelo de concurrencia sobre algún modelo de SO. Informática III 2009 Ing. Estela D'Agostino

Programación concurrente Los lenguajes concurrentes tiene elementos para: • Crear procesos • Sincronizar procesos

Programación concurrente Los lenguajes concurrentes tiene elementos para: • Crear procesos • Sincronizar procesos • Comunicar procesos Informática III 2009 Ing. Estela D'Agostino

Comportamiento de procesos • Independientes: no se sincronizan ni comunican (son muy raros). •

Comportamiento de procesos • Independientes: no se sincronizan ni comunican (son muy raros). • Cooperativos: se comunican y sincronizan sus actividades. • Competitivos: compiten por recursos del sistema. Informática III 2009 Ing. Estela D'Agostino

Sincronizar y Comunicar • Sincronizar: Satisfacer las restricciones en el enlazado de las acciones

Sincronizar y Comunicar • Sincronizar: Satisfacer las restricciones en el enlazado de las acciones de los distintos procesos. • Comunicar: pasar información de un proceso a otro. Informática III 2009 Ing. Estela D'Agostino

Modelo de concurrencia • • Estructura: nro de procesos fijo o variable. Nivel: paralelismo

Modelo de concurrencia • • Estructura: nro de procesos fijo o variable. Nivel: paralelismo soportado. Granularidad: muchos o pocos procesos. Inicialización: paso de parámetros, o comunicación explícita después de su ejecución • Finalización: término, error, aborto, nunca, suicidio, no son necesarios • Representación: proceso responsable de la creación (padre/hijo) y proceso afectado por su finalización (guardián/dependiente). Informática III 2009 Ing. Estela D'Agostino

Sincronizar y Comunicar • Variables compartidas: objetos a los que puede acceder más de

Sincronizar y Comunicar • Variables compartidas: objetos a los que puede acceder más de un proceso • Paso de mensajes: intercambio explícito de datos entre dos procesos mediante el paso de un mensaje mediante alguna forma que brinda el SO o el propio lenguaje. Informática III 2009 Ing. Estela D'Agostino

Sincronización y comunicación basada en variables compartidas Son objetos a los que puede acceder

Sincronización y comunicación basada en variables compartidas Son objetos a los que puede acceder más de un proceso. La comunicación se logra accediendo a dichas variables cuando sea necesario. Trae problemas Informática III 2009 Ing. Estela D'Agostino

Variables compartidas Considere dos procesos que actualizan una variable compartida, X, mediante la sentencia:

Variables compartidas Considere dos procesos que actualizan una variable compartida, X, mediante la sentencia: X: = X+1 1. Carga el valor de X en algún registro. 2. Incrementa el valor en el registro en 1. 3. Almacena el valor del registro de nuevo en X. Como ninguna de las tres operaciones es indivisible, dos procesos que actualicen la variable simultáneamente generarían un entrelazamiento que podría producir un resultado incorrecto. Informática III 2009 Ing. Estela D'Agostino

Variables compartidas • Las partes de un proceso que tienen acceso a las variables

Variables compartidas • Las 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 críticas. • La protección requerida se conoce como exclusión mutua. Informática III 2009 Ing. Estela D'Agostino

Variables compartidas • Sección crítica: secuencia de instrucciones que debe ejecutarse sin perder el

Variables compartidas • Sección crítica: secuencia de instrucciones que debe ejecutarse sin perder el control, y afecta variables compartidas. Si un proceso está ejecutando código de su sección crítica, ningún otro proceso puede estar ejecutando código de su sección crítica. Informática III 2009 Ing. Estela D'Agostino

El problema de la sección crítica(SC) • Intenta sistematizar el estudio de la sincronización.

El problema de la sección crítica(SC) • Intenta sistematizar el estudio de la sincronización. • Sean n procesos que tienen datos compartidos. Cada proceso tiene un segmento de código llamado SC en el cual se accede a los datos compartidos. • Se pretende que cuando un proceso está en su sección crítica, ningún otro esté en su SC. Informática III 2009 Ing. Estela D'Agostino Sección de entrada Sección crítica Sección de salida Sección siguientes

Sincronizaciones necesarias en la programación concurrente – Exclusión mutua: es el mecanismo que asegura

Sincronizaciones necesarias en la programación concurrente – Exclusión mutua: es el mecanismo que asegura que sólo un proceso está haciendo algo en un instante determinado. Sincronización para proteger una sección crítica. Es necesario si dos procesos comparten variables. – Sincronización condicionada: necesaria cuando un proceso necesita realizar alguna acción, sólo después que se haya cumplido una condición. Informática III 2009 Ing. Estela D'Agostino

Sincronización de condición Utilización de buferes: productor / consumidor Son aquellos problemas en los

Sincronización de condición Utilización de buferes: productor / consumidor Son aquellos problemas en los que existe un conjunto de procesos que producen información que otros procesos consumen, siendo diferentes las velocidades de producción y consumo de la información. Este desajuste en las velocidades, hace necesario que se establezca una sincronización entre los procesos de manera que la información no se pierda ni se duplique, consumiéndose en el orden en que es producida. Informática III 2009 Ing. Estela D'Agostino

Variables compartidas • Semáforos. • Monitores tipos protegidos. • Métodos sincronizados. Informática III 2009

Variables compartidas • Semáforos. • Monitores tipos protegidos. • Métodos sincronizados. Informática III 2009 Ing. Estela D'Agostino

Semáforos • Los introdujo Dikstra en 1968. • Permiten resolver la mayoría de los

Semáforos • Los introdujo Dikstra en 1968. • Permiten resolver la mayoría de los problemas de sincronización entre procesos y forman parte del diseño de muchos sistemas operativos y de lenguajes de programación concurrentes. Informática III 2009 Ing. Estela D'Agostino

Semáforos Es una estructura de datos: • con una variable tipo entera. • una

Semáforos Es una estructura de datos: • con una variable tipo entera. • una cola de procesos en espera. typedef semaforo { int contador; cola: lista de procesos; } Informática III 2009 Ing. Estela D'Agostino

Semáforos down(S) up(S) sleep(S) wakeup(S) wait(S) notify() Espera(S) • Mientras S sea cero suspende

Semáforos down(S) up(S) sleep(S) wakeup(S) wait(S) notify() Espera(S) • Mientras S sea cero suspende el proceso y lo ingresa a la cola asociada. • Decrementa el contador. 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). Informática III 2009 Ing. Estela D'Agostino

Semáforos public final class Semaforo { String nombre; int s; // constructor public synchronized

Semáforos public final class Semaforo { String nombre; int s; // constructor public synchronized void down() { while (s == 0) { try { wait(); } catch (Interrupted. Exception e) {} } s--; } public synchronized void up() { s++; notify(); } } Informática III 2009 Ing. Estela D'Agostino 32

Sincronización de condición con semáforos var S : semaforo (inicialmente en 0) process p

Sincronización de condición con semáforos var S : semaforo (inicialmente en 0) process p 1. . wait(S); . . end p 1; //espera hasta que S=1 El uso de wait y signal se da en dos procesos por separado. En uno se ejecuta wait y en el otro signal. process p 2. . . signal(S); . . end p 2; Informática III 2009 Ing. Estela D'Agostino

Características de los semáforos Los semáforos tienen algunas características que pueden generar incovenientes: •

Características de los semáforos Los semáforos tienen algunas características que pueden generar incovenientes: • las variables compartidas son globales a todos los procesos. • las acciones que acceden y modifican dichas variables están diseminadas por los procesos. • para poder decir algo del estado de las variables compartidas, es necesario mirar todo el código. • la adición de un nuevo proceso puede requerir verificar que el uso de las variables compartidas es el adecuado. Programas poco escalables Informática III 2009 Ing. Estela D'Agostino

Críticas a los semaforos • Si el semáforo se ubicó en un lugar erróneo

Críticas a los semaforos • Si el semáforo se ubicó en un lugar erróneo falla No se garantiza la exclusión mutua Posible solución : monitores Informática III 2009 Ing. Estela D'Agostino

Monitores Es un conjunto de procedimientos que proporciona el acceso con exclusión mutua a

Monitores Es un conjunto de procedimientos que proporciona el acceso con exclusión mutua a un recurso o conjunto de recursos (datos o dispositivos) compartidos por un grupo de procesos. Los procedimientos van encapsulados dentro de un módulo que tiene la propiedad especial de que sólo un proceso puede estar activo cada vez para ejecutar un procedimiento del monitor. Informática III 2009 Ing. Estela D'Agostino

Características de un monitor Es un TAD: • uso independiente de la implementación. •

Características de un monitor Es un TAD: • uso independiente de la implementación. • el usuario no conoce la implementación. • nada se sabe del orden en que se van a invocar acciones del monitor. • por lo que necesita una correcta especificación. Informática III 2009 Ing. Estela D'Agostino

Funcionamiento de un monitor Respecto a la sincronización: • la exclusión mutua se definición:

Funcionamiento de un monitor Respecto a la sincronización: • la exclusión mutua se definición: asegura por – por lo tanto, sólo 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. Informática III 2009 Ing. Estela D'Agostino

Funcionamiento de un monitor la sincronización condicionada: – cada proceso puede requerir una sincronización

Funcionamiento de un monitor la sincronización condicionada: – cada proceso puede requerir una sincronización distinta, por lo que hay que programar cada caso. – para ello, se usarán las variables “condición”: • se usan para hacer esperar a un proceso hasta que determinada condición sobre el estado del monitor se “anuncie” • también para despertar a un proceso que estaba esperando por su causa Informática III 2009 Ing. Estela D'Agostino

Monitores • Existe necesidad de sincronización de condición. • Se maneja con dos operadores

Monitores • Existe necesidad de sincronización de condición. • Se maneja con dos operadores que se llaman wait y signal. Informática III 2009 Ing. Estela D'Agostino

Monitores • Un wait siempre bloquea y se ubica en una cola asociada a

Monitores • Un wait siempre bloquea y se ubica en una cola asociada a esa variable de condición. • Cuando un proceso bloqueado libera su bloqueo permitirá ingresar a otro proceso. • Cuando un proceso ejecuta una operación signal, liberará un proceso bloqueado. Informática III 2009 Ing. Estela D'Agostino

Críticas a monitores • Solución elegante a problemas de exclusión mutua. • No soluciona

Críticas a monitores • Solución elegante a problemas de exclusión mutua. • No soluciona bien las sincronizaciones de variables de condición. • Sólo lo implementan muy pocos lenguajes (Mesa, Pascal Concurrente y Modula-1) Informática III 2009 Ing. Estela D'Agostino

Métodos sincronizados • Es el concepto de monitor implementado en el paradigma de Orientación

Métodos sincronizados • Es el concepto de monitor implementado en el paradigma de Orientación a Objetos • Se utilizan en lenguajes como Java, que tiene la concurrencia totalmente integrada. Informática III 2009 Ing. Estela D'Agostino

Métodos sincronizados • Los métodos se califican con el modificador synchronized. • Puede existir

Métodos sincronizados • Los métodos se califican con el modificador synchronized. • Puede existir también synchronized a nivel de bloque. Informática III 2009 Ing. Estela D'Agostino

Sincronizacion y comunicación basada en mensajes • El envío de mensajes se usa tanto

Sincronizacion y comunicación basada en mensajes • El envío de mensajes se usa tanto para sincronizar como para comunicar. • Se necesita un proceso emisor y uno receptor. • Información para intercambiar. • Operaciones básicas son: – Enviar (mensaje) (, dest) – Recibir (mensaje) (, fuente) Informática III 2009 Ing. Estela D'Agostino

Paso de mensajes • Se debe establecer un enlace entre receptor y emisor: –

Paso de mensajes • Se debe establecer un enlace entre receptor y emisor: – Modelo de sincronización. – Cómo nombrar los procesos. – Estructura del mensaje. – Confiabilidad Informática III 2009 Ing. Estela D'Agostino

Modelo de sincronización • Sincronización implícita: un proceso no puede recibir un mensaje antes

Modelo de sincronización • Sincronización implícita: 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 emisor. – Un proceso que ejecuta una recepción de mensaje incondicional cuando no existe ningún mensaje, permanecerá suspendido hasta que llegue el mensaje. Informática III 2009 Ing. Estela D'Agostino

Modelo de sincronización de procesos Operación envía (send): – Asíncrona: el emisor continua trabajando

Modelo de sincronización de procesos Operación envía (send): – Asíncrona: el emisor continua trabajando sin saber si el mensaje llegó o no (o se envió completamente o no). – Síncrona: el emisor continua trabajando sólo cuando se recibió el mensaje (o cuando se envió completamente). – Invocación remota: el emisor continúa sólo cuando se recibió una respuesta desde el receptor. Informática III 2009 Ing. Estela D'Agostino

Primitivas con o sin bloqueo • send síncrono o con bloqueo: mientras se envía

Primitivas con o sin bloqueo • send síncrono o con bloqueo: mientras se envía el mensaje, el proceso emisor se bloquea (la instrucción siguiente se ejecuta una vez que el mensaje se haya enviado en su totalidad). • send asíncrono o sin bloqueo: ¿Cuándo vuelve a estar disponible el búffer? Informática III 2009 Ing. Estela D'Agostino 49

Primitivas con o sin bloqueo • send con bloqueo (CPU inactivo durante la transmisión

Primitivas con o sin bloqueo • send con bloqueo (CPU inactivo durante la transmisión de los mensajes). • send sin bloqueo, con copia (se desperdicia el tiempo del CPU para la copia adicional). • send sin bloqueo, con interrupción (dificulta la programación). Informática III 2009 Ing. Estela D'Agostino

Nombrado de procesos Dirección: nombrado directo: envía <msj> <proceso> nombrado indirecto: envía <msj> <buzón>

Nombrado de procesos Dirección: nombrado directo: envía <msj> <proceso> nombrado indirecto: envía <msj> <buzón> Simetría: simétrico: si el emisor y el receptor se nombran entre sí envía <msj> <proceso> espera <msj> <proceso> asimétrico: acepta mensajes de cualquier proceso espera <msj> Informática III 2009 Ing. Estela D'Agostino

Nombrado de procesos • Una dirección se refiere a un proceso específico (primitiva sin

Nombrado de procesos • Una dirección se refiere a un proceso específico (primitiva sin almacenamiento en buffers). • Una dirección se refiere a un buzón mailbox - (primitiva con almacenamiento en buffers) – Una llamada a receive elimina un mensaje del buzón o se bloquea. Informática III 2009 Ing. Estela D'Agostino

Estructura del mensaje • Idealmente: cualquier objeto. • Cada lenguaje ha impuesto sus restricciones.

Estructura del mensaje • Idealmente: cualquier objeto. • Cada lenguaje ha impuesto sus restricciones. Informática III 2009 Ing. Estela D'Agostino

Primitivas confiables vs. no confiables • Los mensajes se pueden perder. • Si send

Primitivas confiables vs. no confiables • Los mensajes se pueden perder. • Si send es no confiable el sistema no garantiza la entrega (se deja en manos de los usuarios). • Se puede exigir al sistema del receptor enviar un acuse de recibo (acknowledgement). • Se puede utilizar la respuesta del servidor como acuse de recibo. Informática III 2009 Ing. Estela D'Agostino

Primitivas confiables vs. no confiables Informática III 2009 Ing. Estela D'Agostino 55

Primitivas confiables vs. no confiables Informática III 2009 Ing. Estela D'Agostino 55

Acciones atómicas • Hasta aquí la comunicación entre dos procesos se expresó como una

Acciones atómicas • Hasta aquí la comunicación entre dos procesos se expresó como una comunicación simple. No siempre ocurre así: Ej: extracción por cajero automático Necesito que todos vean un estado consistente del sistema. Estado: valores de las variables en un momento dado de tiempo. Informática III 2009 Ing. Estela D'Agostino

Acciones atómicas Traspaso de fondos de una cuenta bancaria a otra: Proceso de pedido

Acciones atómicas Traspaso de fondos de una cuenta bancaria a otra: Proceso de pedido de transferencia Proceso de autenticación de cliente Proceso de autenticación de cuenta a la que se transfiere Proceso de debito Proceso de Acreditación Acción atómica Informática III 2009 Ing. Estela D'Agostino

Acciones atómicas • Una acción es atómica si los procesos que la realizan no

Acciones atómicas • Una acción es atómica si los procesos que la realizan no saben de la existencia de ningún otro proceso activo, y ningún otro proceso activo tiene constancia de las actividades de los procesos durante el tiempo en el que están realizando la acción. • Una acción es atómica si los procesos que la realizan no se comunican con otros procesos mientras se está realizando la acción. Informática III 2009 Ing. Estela D'Agostino

Acciones atómicas • Una acción es atómica si los procesos que la realizan no

Acciones atómicas • Una acción es atómica si los procesos que la realizan no pueden detectar ningún cambio de estado salvo aquellos realizados por ellos mismos, y si no revelan sus cambios de estado hasta que la acción se haya completado. • Las acciones son atómicas si, en lo que respecta a otros procesos, pueden ser consideradas indivisibles e instantáneas, de forma que los efectos sobre el sistema sean como si estuvieran entrelazadas y no en concurrencia. Informática III 2009 Ing. Estela D'Agostino

Acciones atómicas de dos fases • Primer fase – Petición de recursos • Segunda

Acciones atómicas de dos fases • Primer fase – Petición de recursos • Segunda fase – Liberación de recursos Si se liberan recursos antes que la acción atómica finalice puede existir problemas con la recuperación de un fallo. Informática III 2009 Ing. Estela D'Agostino

Control de recursos Tienen injerencia los procesos competitivos. Aunque no se comuniquen entre ellos,

Control de recursos Tienen 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. Informática III 2009 Ing. Estela D'Agostino

Control de recursos Cuando varios procesos que compiten necesiten recursos el modo de operación

Control de recursos Cuando varios procesos que compiten necesiten recursos el modo de operación es el siguiente: – Petición del recurso – Utilización – Liberación Informática III 2009 Ing. Estela D'Agostino

Petición de recursos • Un recurso se puede solicitar con: – Acceso compartido: se

Petición de recursos • Un recurso se puede solicitar con: – Acceso compartido: se puede utilizar concurrentemente por más de un proceso. – Acceso exclusivo: acceso en cada instante a un único proceso. Algunos se pueden utilizar en cualquier modo Informática III 2009 Ing. Estela D'Agostino

Petición de recursos • Si un proceso pide acceso compartido mientras otro lo está

Petición de recursos • Si 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. Informática III 2009 Ing. Estela D'Agostino

Petición de recursos • Como los procesos pueden bloquearse al solicitar recursos, no deben

Petición de recursos • Como 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 acción que se quería realizar con el recurso haya finalizado Informática III 2009 Ing. Estela D'Agostino

Interbloqueo ( deadlock, abrazo mortal) • Dos procesos forman un interbloqueo cuando cada uno

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 activo • Dos procesos forman un interbloqueo activo si cada uno se ejecuta, pero ninguno es capaz de avanzar. Informática III 2009 Ing. Estela D'Agostino

Interbloqueo Condiciones necesarias • • Exclusión mutua. Espera circular. No desalojo. Mantenimiento y espera.

Interbloqueo Condiciones necesarias • • Exclusión mutua. Espera circular. No desalojo. Mantenimiento y espera. Informática III 2009 Ing. Estela D'Agostino

Inanición • Varios procesos están intentando continuamente conseguir acceso exclusivo al mismo recurso. Si

Inanición • Varios procesos están intentando continuamente conseguir acceso exclusivo al mismo recurso. Si la política 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 algún momento ocurrirá. Informática III 2009 Ing. Estela D'Agostino