← Concurrencia y Sincronización Bloque 7 · Problemas clásicos de sincronización · Tema 34 de 47

Tema 34

Simulador de problemas clásicos

Los problemas clásicos de sincronización (productor-consumidor y la cena de los filósofos) son difíciles de entender porque involucran múltiples hilos que interactúan de forma no determinista. Este simulador los anima paso a paso, mostrando el estado de cada hilo y del recurso compartido en cada instante. Es la herramienta que cierra el bloque de problemas clásicos.

1. Por qué un simulador de problemas clásicos

Los problemas clásicos de sincronización involucran múltiples hilos que interactúan de forma compleja. Un solo error en la sincronización puede causar deadlocks o condiciones de carrera que son difíciles de reproducir y depurar.

Este simulador permite:

El simulador es un microscopio

En la realidad, las operaciones ocurren en paralelo y el estado cambia rápidamente. El simulador permite congelar el tiempo y ver cada operación individualmente.

2. El modelo

El simulador modela dos problemas clásicos:

En ambos casos, el simulador muestra el estado de cada hilo y del recurso compartido en cada paso.

3. Simulador de productor-consumidor

El simulador de productor-consumidor muestra:

El simulador avanza paso a paso, mostrando qué hilo hace qué operación y cómo cambia el buffer.

4. Simulador de la cena de los filósofos

El simulador de la cena de los filósofos muestra:

El simulador puede mostrar la solución ingenua (que se bloquea) y la solución con asimetría (que no se bloquea).

5. La visualización

La visualización es clave para entender los problemas de sincronización. El simulador muestra:

6. Casos de interés

El simulador permite explorar varios casos:

CasoDescripciónQué observar
Productor-consumidor equilibradoIgual número de productores y consumidores.El buffer se mantiene estable.
Productor-consumidor desequilibradoMás productores que consumidores.El buffer se llena y los productores se bloquean.
Filósofos ingenuosSolución ingenua (deadlock posible).Los filósofos se bloquean.
Filósofos con asimetríaSolución con asimetría (sin deadlock).Los filósofos comen sin bloquearse.

7. Simulador interactivo

Este simulador muestra el productor-consumidor paso a paso:

Simulador · productor-consumidor

PasoHiloOperaciónBufferEstado

Este simulador muestra la cena de los filósofos paso a paso:

Simulador · cena de los filósofos

8. Extensiones posibles

9. Resumen

10. Preguntas de repaso

Intenta responder cada una antes de abrir la respuesta.

1. ¿Qué problemas simula?

Productor-consumidor y la cena de los filósofos.

2. ¿Qué muestra el simulador?

El estado de cada hilo y del recurso compartido paso a paso.

3. ¿Qué es un paso en el simulador?

Una operación individual (insertar, extraer, tomar tenedor, soltar).

4. ¿Qué se registra en el log?

La secuencia de operaciones con el estado del recurso en cada paso.

5. ¿Qué casos de interés se pueden explorar?

Buffer equilibrado/desequilibrado, filósofos ingenuos/con asimetría.

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

El bloque 7 (problemas clásicos de sincronización).

7. ¿Por qué es útil el simulador?

Porque permite ver el estado de cada hilo y del recurso en cada paso.

8. ¿Qué extensión permitiría comparar dos soluciones?

Mostrar dos simulaciones lado a lado.

9. ¿Qué es una animación en este contexto?

Reproducir las operaciones con un temporizador para ver el flujo.

10. ¿Qué se puede aprender del simulador?

Cómo interactúan los hilos y por qué se bloquean.

Para practicar

  1. Ejecuta el simulador de productor-consumidor con 2 productores y 2 consumidores.
  2. Ejecuta el simulador de filósofos con la solución ingenua y observa el deadlock.
  3. Ejecuta con asimetría y observa que no hay deadlock.
  4. Modifica el simulador para añadir modo paso a paso.
  5. Implementa la visualización gráfica del buffer y los tenedores.
  6. Compara el simulador con una ejecución real en C.