JAIR CAMPOS DELGADO INGENIERO DE SISTEMAS UNIVERSIDAD AUTONOMA DE COLOMBIA
Sistemas Operativos  
 
  Interbloqueo 06-05-2024 22:39 (UTC)
   
 

INTERBLOQUEO

El interbloqueo es una anomalía que puede ocurrir durante la ejecución de procesos concurrentes debido a la competencia por los recursos.
Si bien es cierto que prácticamente ningún sistema operativo real incorpora mecanismos de tratamiento
de interbloqueo, esto es debido a una cuestión de la pérdida de rendimiento que conlleva su tratamiento para la baja probabilidad que hay de que ocurra. En un sistema operativo ideal,
sin embargo, sí deberían incluirse mecanismos para su tratamiento, dado que existen y son bien
conocidos.

El interbloqueo es un problema que afecta a procesos concurrentes que utilizan recursos en un sistema.
 Los procesos solicitan recursos al sistema y los liberan cuando ya no los necesitan. Un recurso puede estar disponible o bien asignado a algún proceso.

Ejemplares. Puede haber varios ejemplares de un mismo tipo de recurso (ej. Varias impresoras). En este caso, cuando un proceso solicita un recurso, se le concede cualquiera de los ejemplares que esté disponible.
Si un proceso solicita un recurso que no tiene ejemplares disponibles, el proceso queda bloqueado, esperando hasta que se le asigna un ejemplar.

El problema

Un conjunto de procesos bloqueados, cada uno de ellos esperando por un recurso que retiene otro proceso de ese conjunto.
Ningún proceso del conjunto puede avanzar
 Interbloqueo, bloqueo mutuo, abrazo mortal (deadlock).

Condiciones para el interbloqueo

 Si en un sistema se produce una situación de interbloqueo, entonces se cumplen simultáneamente estas cuatro condiciones:
Exclusión mutua. Los recursos no se pueden compartir.
Retención y espera. Un proceso que retiene uno o varios recursos se encuentran esperando por recursos asignados a otros procesos.
No expropiación. Un recurso sólo puede ser liberado por el proceso que lo retiene, voluntariamente.
Espera circular. Existe una serie de procesos en espera {Po, P1,...Pn} en la que todo Pi espera por un recurso retenido por Pi+1; y Pn espera por un recurso retenido por
Po.

 

Tratamiento del interbloqueo

Garantizar que en el sistema nunca ocurren interbloqueos
Prevención: diseñar el sistema de manera que nunca se cumpla alguna de las cuatro condiciones del interbloqueo.
Evitación: tratar de no caer nunca en un estado de interbloqueo.
Permitir la aparición de interbloqueos y recuperarse cuando ocurran necesitamos un sistema de detección y un mecanismo de recuperación
No tratar el problema si hay interbloqueos, el usuario tiene que intervenir

Prevención del interbloqueo

Se trata de eliminar la aparición de alguna de las cuatro condiciones necesarias para el interbloqueo.
Exclusión mutua. Depende de la naturaleza del recurso, así que esta condición no se puede eliminar.

Prevención del interbloqueo

Retención y espera. Hay que garantizar que un proceso no pueda quedar bloqueado si retiene algún recurso. ¿Cómo conseguirlo?
El proceso tiene que pedir todos sus recursos de una vez, p.ej. antes de empezar a ejecutarse efecto negativo: muchos recursos retenidos pero no usados, un proceso sólo puede solicitar recursos cuando no tiene ninguno asignado
Efecto negativo: puede ocurrir que tengamos que liberar un recurso y volver a pedirlo para poder solicitar otros recursos
En ambos caso puede que un proceso nunca se ejecute (inanición)

No expropiación. Permitir que el S.O. desasigne recursos a un proceso bloqueado.
Si un proceso se bloquea por un recurso, los recursos retenidos quedan a disposición de los procesos activos
El proceso bloqueado tiene ahora que esperar por todos los recursos
Penaliza a los procesos que necesitan muchos recursos
 Es posible seguir este protocolo en recursos cuyo estado se puede guardar fácilmente y después restaurarse (registros de CPU, espacio de memoria, ...). Generalmente no puede aplicarse a recursos tales como impresoras y unidades de cinta
Espera circular. Se puede evitar forzando un orden en la petición de los recursos.
Cada recurso tiene asignado un número de orden
Los recursos se deben pedir en orden ascendente
Aconsejable: el orden de petición de los recursos se establezca según el orden de uso normal de los recursos de un sistema
Efectos negativos
Se limita la libertad de escritura de código
Se puede inducir a una mala utilización de los recursos

Evitación del interbloqueo:
Algoritmo del banquero
 Se trata de conceder los recursos sólo cuando no representen un riesgo futuro de interbloqueo.
 Lo procesos han de declarar por anticipado la cantidad máxima de recursos que van a utilizar a lo largo de su vida
