Abrazo mortal Sebastián Sánchez Prieto. 1999-2001 Sebastián Sánchez Prieto Sincronización de...

34
Abrazo mortal Sebastián Sánchez Prieto

Transcript of Abrazo mortal Sebastián Sánchez Prieto. 1999-2001 Sebastián Sánchez Prieto Sincronización de...

Page 1: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Abrazo mortal

Sebastián Sánchez Prieto

Page 2: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 2

1999-2001 Sebastián Sánchez 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 situación 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, ningún proceso evoluciona Se dice que están en abrazo mortal o

interbloqueados

Page 3: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 3

1999-2001 Sebastián Sánchez Prieto

Forma de utilizar un recurso

Se pide

Se usa

Se devuelve

open, malloc, P, etc.

close, free, V, etc.

Page 4: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 4

1999-2001 Sebastián Sánchez Prieto

Tipos de recursos

Recursos apropiables (memoria): se pueden tomar del proceso que los posee sin producir daños

Recursos no apropiables (impresora): sólo pueden ser utilizados por un proceso a la vez

Los abrazos mortales pueden darse tanto con recursos hardware (impresora) como software (semáforos)

Cada recurso puede tener varios ejemplares Un conjunto de procesos se bloquea si cada

proceso del conjunto espera un evento que sólo puede ser provocado por otro proceso del conjunto

Page 5: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 5

1999-2001 Sebastián Sánchez Prieto

Condiciones

Exclusión mutua: los recursos implicados deben ser no compartibles

Posesión y espera: deben existir procesos que tienen asignados recursos y están esperando por otros recursos asignados a otros procesos

No apropiación: 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 simultánea, no existe el abrazo mortal

Page 6: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 6

1999-2001 Sebastián Sánchez Prieto

Grafo de asignación de recursos

Sirven para describir el abrazo mortal Consta de un conjunto de vértices (V) y un conjunto

de flechas (F) Dos tipos de vértices:

Procesos P = {P1, P2, ... Pn} y

Recursos R = {R1, R2, ..., Rm} Dos tipos de flechas:

De asignación Rj Pi

De petición Pi Rj

Page 7: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 7

1999-2001 Sebastián Sánchez Prieto

Ejemplo

P1

P2 P3

R1 R2

R3

Page 8: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 8

1999-2001 Sebastián Sánchez Prieto

Ejemplo

Si en el grafo no existen ciclos se puede demostrar que no existe abrazo mortal, pero si existen ciclos, éste puede aparecer

P1

P2

R1 R2

Page 9: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 9

1999-2001 Sebastián Sánchez Prieto

Cómo prevenir el abrazo mortal

Solución: eliminar una cualesquiera de las cuatro condiciones necesarias para que éste se produzca

Exclusión mutua En general no podremos modificar este aspecto Razón: existen recursos intrínsecamente no

compartibles

Page 10: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 10

1999-2001 Sebastián Sánchez Prieto

Cómo prevenir el abrazo mortal

Posesión y espera Métodos:

Los procesos al comienzo de su ejecución solicitan todos los recursos que van a necesitar

Conceder recursos sólo a los procesos que no poseen ninguno. Antes de pedir un recurso tiene que liberar los que en este momento posee

Problemas: baja utilización de los recursos y posible inanición

Page 11: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 11

1999-2001 Sebastián Sánchez Prieto

Cómo prevenir el abrazo mortal

No apropiación Método: 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

Page 12: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 12

1999-2001 Sebastián Sánchez Prieto

Cómo prevenir el abrazo mortal

Espera circular Método: asignamos a cada recurso un número

natural N que lo diferencie del resto Si obligamos a que los procesos soliciten los

recursos en orden creciente acorde a sus números, nunca puede producirse el abrazo mortal

Page 13: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 13

1999-2001 Sebastián Sánchez Prieto

Métodos alternativos

Los métodos que describiremos van a ser más efectivos, a costa de mantener mayor información

