9
UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE CIENCIAS HUMANAS Y DE LA EDUCACIÓN DOCENCIA EN INFORMÁTICA INTEGRANTES: ALEXANDRA CLAVIJO DIEGO JACHO JAQUELINE NUÑEZ

Problema de los Filosofos

Embed Size (px)

Citation preview

Page 1: Problema de los Filosofos

UNIVERSIDAD TÉCNICA DE AMBATO

FACULTAD DE CIENCIAS HUMANAS Y DE LA EDUCACIÓN

DOCENCIA EN INFORMÁTICA

INTEGRANTES: ALEXANDRA CLAVIJODIEGO JACHOJAQUELINE NUÑEZ

Page 2: Problema de los Filosofos

EL PROBLEMA DE LA CENA DE LOS FILÓSOFOS

En 1965, Dijkstra planteó y resolvió un problema de sincronización llamado el problema de la cena de los filósofos. 

Dijkstra estudió física teórica en la Universidad de Leiden. Trabajó como investigador para Burroughs Corporation a principios de los años 1970. En la Universidad de Texas en Austin, Estados Unidos, ocupó el Schlumberger Centennial Chair in Computer Sciences. Se retiró en 2000.

Page 3: Problema de los Filosofos

Entre sus contribuciones a la informática está la solución del problema del camino más corto, también conocido como el algoritmo de Dijkstra, la notación polaca inversa y el relacionado algoritmo shunting yard, THE multiprogramming system, el algoritmo del banquero y la construcción del semáforo para coordinar múltiples procesadores y programas. Otro concepto debido a Dijkstra, en el campo de la computación distribuida, es el de la auto-estabilización, una vía alternativa para garantizar la confiabilidad del sistema. El algoritmo de Dijkstra es usado en la ruta más corta primero (SPF) que es usado en el protocolo de enrutamiento Open Shortest Path First (OSPF). También se le debe la autoría de la expresión "Crisis del software", aparecida en su libro The Humble Programmer y usada ampliamente en la famosa reunión de la OTAN de 1968 sobre desarrollo del software. Recibió el Premio Turing en 1972.

Page 4: Problema de los Filosofos

Cinco filósofos se sientan a la mesa. Cada uno tiene un plato de espagueti. El espagueti es tan escurridizo que un filósofo necesita dos tenedores para comerlo. Entre cada dos platos hay un tenedor.

Page 5: Problema de los Filosofos

La vida de un filósofo consta de periodos alternados de comer y pensar. Cuando un filósofo tiene hambre intenta obtener un tenedor para su manos izquierda y otro para su mano derecha, alzando uno a la vez y en cualquier orden. Si logra obtener los dos tenedores, come un rato y después deja los tenedores y continúa pensando.

Page 6: Problema de los Filosofos

Análisis.

Debe haber el máximo número de filósofos comiendo, para aprovechar los tenedores, este caso sólo dos porque se necesitan dos tenedores por filósofo, y sólo tenemos cinco.

 Debe tenerse cuidado de que dos filósofos contiguos no lleguen al mismo tiempo a comer, ya que se generaría un bloqueo.

Page 7: Problema de los Filosofos

Planteamiento de la solución. 

Se tiene un arreglo para ver el estado del filósofo.Un filósofo sólo puede comer si sus vecinos no lo hacen.Se utilizan semáforos para indicar si los filósofos necesitan un tenedor y éste no está disponible, por que se procede a bloquearlo.Se toma en cuenta el vecino derecho e izquierdo de cada filósofo.Se usan generadores aleatorios.  

Page 8: Problema de los Filosofos

POR TURNO CÍCLICO

Se empieza por un filósofo, que si quiere puede comer y después pasa su turno al de la derecha. Cada filósofo sólo puede comer en su turno. Problema: si el número de filósofos es muy alto, uno puede morir de hambre antes de su turno.

COLAS DE TENEDORES

Cuando un filósofo quiere comer se pone en la cola de los dos tenedores que necesita. Cuando un tenedor está libre lo toma. Cuando toma los dos tenedores, come y deja libre los tenedores.Visto desde el otro lado, cada tenedor sólo puede tener dos filósofos en cola, siempre los mismos.

Page 9: Problema de los Filosofos

VARIOS TURNOS

Se establecen varios turnos. Para hacerlo más claro supongamos que cada filósofo que puede comer (es su turno) tiene una ficha que después pasa a la derecha. Si por ejemplo hay 7 comensales podemos poner 3 fichas en posiciones alternas (entre dos de las fichas quedarían dos filósofos).Se establecen turnos de tiempo fijo. Por ejemplo cada 5 minutos se pasan las fichas (y los turnos) 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.