Operating Systems Concurrency Deadlock and Starvation

Operating Systems Concurrency Deadlock and Starvation

Resumen Breve

Este video explica los conceptos de deadlock y starvation en sistemas operativos, proporcionando ejemplos y estrategias para prevenir, evitar y detectar deadlocks. Se discuten las condiciones necesarias para que ocurra un deadlock, así como diferentes enfoques para lidiar con ellos, incluyendo la prevención mediante la asignación anticipada de recursos, la evitación a través del algoritmo del banquero, y la detección con la posterior recuperación.

  • Deadlock ocurre cuando dos o más procesos están bloqueados indefinidamente, esperando por recursos que otros procesos tienen.
  • Starvation es cuando un proceso no puede acceder a los recursos que necesita debido a la continua asignación de esos recursos a otros procesos.
  • Hay tres estrategias principales para lidiar con deadlocks: prevención, evitación y detección.

Introducción al Deadlock y Starvation

El video introduce los temas de deadlock y starvation, explicando que se profundizará en estos escenarios y se explorarán medidas y mecanismos para abordar los problemas de concurrencia que estos generan. El objetivo es entender cómo los procesos pueden quedar bloqueados esperando recursos y cómo evitar o resolver estas situaciones.

¿Qué es un Deadlock?

Un deadlock ocurre cuando un proceso necesita un recurso que otro proceso tiene asignado, y este último a su vez necesita un recurso que el primero tiene, creando un ciclo de espera mutua. Ninguno de los procesos puede liberar sus recursos, resultando en un ciclo muerto donde ningún proceso puede avanzar. Se ilustra con el ejemplo de una intersección de tráfico donde los carros se bloquean mutuamente.

Visualización de Deadlocks con Diagramas

Para visualizar y evitar deadlocks, se pueden usar diagramas de procesos (JPDs) que muestran cómo los procesos se relacionan y solicitan recursos. Estos diagramas ayudan a identificar posibles escenarios de deadlock y a tomar medidas preventivas. Se explica cómo las rutas en estos diagramas pueden ayudar a evitar situaciones donde múltiples procesos compiten por los mismos recursos simultáneamente.

Tipos de Recursos: Reutilizables vs. Consumibles

Existen dos tipos de recursos que los procesos pueden solicitar: reutilizables y consumibles. Los recursos reutilizables, como la memoria o los dispositivos de entrada/salida, pueden ser usados repetidamente. Los recursos consumibles, como los mensajes o las señales, se "gastan" después de ser utilizados. Se dan ejemplos de cómo cada tipo de recurso puede llevar a un deadlock.

Ejemplo de Deadlock con Recursos Reutilizables

Se presenta un ejemplo de deadlock utilizando recursos reutilizables, específicamente la memoria. Dos procesos solicitan memoria en un sistema con capacidad limitada. Si ambos procesos solicitan una cantidad de memoria que excede la capacidad total y se esperan mutuamente para liberar memoria, se produce un deadlock.

Ejemplo de Deadlock con Recursos Consumibles

Se explica un ejemplo de deadlock con recursos consumibles, como mensajes entre procesos. Dos procesos necesitan información del otro para continuar, pero ambos están esperando un mensaje del otro, creando un ciclo de espera que impide que ambos avancen.

Gráficos de Asignación de Recursos

Se introducen los gráficos de asignación de recursos, donde los procesos se representan con círculos y los recursos con rectángulos. Las flechas indican si un proceso requiere un recurso o si un recurso está asignado a un proceso. Se muestra cómo una espera circular en estos gráficos indica un deadlock.

Espera Circular y Soluciones

Se explica la condición de espera circular, donde cada proceso en un ciclo está esperando un recurso que otro proceso en el ciclo tiene asignado. Una solución simple es agregar más instancias del recurso para romper el ciclo de espera. Se enfatiza que la definición de deadlock involucra dos o más procesos en espera circular.

Condiciones Necesarias para un Deadlock

