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

⚡ Resumen inteligente

El interbloqueo en un sistema operativo se produce cuando un conjunto de procesos se bloquean porque cada uno posee un recurso y espera otro que está en manos de un proceso diferente, creando una cadena circular en la que ningún proceso puede continuar.

  • 🔒 Definición: Un interbloqueo congela los procesos que poseen un recurso mientras esperan a que otros finalicen su ejecución.
  • 🧩 Cuatro condiciones: La exclusión mutua, la espera pasiva, la no preeminencia y la espera circular deben coexistir.
  • 🔁 Espera circular: Los procesos forman una cadena cerrada, donde cada uno espera un recurso que posee el siguiente.
  • 🛡️ Prevención: Si se incumple cualquiera de las cuatro condiciones, se evita que se produzca un punto muerto.
  • 🏦 Evitación: El algoritmo del banquero comprueba las solicitudes de recursos para mantener el sistema en un estado seguro.
  • 🤖 Perspectiva de la IA: El aprendizaje automático detecta patrones de interbloqueo, y Copilot ayuda a escribir y revisar el código de bloqueo.

Punto muerto en Operating sistema

¿Qué es un bloqueo?

Deadlock es una situación que ocurre en un sistema operativo El interbloqueo es un problema común en el procesamiento paralelo, donde varios procesos comparten un tipo específico de recurso mutuamente excluyente, conocido como bloqueo suave o bloqueo de software.

Cuando se produce un bloqueo, ninguno de los procesos implicados puede continuar, por lo que el trabajo afectado se detiene hasta que interviene el sistema operativo.

Ejemplo de bloqueo

  • Un ejemplo real sería el tráfico que circula en una sola dirección.
  • Aquí, un puente se considera un recurso.
  • Por lo tanto, cuando se produce un bloqueo, se puede resolver si un coche retrocede (se apropian recursos y se revierte la operación).
  • Es posible que sea necesario hacer marcha atrás con varios vehículos si se produce una situación de bloqueo.
  • Por lo tanto, la inanición es posible.

Ejemplo de bloqueo

Ejemplo de interbloqueo

¿Qué es la espera circular?

Un proceso espera un recurso que está en posesión de un segundo proceso, que a su vez espera un recurso que está en posesión de un tercer proceso, y así sucesivamente. Esto continúa hasta que el último proceso espera un recurso que está en posesión del primer proceso. Esto crea una cadena circular.

Por ejemplo, al Proceso A se le asigna el Recurso B mientras lo solicita. De igual manera, al Proceso B se le asigna el Recurso A mientras lo solicita. Esto crea un bucle de espera circular.

Ejemplo de espera circular

Por ejemplo, un ordenador tiene tres unidades USB y tres procesos. Cada uno de los tres procesos utiliza una de las unidades USB. Por lo tanto, cuando cada proceso solicita otra unidad, los tres procesos entran en un estado de bloqueo, ya que cada uno espera a que se libere una unidad USB mientras aún está en uso. Esto genera un bucle infinito.

Ejemplo de espera circular

Ejemplo de espera circular

Detección de bloqueos en el sistema operativo

El planificador de recursos puede detectar un interbloqueo. Un planificador de recursos ayuda al sistema operativo a mantener... track de todos los recursos que se asignan a diferentes procesos. Una vez que se detecta un interbloqueo, se puede resolver expropiando recursos, revirtiendo un proceso o terminando uno o más de los procesos bloqueados.

Prevención de bloqueos en el sistema operativo

Es fundamental prevenir un interbloqueo antes de que ocurra. El sistema verifica cada transacción antes de su ejecución para asegurarse de que no provoque un interbloqueo. Incluso una operación pequeña que podría causar un interbloqueo en el futuro nunca se ejecuta.

La prevención de bloqueos mutuos es un conjunto de métodos para garantizar que al menos una de las cuatro condiciones necesarias no pueda cumplirse.

Sin preferencia

Un recurso solo puede ser liberado voluntariamente por el proceso que lo retiene, una vez que dicho proceso haya finalizado su tarea.

  • Si un proceso que está utilizando algunos recursos solicita otro recurso que no se le puede asignar de inmediato, entonces se liberan todos sus recursos.
  • Los recursos que han sido interrumpidos se añaden a la lista de recursos que el proceso está esperando.
  • El proceso se reinicia únicamente cuando puede recuperar sus recursos anteriores, así como los nuevos que está solicitando.

Exclusión mutua

Exclusión Mutua es la forma completa de Mutex. Es un tipo especial de binario. semáforo Se utiliza para controlar el acceso a un recurso compartido. Incluye un mecanismo de herencia de prioridad para evitar problemas de inversión de prioridad prolongados y mantiene las tareas de mayor prioridad bloqueadas durante el menor tiempo posible.

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

Espera y espera

En esta condición, se debe impedir que los procesos mantengan uno o más recursos mientras esperan simultáneamente por uno o más recursos.

Espera circular