Estado seguro: un estado en el cual no hay riesgo inminente de interbloqueo. Un estado es seguro si en él podemos encontrar una secuencia segura con todos los procesos del sistema {P1, P2, ...,PN} es una secuencia segura si los recursos que Pi puede pedir en el peor caso se pueden atender con lo que hay disponible más los recursos poseídos por todos los procesos
Pj,j<i
Sólo concedemos recursos si el estado resultante tras la petición es seguro

¿Qué significa una secuencia segura?
Nos ponemos en el peor caso del sistema: que todos los procesos soliciten al mismo tiempo el máximo de recursos a los que tiene derecho
El primer proceso de la secuencia es uno que podría finalizar en ese peor caso, con los recursos disponibles en el sistema
El segundo proceso es uno que puede finalizar con lo que hay disponible más los recursos que liberaría el primer proceso
De la misma forma, los siguientes procesos pueden finalizar con los recursos que han liberado los anteriores en la secuencia
Y si todos los procesos pueden terminar, es que no hay interbloqueo

 Cuando un proceso realiza una petición, el SO calcula si tras conceder los recursos el sistema pasa a un estado seguro
Si el nuevo estado es seguro, se concede la petición
Si el nuevo estado no es seguro, el proceso queda bloqueado (aunque existan recursos suficientes para atender la petición). La petición se concede cuando se observa que no hay riesgo de interbloqueo

Ejemplo

Dos recursos R1 y R2, con 5 y 6 ejemplares
En el instante actual quedan libres 1 y 1 ejemplares




El estado es seguro porque existe la secuencia segura {Pc, Pa,
Pb}
¿Qué pasa si Pa pide un ejemplar de R1 y se lo damos?
 El sistema quedará en un estado inseguro

Detección del interbloqueo

El interbloqueo se puede detectar comprobando si existe una secuencia de terminación de procesos (similar al sec. seguro):

 

  • Sea L la lista de procesos del sistema y R el conjunto de recursos disponibles
  • Buscar en L un proceso que puede continuar con los recursos disponibles en R
  • Si no se encuentra ningún proceso, ir al paso 5
  • Suponer que P termina (lo retiramos de L) y que libera los recursos que retiene (los añadimos a R)
  • Volver al paso 1
  • Si L no está vacía, hay interbloqueo

    Recuperación del interbloqueo

     Un sistema que pretenda recuperarse del interbloqueo, debe invocar a un algoritmo de detección cuando lo considere oportuno (ej. periódicamente)

    1. Formas de intentar la recuperación:
    2.  Terminación de procesos
    3.  Expropiación de recursos

    Terminación de procesos

    1. matando a todos los procesos implicados (drástico)
    2. matando a uno de los procesos ¿cuál?
    3.  el que más recursos libere
    4. el que menos tiempo lleve en ejecución...
    5.  retrocediendo la ejecución de algún proceso ( rollback)
    6.  muy complicado de implementar y necesita que el programa esté diseñado para que pueda retroceder
    7.  Expropiación de recursos
    8.  Selección de la víctima

    ¿Qué recursos y de que procesos se expropian?
    Retroceso
     Si expropiamos un recurso de un proceso, ¿qué hacemos con ese proceso?
    En ambos casos (terminación de procesos o expropiación de recursos) hay que tener cuidado de no provocar la inanición de procesos

 

 
  SISTEMAS OPERATIVOS
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  JAIR CAMPOS DELGADO COD 47190
  SISTEMAS OPERATIVOS
• Creación de programas: el S.O. ofrece una variedad de caracterasticas y servicios, tales como los editores y los depuradores (debuggers), para ayudar al programador en la creación de programas.
• Ejecución de programas: para ejecutar un programa se necesita un cierto número de tareas. El S.O. administra todas estas tareas para el usuario.
• Acceso a los dispositivos de E/S: cada dispositivo de E/S requiere un conjunto propio y peculiar de instrucciones o de señales de control para su funcionamiento. El S.O. tiene en cuenta estos detalles.
• Acceso controlado a los archivos: en el caso de archivos, el control debe incluir una comprensi�n, no solo de la naturaleza del dispositivo de E/S sino del formato de los archivos y del medio de almacenamiento. Una vez más, es el S.O. el que se encarga de los detalles.
• Acceso al sistema: en el caso de un sistema compartido o público, el S.O. controla el acceso al sistema como un todo y a los recursos especificos del sistema. Las funciones de acceso pueden brindar protección a los recursos y los datos, ante usuarios no autorizados y debe resolver los conflictos en la propiedad de los recursos.
• Detección y respuesta a errores
• Contabilidad: el S.O. debe recoger estadasticas de utilización de los diversos recursos y supervisar los parametros de rendimiento tales como el tiempo de respuesta.
Hoy habia 17 visitantes (26 clics a subpáginas) ¡Aqui en esta página!
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis