miércoles, 28 de noviembre de 2012

2.4.3.3 Recuperación.

Recuperación ante Deadlocks
  1. Cancelación de procesos
    1. Cancelación de todos los procesos involucrados. Esto resuelve la situación de Deadlock pero tiene un costo muy alto de reprocesamiento.
    2. Cancelacion de un proceso por vez hasta resolver la situación de Deadlock. La ventaja de esto es que el costo de reprosesamiento de la información es menor pero cada vez que se cancela un proceso debe ejecutarse el algoritmo de detección de deadlock. Los criterios para elegir el candidato a ser cancelado son: por prioridad, por tiempo de uso de CPU, por cantidad de recursos utilizados y por cuantos recursos adicionales habrá de utilizar.
  2. Obtención de recursos (resourse Preemption). El sistema operativo selecciona un proceso y le quita los recursos otorgados. Los criterios para seleccionar el candidato son los mismos que para la cancelación. El proceso seleccionado se le quitan los recursos y se le lleva a un estado consistente (Rollback).
Recuperación de un Dead Lock.

            La única forma en que el sistema operativo puede recuperarse de  un interbloqueo es retirando uno o más procesos y reclamar sus recursos para que otros procesos puedan terminar. Normalmente varios procesos perderán una parte o la totalidad del trabajo realizado hasta ese momento. Este puede parecer un precio pequeño comparado con dejar que el interbloqueo se complique por  varios factores.

*          En primer lugar, puede no estar claro que el sistema este bloqueado o no.
*         Muchos sistemas tienen medios pobres para suspender un proceso por tiempo   indefinido y reanudarlo más tarde.
*          Aún cuando existan medios efectivos de suspensión /reanudación, con toda seguridad, estos   implicarán una sobrecarga, considerable y pueden requerir la atención de un  operador  altamente calificado. No siempre se dispone de tales operadores.
*          Recuperarse de un interbloqueo de proporciones modestas puede suponer una cantidad razonable de trabajo.

Una  forma  de  elegir los procesos que pueden ser retirados es de acuerdo a las prioridades de los procesos. Pero esto también tiene sus dificultades.

*          Las prioridades de los procesos bloqueados pueden no existir, así que el operador deberá tomar una decisión arbitraria.
*          Las prioridades pueden ser incorrectas, o un poco confusas debido a consideraciones especiales.
*          La decisión óptima de cuáles procesos retirar pueden requerir de un esfuerzo considerable para determinarla.

            El enfoque más deseable a la recuperación del Dead Lock están un mecanismo efectivo de
Suspensión / reanudación. Esto permitirá detener temporalmente los procesos y después reanudarlos sin pérdida del trabajo.

MECANISMOS PARA EVITARLOS.

            Havender llegó a la conclusión de que si no se cumple una de las cuatro condiciones necesarias para el interbloqueo es posible que éste ocurra.

            Para evitarlo sugirió:

*          Cada proceso deberá pedir todos los recursos requeridos de una sola vez y no podrá proceder hasta que le hayan sido asignados todos.
*          Si un proceso que mantiene ciertos recursos se le niega una nueva petición, este proceso deberá liberar sus recursos originales y en caso necesario pedirlos de nuevo con los recursos adicionales.
*          Se impondrá la ordenación lineal de los tipos de recursos en todos los procesos, es decir, si a un proceso le han sido asignados recursos de un tipo dado, en lo sucesivo sólo podrá pedir aquellos recursos de los tipos que siguen en el ordenamiento.


Otra alternativa, para manejar los dead lock, es tener información acerca de como los recursos se van a requerir, el modelo más simple y más útil requiere que en cada proceso declare el máximo número de recursos que van a requerir con lo cual es posible construir un algoritmo que asegure que el sistema no entrara en dead lock.

            Un estado es  seguro si el sistema puede asignar recursos a cada proceso en algún orden evitando el dead lock.
            Formalmente un sistema esta en estado seguro solamente si existe una secuencia segura. Una secuencia de procesos < P1, P2, ... Pn> esta en secuencia segura si para cada  Pi,  los recursos que Pi pueda requerir pueden ser satisfechos por los recursos disponibles más los recursos que tuvieron los Pj  donde  j < i.  Si no se puede satisfacer Pi entonces Pi espera hasta que los Pj terminen.
            Cuando Pi termine  Pi+1 puede obtener sus recursos y así sucesivamente.
 Se tienen 12 unidades de cinta  se tiene 3 procesos ¿Ese sistema esta  en estado seguro o no?.

   Requerimiento procesos - recursos.

Requerimiento máximo - Necesidad actual = Necesidad más  (Disponible).
           
Se tiene 12 recursos por lo tanto 12-9 = 3, entonces la secuencia es segura.
            La secuencia segura es  < P1,P0,P2>           
Haga una situación en la cual el sistema estaría es estado inseguro.

Un estado seguro esta libre de dead lock y un estado de dead lock, es un estado inseguro pero no todos los estados inseguros producen dead lock.
            Si se esta en un estado seguro se puede pasar a un estado inseguro.



