Está en la página 1de 34

Abrazo mortal

Sebastin Snchez Prieto

Planteamiento del problema




Deriva del hecho de que en un sistema multiprogramado los procesos compiten por un conjunto limitado de recursos Se puede, en estas condiciones, producir la situacin siguiente:  P0 espera por un recurso asignado a P1, el cual espera por un recurso asignado a P2 que espera por un recurso asignado a P0  Como consecuencia, ningn proceso evoluciona  Se dice que estn en abrazo mortal o interbloqueados
Sincronizacin de procesos 2

1999-2001 Sebastin Snchez Prieto

Forma de utilizar un recurso


Se pide
open, malloc, P, etc.

Se usa

Se devuelve

close, free, V, etc.

1999-2001 Sebastin Snchez Prieto

Sincronizacin de procesos 3

Tipos de recursos
  

 

Recursos apropiables (memoria): se pueden tomar del proceso que los posee sin producir daos Recursos no apropiables (impresora): slo pueden ser utilizados por un proceso a la vez Los abrazos mortales pueden darse tanto con recursos hardware (impresora) como software (semforos) Cada recurso puede tener varios ejemplares Un conjunto de procesos se bloquea si cada proceso del conjunto espera un evento que slo puede ser provocado por otro proceso del conjunto
Sincronizacin de procesos 4

1999-2001 Sebastin Snchez Prieto

Condiciones
 

  

Exclusin mutua: los recursos implicados deben ser no compartibles Posesin y espera: deben existir procesos que tienen asignados recursos y estn esperando por otros recursos asignados a otros procesos No apropiacin: los recursos son liberados voluntariamente. No hay requisa Espera circular: P0 espera por P1, P1 por P2, P2 por P3, ..., Pn-1 por Pn y Pn por P0 Si no se producen las cuatro condiciones de forma simultnea, no existe el abrazo mortal
Sincronizacin de procesos 5

1999-2001 Sebastin Snchez Prieto

Grafo de asignacin de recursos


  

Sirven para describir el abrazo mortal Consta de un conjunto de vrtices (V) y un conjunto de flechas (F) Dos tipos de vrtices:  Procesos P = {P1, P2, ... Pn} y  Recursos R = {R1, R2, ..., Rm} Dos tipos de flechas:  De asignacin Rj Pi  De peticin Pi Rj

1999-2001 Sebastin Snchez Prieto

Sincronizacin de procesos 6

Ejemplo
P1 R3

R1 P2

R2

P3

1999-2001 Sebastin Snchez Prieto

Sincronizacin de procesos 7

Ejemplo
P1

R1 P2

R2

Si en el grafo no existen ciclos se puede demostrar que no existe abrazo mortal, pero si existen ciclos, ste puede aparecer
Sincronizacin de procesos 8

1999-2001 Sebastin Snchez Prieto

Cmo prevenir el abrazo mortal


 

Solucin: eliminar una cualesquiera de las cuatro condiciones necesarias para que ste se produzca Exclusin mutua  En general no podremos modificar este aspecto  Razn: existen recursos intrnsecamente no compartibles

1999-2001 Sebastin Snchez Prieto

Sincronizacin de procesos 9

Cmo prevenir el abrazo mortal


 

Posesin y espera Mtodos:  Los procesos al comienzo de su ejecucin solicitan todos los recursos que van a necesitar  Conceder recursos slo a los procesos que no poseen ninguno. Antes de pedir un recurso tiene que liberar los que en este momento posee  Problemas: baja utilizacin de los recursos y posible inanicin

1999-2001 Sebastin Snchez Prieto

Sincronizacin de procesos 10

Cmo prevenir el abrazo mortal




No apropiacin  Mtodo: si un proceso solicita un recurso, y ste no est disponible, nos apropiamos de todos los recursos que posee  Problema: existen recursos que no pueden ser asignados y retirados cuando nos de la gana

1999-2001 Sebastin Snchez Prieto

Sincronizacin de procesos 11

Cmo prevenir el abrazo mortal




