Problemas Clasicos de Los Procesos
Problemas Clasicos de Los Procesos
Problemas Clasicos de Los Procesos
Cinco filósofos se sientan alrededor de una mesa y pasan su vida cenando y pensando.
Cada filosofo tiene un plato de fideos y un tenedor a la izquierda de su plato. Para comer
los fideos son necesarios dos tenedores y cada filosofo puede tomar las que están a su
izquierda y derecha. Si cualquier filosofo 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/al mismo tiempo
se produce una condición de carrera: ambos compiten por tomar el mismo tenedor y uno
de ellos se queda sin comer.
Solución al Problema:
Lógicamente si son cinco filósofos y hay cinco tenedores el algoritmo debe permitir que la
mayor parte del tiempo haya dos filósofos comiendo y uno pensando.
Si todos los filósofos toman el tenedor que está a su derecha al mismo tiempo, entonces
todos se quedaran esperando eternamente, porque alguien debe liberar el tenedor que
les falta. Nadie la hará porque todos se encuentran en la misma situación (esperando que
alguno deje sus tenedores).
Una de las soluciones más comunes implica el uso de semáforos para marcar el estado y
controlar el acceso.
El problema consiste en una barbería que tiene un único sillón de barbero y varias sillas
para esperar. Cuando no hay clientes, el barbero se sienta en una silla y se duerme.
Cuando llega un nuevo cliente este, o bien despierta al barbero o- si el barbero está
afeitando a otro cliente- se sienta en una silla (o se va si todos las sillas están ocupadas por
clientes esperando). El problema consiste en realizar la actividad del barbero sin que
ocurra condiciones de carrera. La solución implica el uso de semáforos y objetos de
exclusión, mutuo para proteger la sección critica.