Punto muerto en OperaSistema de ting: ¿Qué es la espera circular? (Ejemplos)

¿Qué es un bloqueo?

Deadlock es una situación que ocurre en el sistema operativo cuando cualquier proceso entra en un estado de espera porque otro proceso en espera está reteniendo el recurso solicitado. El interbloqueo es un problema común en el multiprocesamiento donde varios procesos comparten un tipo específico de recurso mutuamente excluyente conocido como bloqueo suave o software.

Ejemplo de bloqueo

  • Un ejemplo del mundo real sería el tráfico, que va sólo en una dirección.
  • Aquí, un puente se considera un recurso.
  • Entonces, cuando ocurre un punto muerto, se puede resolver fácilmente si un automóvil retrocede (apropiarse de recursos y retroceder).
  • Es posible que sea necesario hacer marcha atrás con varios vehículos si se produce una situación de bloqueo.
  • Entonces morir de hambre es posible.
Ejemplo de bloqueo
Ejemplo de interbloqueo

¿Qué es la espera circular?

Un proceso está esperando el recurso, que está retenido por el segundo proceso, que también está esperando el recurso retenido por el tercer proceso, etc. Esto continuará hasta que el último proceso esté esperando un recurso retenido por el primer proceso. Esto crea una cadena circular.

Por ejemplo, al proceso A se le asigna el recurso B mientras solicita el recurso A. De la misma manera, al proceso B se le asigna el recurso A y solicita el recurso B. Esto crea un bucle de espera circular.

Ejemplo de espera circular

Por ejemplo, una computadora tiene tres unidades USB y tres procesos. Cada uno de los tres procesos puede alojar una de las unidades USB. Por lo tanto, cuando cada proceso solicita otra unidad, los tres procesos tendrán una situación de bloqueo, ya que cada proceso estará esperando a que se libere la unidad USB que está en uso en ese momento. Esto dará como resultado una cadena circular.

Ejemplo de espera circular

Ejemplo de espera circular

Detección de bloqueos en el sistema operativo

El programador de recursos puede detectar una situación de bloqueo. Un programador de recursos ayuda al sistema operativo a realizar un seguimiento de todos los recursos asignados a los diferentes procesos. Por lo tanto, cuando se detecta un bloqueo, se puede resolver utilizando los métodos que se indican a continuación:

Prevención de bloqueos en el sistema operativo

Es importante evitar un bloqueo antes de que se produzca. El sistema comprueba cada transacción antes de ejecutarla para asegurarse de que no provoque situaciones de bloqueo. De esta forma, incluso si se produjera un pequeño cambio, una operación que pudiera provocar un bloqueo en el futuro no permitiría que el proceso se ejecutara.

Es un conjunto de métodos para garantizar que al menos una de las condiciones no se cumpla.

Ninguna acción preventiva

Sin preferencia: un recurso sólo puede ser liberado voluntariamente por el proceso que lo retiene después de que ese proceso haya finalizado su tarea.

  • Si un proceso que retiene algunos recursos solicita otro recurso que no se le puede asignar inmediatamente, en esa situación, se liberarán todos los recursos.
  • Los recursos preferenciales requieren la lista de recursos para un proceso que está en espera.
  • El proceso se reiniciará sólo si puede recuperar su recurso antiguo y uno nuevo que está solicitando.
  • Si el proceso solicita algún otro recurso, cuando está disponible, entonces se le entregó al proceso solicitante.
  • Si está retenido por otro proceso que está esperando otro recurso, lo liberamos y se lo damos al proceso solicitante.

Exclusión mutua

La exclusión mutua es una forma completa de Mutex. Es un tipo especial de semáforo binario que se utiliza para controlar el acceso al recurso compartido. Incluye un mecanismo de herencia de prioridad para evitar problemas de inversión de prioridad extendida. Permite que las tareas actuales de mayor prioridad se mantengan en estado bloqueado durante el menor tiempo posible.

Los recursos compartidos, como los archivos de solo lectura, nunca provocan bloqueos, pero los recursos, como las impresoras y las unidades de cinta, necesitan acceso exclusivo por parte de un solo proceso.

Espera y espera