Espera circular  Mtodo: asignamos a cada recurso un nmero natural N que lo diferencie del resto  Si obligamos a que los procesos soliciten los recursos en orden creciente acorde a sus nmeros, nunca puede producirse el abrazo mortal

1999-2001 Sebastin Snchez Prieto

Sincronizacin de procesos 12

Mtodos alternativos
  

Los mtodos que describiremos van a ser ms efectivos, a costa de mantener mayor informacin En funcin de esa informacin, podremos proponer diversos algoritmos para evitar el bloqueo Los algoritmos ms sencillos y efectivos se basan en conocer la cantidad mxima de recursos que va a necesitar cada proceso En funcin de esa cantidad mxima de recursos y del estado actual de asignacin, el algoritmo determinar si las nuevas solicitudes son satisfechas o no, con objeto de evitar los estados inseguros
Sincronizacin de procesos 13

1999-2001 Sebastin Snchez Prieto

Manejo de abrazo mortal




Qu se puede hacer con el abrazo mortal?  Preasignacin de recursos  Asignacin con restricciones  Deteccin y recuperacin  Ignorarlo La ltima alternativa es la ms simple y la menos efectiva, pero quizs sea la ms ampliamente utilizada

1999-2001 Sebastin Snchez Prieto

Sincronizacin de procesos 14

Preasignacin de recursos
   

Cuando un proceso comienza determina los recursos que va a usar Cuando todos estn disponibles, comienza Utilizado en el sistema OS/360 Inconvenientes:  Es necesario conocer a priori los recursos que se van a emplear  Puede que algn recurso solicitado no se emplee  Se obtiene una baja utilizacin de los mismos

1999-2001 Sebastin Snchez Prieto

Sincronizacin de procesos 15

Asignacin con restricciones


 

 

El usuario est obligado a establecer a priori qu recursos va a utilizar Al contrario que en el caso anterior, el proceso comienza su ejecucin y se le van asignando recursos dinmicamente Antes de asignar los recursos se comprueba que el sistema permanece en un estado seguro Qu es un estado seguro?

1999-2001 Sebastin Snchez Prieto

Sincronizacin de procesos 16

Estado seguro


Se dice que un estado es seguro si el sistema puede asignar, en algn orden, recursos a los procesos evitando el abrazo mortal
Proceso P1 P2 P3 Necesidad mxima 9 7 3 Asignados 3 4 1

Si inicialmente tenemos 8 ejemplares del recurso la secuencia <P3, P2, P1> permite la finalizacin de los tres procesos
Sincronizacin de procesos 17

1999-2001 Sebastin Snchez Prieto

Ejemplos
Caso 1: 1 recurso libre. Estado seguro?
Proceso P1 P2 P3 P4 Proceso P1 P2 P3 P4 Necesidad mxima 10 9 5 3 Necesidad mxima 10 9 4 7 Asignados 3 4 2 2

Caso 2: 2 recursos libres. Estado seguro?


Asignados 3 4 2 2
Sincronizacin de procesos 18

1999-2001 Sebastin Snchez Prieto

Estados seguro e inseguro


  

Los estados inseguros no siempre conducen a un abrazo mortal Un estado con un abrazo mortal es un estado inseguro Si los estados son seguros el sistema operativo evita los abrazos mortales
Estado inseguro Estado seguro
Abrazo mortal

1999-2001 Sebastin Snchez Prieto

Sincronizacin de procesos 19

Algoritmo del banquero




  

Se denomina as porque puede utilizarse en un banco para asegurar que el banco siempre disponga del suficiente dinero efectivo para satisfacer la necesidad de todos sus clientes Cuando un proceso inicia su sesin, debe declarar la mxima cantidad de recursos que va a necesitar Si esta cantidad es mayor que la cantidad disponible, el proceso no se puede ejecutar A partir de este punto, el sistema asignar los recursos, mantenindose siempre en un estado seguro
Sincronizacin de procesos 20

1999-2001 Sebastin Snchez Prieto

Estructuras de datos necesarias


  