Este método impone un ordenamiento total de todos los tipos de recursos. La prevención de esperas circulares también requiere que cada proceso solicite recursos en orden ascendente de enumeración.

Evitar puntos muertos Algorithms

Es preferible prevenir un interbloqueo que actuar una vez que este se ha producido. Para evitarlo, se necesita información adicional, como la forma en que se utilizarán los recursos. Un modelo útil para prevenir interbloqueos es aquel en el que cada proceso declara la cantidad máxima de recursos de cada tipo que podría necesitar.

Evitación Algorithms

El algoritmo para evitar interbloqueos evalúa dinámicamente el estado de asignación de recursos, de modo que nunca se produzca una situación de espera circular.

Para una única instancia de un tipo de recurso:

  • Utilice un gráfico de asignación de recursos.
  • Un ciclo en el grafo es necesario y suficiente para que se produzca un interbloqueo.

Para múltiples instancias de un tipo de recurso:

  • Un ciclo es necesario pero no suficiente para que se produzca un bloqueo mutuo.
  • Utilice el Algoritmo del banquero.

Diferencia entre inanición y punto muerto

Aquí hay algunas diferencias importantes entre el bloqueo y la inanición:

Deadlock Hambre
La situación de interbloqueo 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 bloquean mientras que los procesos de alta prioridad se ejecutan.
El bloqueo es un proceso infinito. La inanición es una larga espera, pero no un proceso infinito.
Todo punto muerto siempre conlleva inanición. No toda hambruna implica necesariamente un punto muerto.
El bloqueo se produce debido a la exclusión mutua, la espera prolongada, la falta de expropiación y la espera circular que ocurren simultáneamente. Esto ocurre debido a prioridades no controladas y una mala gestión de los recursos.

Ventajas del bloqueo

Estas son las ventajas de utilizar el método de manejo de interbloqueos:

  • Esta situación funciona bien para procesos que realizan una única ráfaga de actividad.
  • No se necesita ninguna interrupción para evitar el interbloqueo.
  • Es un método práctico cuando se aplica a recursos cuyo estado se puede guardar y restaurar fácilmente.
  • Es factible implementarlo mediante comprobaciones en tiempo de compilación.
  • No requiere cálculos en tiempo de ejecución, ya que el problema se resuelve en el diseño del sistema.

Desventajas del bloqueo

Estas son las desventajas de utilizar el método de manejo de interbloqueos:

  • Retrasa el inicio del proceso.
  • Los procesos deben conocer de antemano sus necesidades futuras de recursos.
  • Se anticipa más de lo necesario.
  • No permite solicitudes incrementales de recursos.
  • Tiene pérdidas inherentes por preeminencia.

Preguntas Frecuentes

Para que se produzca un interbloqueo, es necesario que se cumplan simultáneamente las cuatro condiciones de Coffman: exclusión mutua, espera y retención, ausencia de expropiación y espera circular. Eliminar cualquiera de estas condiciones impide que se produzca un interbloqueo.

La prevención elimina una de las cuatro condiciones de antemano para que nunca se pueda formar un interbloqueo. La evitación permite las condiciones pero utiliza comprobaciones en tiempo de ejecución, como la Algoritmo del banqueropara mantener el sistema en un estado seguro.

En un interbloqueo, los procesos bloqueados se detienen por completo y nunca cambian de estado. cerco vivoLos procesos cambian de estado constantemente y utilizan la CPU, pero no logran avanzar. El bloqueo mutuo es un caso especial de escasez de recursos.

La mayoría de los sistemas de propósito general, incluidos Windows En Linux, se utiliza el algoritmo del avestruz, ignorando simplemente los interbloqueos poco frecuentes, ya que su prevención resulta costosa. En cambio, las bases de datos y los sistemas en tiempo real ejecutan rutinas activas de detección y recuperación.

Un grafo de asignación de recursos representa los procesos y los recursos como nodos unidos por aristas de solicitud y asignación. Un ciclo en el grafo indica un posible interbloqueo; con recursos de instancia única, un ciclo siempre significa que existe un interbloqueo.

No. Un verdadero interbloqueo es permanente, ya que los procesos bloqueados nunca liberan sus recursos por sí solos. El sistema operativo debe resolverlo mediante la apropiación indebida de un recurso, la reversión de la transacción o la finalización de uno de los procesos.

Los modelos de aprendizaje automático aprenden patrones de solicitud de recursos para predecir y detectar interbloqueos antes de que ocurran. Los planificadores de IA pueden reordenar las solicitudes o ajustar las políticas de bloqueo, lo cual resulta útil en bases de datos, plataformas en la nube y sistemas distribuidos.

Sí. GitHub Copilot puede detectar órdenes de bloqueo riesgosas, sugerir la adquisición consistente de bloqueos y generar pruebas que expongan interbloqueos. Considere su resultado como una primera aproximación y verifique la lógica de concurrencia con las herramientas de análisis adecuadas.

Resumir este post con: