← Concurrencia y Sincronización Bloque 8 · Interbloqueos · Tema 41 de 47

Tema 41

Simulador del banquero y de detección

En los temas anteriores viste el algoritmo del banquero (evasión) y la detección de deadlocks. Este tema reúne ambos en un simulador interactivo que permite pedir recursos, ver si el estado sigue siendo seguro y localizar el ciclo de un bloqueo en vivo. Es la herramienta que cierra el bloque de interbloqueos y permite experimentar con ambos algoritmos en un entorno controlado.

1. Por qué un simulador de banquero y detección

El algoritmo del banquero y la detección de deadlocks son difíciles de entender porque involucran múltiples procesos y recursos con estados complejos. Un simulador permite:

El simulador es un laboratorio

En la realidad, las solicitudes de recursos ocurren en paralelo y el estado cambia rápidamente. El simulador permite experimentar con el algoritmo del banquero y la detección en un entorno controlado, paso a paso, sin el riesgo de bloquear un sistema real.

2. El modelo

El simulador modela un sistema con:

La relación invariante es: Disponibles + Σ Asignación = Total de recursos. Esta relación se mantiene siempre, incluso cuando se conceden o deniegan solicitudes.

3. El algoritmo del banquero en el simulador

El simulador implementa el algoritmo del banquero completo:

  1. Generar un estado inicial: asignar recursos a procesos aleatoriamente, asegurando que la asignación no exceda el total. generar
  2. Calcular la necesidad: Need[i][j] = Max[i][j] − Allocation[i][j]. calcular
  3. Verificar la seguridad: ejecutar la prueba de seguridad (simular que los procesos terminan en algún orden). verificar
  4. Mostrar la secuencia segura: si es seguro, mostrar el orden en que los procesos pueden terminar. secuencia
  5. Permitir solicitudes: el usuario puede pedir recursos para un proceso. solicitar
  6. Evaluar la solicitud: conceder solo si el estado resultante es seguro. evaluar

La prueba de seguridad simula que los procesos terminan uno a uno, liberando sus recursos. Si se puede encontrar un orden en el que todos terminen, el estado es seguro.

4. La detección en el simulador

El simulador también implementa la detección de deadlocks:

  1. Buscar ciclos: en el grafo de asignación de recursos (RAG). buscar
  2. Identificar procesos en deadlock: los que no pueden terminar en la prueba de seguridad. identificar
  3. Mostrar el ciclo: la cadena de espera circular. mostrar

La detección se ejecuta automáticamente cuando el estado es inseguro, para determinar si hay un deadlock real o solo un estado inseguro. Esto es importante porque un estado inseguro no siempre implica deadlock: es un estado en el que el deadlock es posible, pero no inevitable.

5. La visualización

El simulador muestra:

6. Casos de interés

CasoDescripciónQué observar
Estado seguroLa utilización es baja y hay una secuencia segura.La secuencia segura se muestra.
Estado inseguroLa utilización es alta y no hay secuencia segura.No hay secuencia segura.
Solicitud concedidaEl estado resultante es seguro.Los recursos se asignan.
Solicitud denegadaEl estado resultante es inseguro.El proceso espera.
DeadlockCiclo en el RAG.Los procesos en el ciclo están en deadlock.
RecuperaciónTerminar un proceso para liberar recursos.El estado vuelve a ser seguro.

7. Simulador interactivo

Este simulador ejecuta el algoritmo del banquero y muestra si el estado es seguro:

Simulador · algoritmo del banquero

8. Extensiones posibles

9. Resumen

10. Preguntas de repaso

Intenta responder cada una antes de abrir la respuesta.

1. ¿Qué verifica el simulador?

Si un estado es seguro (algoritmo del banquero) y si hay deadlocks (detección).

2. ¿Qué muestra la secuencia segura?

El orden en que los procesos pueden terminar sin deadlock.

3. ¿Qué es un estado inseguro?

Un estado en el que no existe una secuencia segura.

4. ¿Qué es la detección de deadlocks?

Buscar ciclos en el grafo de asignación de recursos.

5. ¿Qué procesos están en deadlock?

Los que no pueden terminar en la prueba de seguridad.

6. ¿Qué parámetros ajusta el simulador?

Número de procesos y tipos de recurso.

7. ¿Qué bloque del curso cierra este simulador?

El bloque 8 (interbloqueos).

8. ¿Qué es la recuperación?

Salir del deadlock terminando procesos o quitando recursos.

9. ¿Cómo se elige a la víctima?

Por prioridad, tiempo de ejecución, recursos usados, etc.

10. ¿Por qué la detección es poco usada en SO?

Porque la prevención es más simple y no tiene overhead.

Para practicar

  1. Ejecuta el simulador y observa estados seguros e inseguros.
  2. Modifica el simulador para permitir solicitudes de recursos.
  3. Implementa la detección de deadlocks en el simulador.
  4. Visualiza el grafo de asignación de recursos.
  5. Implementa la recuperación por terminación de procesos.
  6. Investiga cómo PostgreSQL detecta deadlocks.