Para que ocurra un deadlock, deben cumplirse cuatro condiciones: exclusión mutua, mantener y esperar, no apropiación y espera circular. Se explica cada una de estas condiciones y cómo su eliminación puede prevenir el deadlock.

Estrategias para Lidar con Deadlocks

Se describen tres enfoques para lidiar con deadlocks: prevención (asegurar que nunca ocurran), evitación (permitir que el sistema funcione pero tomar decisiones para evitar deadlocks) y detección (permitir que ocurran y luego recuperarse). Cada enfoque tiene sus propias técnicas y compromisos.

Prevención de la Exclusión Mutua

Para prevenir la exclusión mutua, se pueden emplear técnicas como solicitar todos los recursos al inicio del programa o liberar todos los recursos si un proceso se bloquea. Estas estrategias son estrictas y buscan evitar cualquier posibilidad de deadlock.

Prevención de la No Apropiación

Si se permite la capacidad de apropiación del sistema operativo, se pueden liberar los recursos originales de un proceso, guardando su estado en un "snapshot" y permitiendo que otros procesos utilicen los recursos. Esto requiere que el sistema operativo tenga la capacidad de apropiarse de los recursos.

Prevención de la Espera Circular

Para prevenir la espera circular, se puede definir un orden total de los tipos de recursos y hacer que los procesos los soliciten en orden ascendente. Esto evita que se formen ciclos de espera. Esta técnica es más adecuada para procesos batch donde se conoce el uso de los recursos de antemano.

Evitación de Deadlocks

La evitación de deadlocks implica tomar decisiones basadas en el conocimiento del futuro para evitar que ocurran. Esto se puede hacer denegando la asignación de un recurso o evitando que un proceso inicie si se prevé que causará un deadlock.

Algoritmo del Banquero

El algoritmo del banquero es una técnica para evitar deadlocks que utiliza matrices y vectores para determinar si un estado es seguro. Se analiza la matriz de solicitud (claim matrix), la matriz de asignación, y los vectores de recursos disponibles y totales para encontrar una ruta segura de asignación de recursos.

Ventajas y Limitaciones de la Evitación

La evitación de deadlocks no requiere la capacidad de apropiación del sistema operativo y es menos restrictiva que la prevención. Sin embargo, requiere monitorear matrices y tener una cantidad fija de recursos, lo que puede ser costoso y complicado.

Detección de Deadlocks

La detección de deadlocks implica permitir que ocurran y luego identificarlos. Esto requiere preguntar constantemente si hay deadlocks y tomar medidas para resolverlos. Los algoritmos de detección utilizan matrices similares a las del algoritmo del banquero.

Algoritmos para la Detección de Deadlocks

Los algoritmos de detección de deadlocks utilizan matrices de peticiones (Q), matrices de asignación y vectores de recursos reales y disponibles. A diferencia de la evitación, no se busca una ruta segura, sino identificar si existe un ciclo de espera que cause un deadlock.

Estrategias de Recuperación

Una vez detectado un deadlock, se pueden usar estrategias de recuperación como abortar todos los procesos o realizar una terminación selectiva de procesos para liberar los recursos y romper el ciclo de espera. Se pueden crear puntos de recuperación para restaurar los procesos a un estado anterior.

Resumen Comparativo de Enfoques

Se presenta un resumen comparativo de los tres enfoques: prevención, evitación y detección. La prevención es la más conservadora e ineficiente, la evitación requiere conocimiento futuro de los recursos, y la detección es la más liberal pero requiere monitoreo constante y acciones de recuperación.

El Problema de los Filósofos Cenando

Se presenta el problema clásico de los filósofos cenando, donde cinco filósofos necesitan dos palillos chinos para comer, pero solo hay cinco palillos en total. Se discuten soluciones como tener un mesero que arbitre quién come o asignar un número a cada palillo y que los filósofos sigan una regla para evitar el deadlock.

Share

Summarize Anything ! Download Summ App

Download on the Apple Store
Get it on Google Play
© 2024 Summ