sábado, 16 de noviembre de 2013

Filósofos Comensales

Este es un problema donde se representa la sincronización de los procesos en un sistema operativo. Cabe aclarar que la interpretación está basada en pensadores chinos, quienes comían con dos palillos, donde es más lógico que se necesite el del comensal que se siente al lado para poder comer.




Problema


Cinco filósofos se sientan alrededor de una mesa y pasan su vida cenando y pensando. Cada filósofo tiene un plato de fideos y un tenedor a la izquierda de su plato. Para comer los fideos son necesarios dos tenedores y cada filósofo sólo puede tomar los que están a su izquierda y derecha. Si cualquier filósofo toma un tenedor y el otro está ocupado, se quedará esperando, con el tenedor en la mano, hasta que pueda tomar el otro tenedor, para luego empezar a comer.

Si dos filósofos adyacentes intentan tomar el mismo tenedor a una vez, se produce una condición de carrera; ambos compiten por tomar el mismo tenedor, y uno de ellos se queda sin comer.

Si todos los filósofos toman el tenedor que está a su derecha al mismo tiempo, entonces todos se quedarán esperando eternamente, porque alguien debe liberar el tenedor que les falta. Nadie lo hará porque todos se encuentran en la misma situación (esperando que alguno deje sus tenedores). Entonces los filósofos se morirán de hambre. Este bloqueo mutuo se denomina interbloqueo deadlock.
El problema consiste en encontrar un algoritmo que permita que los filósofos nunca se mueran de hambre.


Solución

Para el problema de los filosofos comensales, acudimos a crear un mecanismo de sincronización entre procesos y este macanismo lo llamamos SEMÁFORO.

Los pasos para la solución son los siguientes:

1. Inicialización: asignamos un valor inicial.

2. Espera: decremento de una unidad del valor del semáforo, puede dejar bloqueado al proceso que solicita la operación.

3. Señal: incremento de una unidad del valor del semáforo, puede desbloquear el primer proceso que está bloqueado en este semáforo.

Cada semáforo mantiene una cola de procesos bloqueados.

En este tema aprendimos en clase de como crear un programa que nos visualiza el funcionamiento del semáforo para la solución de los interbloqueos o deadlock que nos muestra el ejercicio de los filosofos comensales.




























0 comentarios:

Publicar un comentario