Sei sulla pagina 1di 34

Abrazo mortal

Rina Arauz

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

Forma de utilizar un recurso


Se pide
open, malloc, P, etc.

Se usa

Se devuelve

close, free, V, etc.

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

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

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

Sincronizacin de procesos 6

Ejemplo
P1 R3

R1 P2

R2

P3

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

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

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

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

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

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

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

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

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?

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

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

Caso 2: 2 recursos libres. Estado seguro?


Necesidad mxima 10 9 4 7 Asignados 3 4 2 2
Sincronizacin de procesos 18

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

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

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

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

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

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
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

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

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 2 1 1 2 2 2 0 1 1 P4 0 0 2 4 3 3 4 3 1

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

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

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

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

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

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
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

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

Sincronizacin de procesos 34

Potrebbero piacerti anche