Disponibles: es un vector de longitud m que indica el nmero de recursos disponibles de cada tipo Si Disponible[i]=k, quiere decir que hay k ejemplares del recurso Ri disponibles Mximo: es una matriz de n x m elementos que define la mxima demanda de recursos de cada proceso Si Mximo[i,j]=k, Entonces el proceso Pi puede requerir hasta un mximo de k ejemplares del recurso Rj

1999-2001 Sebastin Snchez Prieto

Sincronizacin de procesos 21

Estructuras de datos necesarias




 

Asignados: es una matriz de n x m elementos que define el nmero de ejemplares de cada recurso que estn asignadas en ese momento Si Asignados[i,j]=k quiere decir que el proceso Pi tiene asignados k ejemplares del recurso Rj Necesitados: es una matriz de n x m elementos que indica el nmero de ejemplares necesitados por cada uno de los procesos en un instante determinado Si Necesitados[i,j]=k, entonces el proceso Pi necesita k ejemplares ms del recurso Rj
Sincronizacin de procesos 22

1999-2001 Sebastin Snchez Prieto

Notacin


 

Obsrvese que:  Necesitados[i,j] = Max[i,j] - Asignados[i,j] Si X e Y son dos vectores de longitud n, entonces X<=Y si y slo si X[i]<=Y[i] para todo i Cada columna de las matrices Necesitados y Asignados representa la situacin de cada uno de los procesos As Necesitadosi indica todas las instancias de cada recurso necesitadas por el proceso Pi

1999-2001 Sebastin Snchez Prieto

Sincronizacin de procesos 23

Algoritmo del banquero


1. Si Pedidosi <= Necesitadosi ir al paso 2 si no error 2. Si Pedidosi <= Disponiblesi ir al paso 3 si no el proceso debe esperar hasta que los recursos estn disponibles 3. Disponibles = Disponibles - Pedidosi Asignadosi = Disponiblesi + Pedidosi Necesitadosi = Necesitadosi - Pedidosi 4. Si el estado resultante es seguro al proceso se le asignan los recursos, si no es seguro el proceso debe esperar y se restaura el estado de los recursos
1999-2001 Sebastin Snchez Prieto Sincronizacin de procesos 24

Algoritmo de seguridad
Sean DisponiblesAux y Terminado dos vectores de longitudes m y n respectivamente 1. Inicialmente DisponiblesAux=Disponible y Terminado[i]=FALSE para todo i 2. Encontrar un i que cumpla las condiciones: a. Terminado[i]=FALSE b. Necesitadosi<=DisponiblesAux Si no existe tal i, pasar al paso 4. 3. DisponiblesAux=DisponiblesAux+Asignadosi Terminado[i]=TRUE Ir al paso 2 4. Si Terminado[i]=TRUE para todo i, entonces el sistema est en estado seguro

1999-2001 Sebastin Snchez Prieto Sincronizacin de procesos 25

Algoritmo de peticin de recursos


Sea Peticioni el vector de peticiones asignado a Pi  Si Peticioni[j]=k, entonces Pi quiere k ejemplares de Rj  Cuando llega una nueva peticin de recursos por parte de Pi: 1. Si Peticioni <= Necesitadosi, ir al paso 2. Si no, error, superado el mximo de peticiones de Pi. 2. Si Peticioni <= Disponible, ir al paso 3. Si no, Pi debe esperar hasta que se liberen recursos. 3. Realizar lo siguiente: Disponible=Disponible-Peticioni Asignados=Asignados+Peticioni Necesitados=Necesitados-Peticioni  Si el estado es seguro, se asignan recursos a Pi, si no Pi espera

1999-2001 Sebastin Snchez Prieto Sincronizacin de procesos 26

Ejemplo
 

El recurso A tiene 10 ej., B tiene 5 y C tiene 7 Estado seguro?


Proceso Asignados Mximo Disponible Necesitados A B C A B C A B C A B C P0 0 1 0 7 5 3 3 3 2 7 4 3 P1 2 0 0 3 2 2 1 2 2 P2 3 0 2 9 0 2 6 0 0 P3 P4 2 1 1 0 0 2 2 2 2 4 3 3 0 1 1 4 3 1