En esta condición, se deben detener los procesos que retienen uno o varios recursos mientras esperan simultáneamente uno o más.

Espera circular

Impone un ordenamiento total de todos los tipos de recursos. La espera circular también requiere que cada proceso solicite recursos en orden creciente de enumeración.

Evitar puntos muertos Algorithms

Es mejor evitar un bloqueo en lugar de tomar medidas después de que se haya producido. Se necesita información adicional, como por ejemplo cómo se deben utilizar los recursos. La evitación de bloqueos es el modelo más simple y útil, en el que cada proceso declara la cantidad máxima de recursos de cada tipo que puede necesitar.

Evitación Algorithms

El algoritmo de evitación de bloqueos le ayuda a evaluar dinámicamente el estado de asignación de recursos para que nunca pueda haber una situación de espera circular.

Una única instancia de un tipo de recurso.

  • Utilice un gráfico de asignación de recursos
  • Son necesarios ciclos que sean suficientes para el bloqueo

Varias instancias de un tipo de recurso.

  • Los ciclos son necesarios pero nunca suficientes para el bloqueo.
  • Utiliza el algoritmo bancario

Diferencia entre inanición y punto muerto

A continuación se muestran algunas diferencias importantes entre el bloqueo y la inanición:

Deadlock Hambre
La situación de bloqueo se produce cuando uno de los procesos queda bloqueado. La inanición es una situación en la que todos los procesos de baja prioridad se bloquearon y los procesos de alta prioridad se ejecutan.
El bloqueo es un proceso infinito. El hambre es una larga espera, pero no un proceso infinito.
En cada punto muerto siempre hay hambre. No toda hambruna tiene por qué acabar en un punto muerto.
Se produce un bloqueo y luego se produce la exclusión mutua, la retención y la espera. En este caso, la prelación y la espera circular no se producen simultáneamente. Ocurre debido a una gestión incontrolada de prioridades y recursos.

Ventajas del bloqueo

A continuación, se muestran las ventajas y beneficios de utilizar el método Deadlock.

  • Esta situación funciona bien para procesos que realizan una única ráfaga de actividad.
  • No se necesita prelación para el bloqueo.
  • Método conveniente cuando se aplica a recursos cuyo estado se puede guardar y restaurar fácilmente
  • Es factible aplicarlo mediante comprobaciones en tiempo de compilación.
  • No necesita cálculo en tiempo de ejecución ya que el problema se resuelve en el diseño del sistema.

Desventajas del bloqueo

A continuación, se presentan las desventajas/inconvenientes de utilizar el método de bloqueo.

  • Retrasa el inicio del proceso
  • Los procesos deben conocer las necesidades futuras de recursos.
  • Se adelanta más a menudo de lo necesario
  • No permite solicitudes de recursos incrementales
  • Pérdidas de preferencia inherentes.

Resumen

  • Definición de punto muerto: Es una situación que ocurre en OS cuando cualquier proceso entra en un estado de espera porque otro proceso en espera está reteniendo el recurso demandado
  • La espera circular ocurre cuando un proceso está esperando el recurso, que está en manos del segundo proceso, que también está esperando el recurso en manos del tercer proceso, etc.
  • El programador de recursos puede detectar la ocurrencia de un bloqueo.
  • Es importante evitar un bloqueo antes de que ocurra.
  • Un recurso sólo puede ser liberado voluntariamente por el proceso que lo retiene después de que ese proceso haya terminado su tarea.
  • La exclusión mutua es una forma completa de Mutex. Es un tipo especial de binario. semáforo que se utiliza para controlar el acceso al recurso compartido.
  • Retener y esperar es una condición en la que se deben detener los procesos para que no retengan uno o varios recursos mientras esperan simultáneamente a uno o más.
  • La evitación de bloqueos es el modelo más simple y útil: cada proceso declara la cantidad máxima de recursos de cada tipo que puede necesitar.
  • El algoritmo de evitación de bloqueos le ayuda a evaluar dinámicamente el estado de asignación de recursos para que nunca pueda haber una situación de espera circular.
  • El punto muerto es un proceso infinito, mientras que la inanición es una larga espera, pero no un proceso infinito.