En función de esa información, podremos proponer diversos algoritmos para evitar el bloqueo

Los algoritmos más sencillos y efectivos se basan en conocer la cantidad máxima de recursos que va a necesitar cada proceso

En función de esa cantidad máxima de recursos y del estado actual de asignación, el algoritmo determinará si las nuevas solicitudes son satisfechas o no, con objeto de evitar los estados inseguros

Page 14: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 14

1999-2001 Sebastián Sánchez Prieto

Manejo de abrazo mortal

¿Qué se puede hacer con el abrazo mortal? Preasignación de recursos Asignación con restricciones Detección y recuperación Ignorarlo

La última alternativa es la más simple y la menos efectiva, pero quizás sea la más ampliamente utilizada

Page 15: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 15

1999-2001 Sebastián Sánchez Prieto

Preasignación de recursos

Cuando un proceso comienza determina los recursos que va a usar

Cuando todos estén disponibles, comienza Utilizado en el sistema OS/360 Inconvenientes:

Es necesario conocer a priori los recursos que se van a emplear

Puede que algún recurso solicitado no se emplee Se obtiene una baja utilización de los mismos

Page 16: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 16

1999-2001 Sebastián Sánchez Prieto

Asignación 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 ejecución y se le van asignando recursos dinámicamente

Antes de asignar los recursos se comprueba que el sistema permanece en un estado seguro

¿Qué es un estado seguro?

Page 17: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 17

1999-2001 Sebastián Sánchez Prieto

Estado seguro

Se dice que un estado es seguro si el sistema puede asignar, en algún orden, recursos a los procesos evitando el abrazo mortal

Proceso Necesidad máxima Asignados

P1

P2

P3

9

7

3

3

4

1

Si inicialmente tenemos 8 ejemplares del recurso la secuencia <P3, P2, P1> permite la finalización de los tres procesos

Page 18: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 18

1999-2001 Sebastián Sánchez Prieto

Ejemplos

Proceso Necesidad máxima Asignados

P1

P2

P3

10

9

5

3

4

2

P4 3 2

Caso 1: 1 recurso libre. ¿Estado seguro?

Proceso Necesidad máxima Asignados

P1

P2

P3

10

9

4

3

4

2

P4 7 2

Caso 2: 2 recursos libres. ¿Estado seguro?

Page 19: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 19

1999-2001 Sebastián Sánchez 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

Estadoseguro

Estadoinseguro

Abrazomortal

Page 20: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 20

1999-2001 Sebastián Sánchez Prieto

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 sesión, debe declarar la máxima 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, manteniéndose siempre en un estado seguro

Page 21: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 21

1999-2001 Sebastián Sánchez Prieto

Estructuras de datos necesarias

Disponibles: es un vector de longitud m que indica el número de recursos disponibles de cada tipo

Si Disponible[i]=k, quiere decir que hay k ejemplares del recurso Ri disponibles

Máximo: es una matriz de n x m elementos que define la máxima demanda de recursos de cada proceso

Si Máximo[i,j]=k, Entonces el proceso Pi puede requerir hasta un máximo de k ejemplares del recurso Rj

Page 22: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 22

1999-2001 Sebastián Sánchez Prieto

Estructuras de datos necesarias

Asignados: es una matriz de n x m elementos que define el número de ejemplares de cada recurso que están 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 número 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 más del recurso Rj

Page 23: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 23

1999-2001 Sebastián Sánchez Prieto

Notación

Obsérvese 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 sólo si X[i]<=Y[i] para todo i

Cada columna de las matrices Necesitados y Asignados representa la situación de cada uno de los procesos

Así Necesitadosi indica todas las instancias de cada recurso necesitadas por el proceso Pi

Page 24: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 24

1999-2001 Sebastián Sánchez Prieto

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 estén 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

Page 25: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 25

1999-2001 Sebastián Sánchez Prieto

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

Page 26: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 26

1999-2001 Sebastián Sánchez Prieto

Algoritmo de petición 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 petición de recursos por parte de P i:

1. Si Peticioni <= Necesitadosi, ir al paso 2. Si no, error, superado el máximo 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 P i, si no Pi espera

Page 27: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 27

1999-2001 Sebastián Sánchez Prieto

Proceso MáximoAsignados

P1

P2

P3

3 2 2

9 0 2

2 2 2

2 0 0

3 0 2

2 1 1

P4 4 3 30 0 2

P0 0 1 0

A B C A B C

7 5 3

Disponible

A B C

3 3 2

Necesitados

1 2 2

6 0 0

0 1 1

4 3 1

A B C

7 4 3

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

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

Page 28: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 28

1999-2001 Sebastián Sánchez Prieto

Proceso MáximoAsignados

P1

P2

P3

3 2 2

9 0 2

2 2 2

3 0 2

3 0 2

2 1 1

P4 4 3 30 0 2

P0 0 1 0

A B C A B C

7 5 3

Disponible

A B C

2 3 0

Necesitados

0 2 0

6 0 0

0 1 1

4 3 1

A B C

7 4 3

Ejemplo

Consideremos la petición: Peticion1=(1, 0, 2) con ello tenemos el siguiente nuevo estado:

¿Estado seguro? SÍ: Secuencia <P1, P3, P4, P0, P2>

¿Qué ocurriría si ahora Peticion4=(3,3,0)?

¿Y con Peticion0=(0,2,0)?

Page 29: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 29

1999-2001 Sebastián Sánchez Prieto

Detección del abrazo mortal

Si un sistema no emplea una prevención 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 detección y recuperación necesita mantener cierta información

Además existen ciertas pérdidas cuando nos recuperamos de un abrazo (i. e. tiempo que los procesos no se ejecutan)

Page 30: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 30

1999-2001 Sebastián Sánchez Prieto

Sólo válido cuando el # de ejemplares x recurso = 1 Generación del grafo de espera

Detección mediante grafo de espera

P1

P2

P3

R1R2

R3 P4

R4

P4P1

P2 P3

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

Page 31: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 31

1999-2001 Sebastián Sánchez Prieto

Detección general

Como algoritmo de detección se puede emplear una variante del algoritmo de seguridad visto anteriormente

Estructuras de datos: Disponibles: es un vector de longitud m que indica

el número de recursos disponibles Asignados: es una matriz de n x m elementos que

define el número de ejemplares de cada recurso que están asignadas en ese momento

Solicitados: es una matriz de n x m elementos que indica el número de ejemplares solicitados por cada proceso

Page 32: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 32

1999-2001 Sebastián Sánchez 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+Asignados i

Terminado[i]=TRUE

Ir al paso 3

5. Si al terminar tenemos algún proceso con Terminado[i]=FALSE, estos procesos se encontrarán en abrazo mortal

Page 33: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 33

1999-2001 Sebastián Sánchez Prieto

Recuperación del abrazo mortal

Avisar al operador y dejar que decida Terminación de procesos

Abortar todos los proceso implicados Ir abortando procesos uno a uno hasta que

eliminemos el abrazo mortal Se abortan aquellos procesos cuya terminación

conlleva menor coste Abortar un proceso no es fácil ->p.e. se pueden

producir errores si se está guardando un fichero Apropiación de recursos

Page 34: Abrazo mortal Sebastián Sánchez Prieto.  1999-2001 Sebastián Sánchez Prieto Sincronización de procesos 2 Planteamiento del problema n Deriva del hecho.

Sincronización de procesos 34

1999-2001 Sebastián Sánchez Prieto

Criterios para elegir víctimas

Prioridad de los procesos Cuánto tiempo se ha ejecutado y cuánto le queda

para terminar Cuántos y qué tipo de recursos ha usado Cuántos recursos necesita para terminar Cuántos procesos deben ser terminados Tipo de proceso: interactivo o bach