S: La secuencia <P1, P3, P4, P2, P0> satisface el criterio o algoritmo de seguridad
Sincronizacin de procesos 27

1999-2001 Sebastin Snchez Prieto

Ejemplo


Consideremos la peticin: Peticion1=(1, 0, 2) con ello tenemos el siguiente nuevo estado: Proceso Asignados Mximo Disponible Necesitados A B C A B C A B C A B C P0 0 1 0 7 5 3 2 3 0 7 4 3 P1 3 0 2 3 2 2 0 2 0 P2 3 0 2 9 0 2 6 0 0 P3 2 1 1 2 2 2 0 1 1 P4 0 0 2 4 3 3 4 3 1 Estado seguro? S: Secuencia <P1, P3, P4, P0, P2> Qu ocurrira si ahora Peticion4=(3,3,0)? Y con Peticion0=(0,2,0)?
Sincronizacin de procesos 28

   

1999-2001 Sebastin Snchez Prieto

Deteccin del abrazo mortal




 

Si un sistema no emplea una prevencin de los abrazos mortales puede ocurrir un abrazo. Entonces el sistema debe proporcionar:  Un algoritmo para examinar cada estado del sistema  Un algoritmo para recuperarse de los abrazos Un algoritmo de deteccin y recuperacin necesita mantener cierta informacin Adems existen ciertas prdidas cuando nos recuperamos de un abrazo (i. e. tiempo que los procesos no se ejecutan)
Sincronizacin de procesos 29

1999-2001 Sebastin Snchez Prieto

Deteccin mediante grafo de espera


Slo vlido cuando el # de ejemplares x recurso = 1  Generacin del grafo de espera R3 P4 P4 P1 P1


R1 P2

R2 R4 P3 P2 P3

Si en el grafo de espera no hay bucles -> no hay interbloqueo


Sincronizacin de procesos 30

1999-2001 Sebastin Snchez Prieto

Deteccin general


Como algoritmo de deteccin se puede emplear una variante del algoritmo de seguridad visto anteriormente Estructuras de datos:  Disponibles: es un vector de longitud m que indica el nmero de recursos disponibles  Asignados: es una matriz de n x m elementos que define el nmero de ejemplares de cada recurso que estn asignadas en ese momento  Solicitados: es una matriz de n x m elementos que indica el nmero de ejemplares solicitados por cada proceso
Sincronizacin de procesos 31

1999-2001 Sebastin Snchez Prieto

Algoritmo
1. Inicialmente DisponiblesAux=Disponible. 2. Para cada proceso si Asignadosi!=0 Terminado[i]=FALSE, en otro caso Terminado[i]=TRUE 3. Encontrar un i que cumpla las condiciones: a. Terminado[i]=FALSE b. Solicitadosi<=DisponiblesAux Si no existe tal i, pasar al paso 5 4. DisponiblesAux=DisponiblesAux+Asignadosi Terminado[i]=TRUE Ir al paso 3 5. Si al terminar tenemos algn proceso con Terminado[i]=FALSE, estos procesos se encontrarn en abrazo mortal
1999-2001 Sebastin Snchez Prieto Sincronizacin de procesos 32

Recuperacin del abrazo mortal


 

Avisar al operador y dejar que decida Terminacin de procesos  Abortar todos los proceso implicados  Ir abortando procesos uno a uno hasta que eliminemos el abrazo mortal  Se abortan aquellos procesos cuya terminacin conlleva menor coste  Abortar un proceso no es fcil ->p.e. se pueden producir errores si se est guardando un fichero  Apropiacin de recursos
Sincronizacin de procesos 33

1999-2001 Sebastin Snchez Prieto

Criterios para elegir vctimas


     

Prioridad de los procesos Cunto tiempo se ha ejecutado y cunto le queda para terminar Cuntos y qu tipo de recursos ha usado Cuntos recursos necesita para terminar Cuntos procesos deben ser terminados Tipo de proceso: interactivo o bach

1999-2001 Sebastin Snchez Prieto

Sincronizacin de procesos 34

También podría gustarte