title: Algoritmo de grafos de asignación de recursos
text: # Algoritmo de grafos de asignación de recursos
  
  El algoritmo de grafos de asignación de recursos es un método de detección de situaciones de bloqueo mutuo.
  Esta técnica consiste en representar gráficamente los recursos asignados a los procesos y los recursos que los procesosnecesitan para completar su ejecución. Se utiliza un enfoque de recorrido de grafo, donde se exploran los nodos siguiendo las conexiones entre ellos. Si se llega de nuevo al nodo de inicio, significa que hay una espera circular y por tanto un bloqueo.
  El propósito de esta técnica consiste además de detectar el interbloqueo, obtener información precisa acerca de los recursos y procesos involucrados en dicho bloqueo.
  
  # Algoritmo de grafos de asignación de recursos
  ## Grafos de asignación de recursos
  
  Se representa un grafo mediante el cual se aprecia de forma sencilla y muy visual los bloqueos. Se representan los procesos mediante cuadrados y los recursos mediante círculos. Cuando un proceso solicita un recurso, se dibuja una flecha que va desde el proceso hacia el recurso. Por otro lado, cuando un recurso está asignado a un proceso, se dibuja una flecha que va desde el recurso hacia el proceso.
  En la Figura 1, veo como P1 solicita el recurso R1 y P2 tiene asignado el recurso R2. En cambio en la Figura 2 vemos como P3 solicita el recurso R3 pero es P4 el que tiene asignado este recurso.
  En la Figura 3 existe el interbloqueo. Una espera circular, como vemos en la imagen: cuando el recurso que se solicita está asignado a otro proceso y este proceso solicita un recurso que ya está asignado al proceso citado anteriormente. En este caso, P5 solicita R4 pero R4 esta asignado a P6 y a la vez P6 solicita R5 pero R5 está asignado a P5.
  Esa espera circular o ciclo puede involucrar más de dos procesos y dos recursos, como vemos en la Figura 4.
  
  # Algoritmo de grafos de asignación de recursos
  ## Manera de actuar
  ### Conceder todas las solicitudes
  
  La premisa es atender todas las solicitudes siempre que haya suficientes recursos disponibles, y si se detecta un interbloqueo, implementar acciones correctivas.
  * No hay infrautilización de recursos, todos los disponibles se aprovechan plenamente.
  * No se limitan escenarios donde no exista la posibilidad de interbloqueo.
  Se conceden todas las solicitudes porque el objetivo es llegar al bloqueo y detectarlo, en el caso de que queramos evitarlo o prevenirlo llevaríamos a cabo otros métodos o algoritmos como por ejemplo el algoritmo del banquero.
  
  # Algoritmo de grafos de asignación de recursos
  ## Manera de actuar
  ### Momento en el que utilizar el algoritmo
  
  Este algoritmo de grafos, se puede realizar en diferentes momentos durante la asignación de recursos:
  
  # Algoritmo de grafos de asignación de recursos
  ## Manera de actuar
  ### Momento en el que utilizar el algoritmo
  #### Ante cada solicitud que no puede ser satisfecha de manera inmediata
  
  * La identificación más ágil y eficiente.
  * Permite la identificación del proceso responsable del interbloqueo.
  * Puede implicar un costo desproporcionado.
  
  # Algoritmo de grafos de asignación de recursos
  ## Manera de actuar
  ### Momento en el que utilizar el algoritmo
  #### Periodicamente
  
  Con el inconveniente de elegir el periodo más acertado.
  
  # Algoritmo de grafos de asignación de recursos
  ## Manera de actuar
  ### Momento en el que utilizar el algoritmo
  #### Cuando se observe una disminución en el rendimiento
  
  En el momento en el que se detecte una degradación de las prestaciones del sistema.
  
  # Algoritmo de grafos de asignación de recursos
  ## Recuperación ante el bloqueo
  ### Abortar procesos
  
  * La forma más drástica, abortar todos los involucrados, los que participan de alguna forma en el bloqueo.
  * Se verifica uno a uno cada proceso, comprobando si se resuelve el problema. Estos procesos que se van verificando se eligen en torno a ciertas prioridades, número y tipo de recursos consumidos, por ejemplo.
  
  # Algoritmo de grafos de asignación de recursos
  ## Recuperación ante el bloqueo
  ### Expropiar recursos
  
  * Elección de los procesos afectados. Es necesario tener en cuenta los procesos previamente afectados para evitar situaciones de inanición.
  * Elección de los recursos, no todos se pueden expropiar.
  * La solución más radical y más sencilla sería la de abortar y reiniciar. Revertir los procesos a un estado previo de la ejecución.