filÓsofos comensales

8
FILÓSOFOS COMENSALES PATRICIO PÉREZ JOSE PEÑAHERRERA MARCELO ESPARZA

Upload: patricio-javier-perez

Post on 13-Dec-2015

24 views

Category:

Documents


1 download

DESCRIPTION

FILÓSOFOS COMENSALES

TRANSCRIPT

Page 1: FILÓSOFOS COMENSALES

FILÓSOFOS COMENSALES

PATRICIO PÉREZ

JOSE PEÑAHERRERA

MARCELO ESPARZA

Page 2: FILÓSOFOS COMENSALES

HISTORIA

• Compuesto por Edsger Dijkstra en 1965 para representar el problema de la sincronización de procesos de un sistema operativo.

• Cabe aclarar que la interpretación está basada en pensadores chinos, quienes comían con dos palillos, donde el más lógico que se necesite el del comensal que se siente para poder comer.

Page 3: FILÓSOFOS COMENSALES

ENUNCIADO

• Hay cinco filósofos sentados alrededor de una mesa que pasan su vida cenando y pensando. Cada uno dispone de un plato de arroz y un palillo a la izquierda de su plato, pero para comer son necesarios dos palillos y cada filósofo sólo puede coger el que está a su izquierda o el que está a su derecha. Con un solo palillo en la mano no tienen más remedio que esperar hasta que atrapen otro y puedan seguir comiendo.

• Si dos filósofos adyacentes intentan tomar el mismo palillo a la vez se produce una condición de carrera: ambos compiten por lo mismo pero uno se queda sin comer.

• Si todos los filósofos cogen el palillo de su derecha al mismo tiempo, todos se quedarán esperando eternamente porque alguien debe liberar el palillo que les falta, cosa que nadie hará porque todos se encuentran en la misma situación (esperando que alguno deje su palillo). Llegado esto, los filósofos se morirán de hambre.

Page 4: FILÓSOFOS COMENSALES

POSIBLES SOLUCIONES

• Por turno cíclico

• Varios turnos

• Colas de tenedores

• El portero del comedor

Page 5: FILÓSOFOS COMENSALES

Por turno cíclico

• Se empieza por un filósofo (si quiere puede comer)

• Cuando termina pasa su turno al de la derecha

• Solo pueden comer en su turno

• Si el número de filósofos es muy alto uno puede morir de hambre

Page 6: FILÓSOFOS COMENSALES

Varios turnos

• Se establecen varios turnos aleatorios (representados con una ficha)

• Los turnos deben ser menor al número de comensales

• Los turnos tienen un tiempo fijo

• Cuando un filósofo acaba de comer pasa su ficha a la derecha

• En base al tiempo que suelen tardar los filósofos en comer y en volver a tener hambre, el tiempo de turno establecido puede hacer que sea peor solución que la anterior. Si el tiempo de turno se aproxima al tiempo medio que tarda un filósofo en comer esta variante da muy buenos resultados. Si además el tiempo medio de comer es similar al tiempo medio en volver a tener hambre la solución se aproxima al óptimo.

Page 7: FILÓSOFOS COMENSALES

Colas de tenedores

• Cuando un filósofo quiere comer se pone en la cola de los dos tenedores

• Cuando hay un tenedor libre lo toma

• Cuando consigue los dos tenedores come y los deja libres

• Cada tenedor solo puede tener los dos filósofos en cola (los mismos)

• Esto crea el problema comentado de que si todos quieren comer a la vez y todos empiezan tomando el tenedor de su derecha se bloquea el sistema (deadlock).

Page 8: FILÓSOFOS COMENSALES

El portero del comedor

• Si el filósofo no tiene hambre se le pide que abandone la mesa

• Cuando vuelva a tener hambre puede regresar (se sientan en la misma silla)

• El portero es el encargado de controlar el número de filósofos en la sala limitando el número a n-1 (si hay n-1 filósofos la menos uno va a poder comer)