Estrategias para evitarlos.
            Evitación del interbloqueo y el algoritmo de Dijkstra. Si las condiciones necesarias para que tenga lugar un interbloqueo están en su lugar, aún es posible evitar el interbloqueo teniendo cuidado al asignar los recursos.
            El algoritmo de planificación que pueda evitar los interbloqueos fue ideado por Dijkstra (1965) y se le conoce como algoritmo del banquero. En ese algoritmo se modela la forma en que un banquero puede tratar a un grupo de clientes a quienes les ha otorgado líneas de crédito. en la (figura # 36 (a)) se observan cuatro clientes, a cada uno de los cuales se le ha otorgado cierto número de unidades de crédito. El banquero sabe que los clientes no necesitan su límite de crédito máximo de inmediato, de manera que sólo ha reservado 10 unidades en lugar de 22 para darles servicio.
            Los clientes emprenden sus respectivos negocios, haciendo solicitudes de préstamo de cuando en cuando.  En cierto momento). A una lista de clientes que muestra el dinero que ya se presentó y el máximo del crédito disponible se le llama estado del sistema.

 Tres estados de asignación de recursos
(a)   Seguro.   (b) Seguro.   (c) Inseguro.
Un estado es seguro si existe una secuencia de estados que lleva a todos los clientes que obtienen préstamos hasta sus límites de crédito. es seguro por que con las dos restantes, el banquero puede demorar  cualquier solicitud salvo la de Carlos, con lo que permite que termine y devuelva sus cuatro recursos. Con cuatro unidades, el banquero puede permitir que David o Bárbara tengan las unidades que necesitan para terminar y así sucesivamente.

            Si  estando  en  el estado de la se le otorga una unidad más a Bárbara,  
 el banquero  no podrá completar ninguna de la línea de crédito de su clientes. Un estado inseguro no tiene que conducir a un interbloqueo, ya que un cliente podría  no necesitar su línea de crédito disponible, pero el banquero no puede confiar en ese comportamiento.

            Haciendo una analogía con un Sistema Operativo tenemos: El estado actual del sistema se denomina seguro, Si el Sistema Operativo puede permitir a los usuarios actuales completar sus trabajos en un intervalo de tiempo finito. De lo contrario se le denomina inseguro. En otras palabras: Un estado seguro es aquel en el cual la asignación de recursos es tal que los usuarios pueden llegar a terminar. Un estado seguro es aquel que puede llegar a terminar. Un estado inseguro es aquel que puede llegar a un dead lock, (nunca termina).

La asignación de recursos por el algoritmo del banquero es la siguiente:

*          Se permite todas las condiciones de exclusión mutua, espera por y no apropiatividad.
*          Se permite a los procesos mantener sus recursos mientras esperan por otros.
*          El sistema sólo concede peticiones que den como resultado estados seguros.

*  El algoritmo del banquero para  n  recursos (de Dijkstra).

            Sea  n  un número de proceso y  m  un número de recurso y sea disponible un vector de longitud m  que indica el número de recursos disponibles y sea máxima una matriz de ( n x  m) que define  la máxima demanda de cada proceso así por ejemplo si tuviéramos máxima ( i,j ) = k define los  recursos asignados a cada proceso, por ejemplo la asignación ( i , j ) = k quiere decir que el proceso i tiene asignado K instancias del recurso j  necesidades ( n * m ), que indica los recursos que requieren los procesos. Necesidades ( i , j ) = Máxima  ( i , j ) - Asignación ( i , j ).
            Se puede considera cada renglón de las matrices asignación y necesidades como vectores y referirnos como asignación de i y necesidades de i.


Algoritmo:

            Sea requerimiento de i un vector de requerimientos de proceso i.
           
            Cuando un requerimiento de un recurso es hecho por el proceso i se realizaran las siguientes acciones:

1).-      Si Requerimiento de i <= Necesidades de i  ir al segundo paso. Sino error.
2).-      Si requerimiento de  i <=  disponible  ir al tercer paso. Si no recurso no disponible Pi  debe esperar.
3).-      Hacer Disponible = Disponible - Requerimiento,
            Asignación = Asignación  +  Requerimiento,
            Necesidades = Necesidades - Requerimiento.

            Si el estado es seguro se completa la transacción de lo contrario el proceso debe esperar y el estado anterior es restablecido.

            Algoritmo para ver si el estado es seguro.

            Sea trabajo (m)  y final (n) vectores de longitud  m  y  n  respectivamente, hacer                                      Trabajo =  Disponible y final ( i ) =  falso  para i = 1,...n

1).-      Encuentre una  i  tal que final  ( i )  de i = falso y Necesidades ( i ) <= Trabajo  si no existe ir al punto tres.
2).-      Trabajo  =  Trabajo  +  Asignación ( i ), Final ( i ) = verdad  ir al paso uno.
3).-      Si  final ( i)  =  verdad  para toda  i  entonces el sistema esta en estado seguro de lo contrario esta en estado inseguro.


No hay comentarios:

Publicar un comentario