La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

En la literatura de sistemas operativos abundan problemas interesantes que han sido estudiados ampliamente. A continuación vamos a examinar uno de los.

Presentaciones similares


Presentación del tema: "En la literatura de sistemas operativos abundan problemas interesantes que han sido estudiados ampliamente. A continuación vamos a examinar uno de los."— Transcripción de la presentación:

1 En la literatura de sistemas operativos abundan problemas interesantes que han sido estudiados ampliamente. A continuación vamos a examinar uno de los mas conocidos: “El Problema de la Cena de los Filósofos ”

2 Problema de sincronizacion planteado y resualto en 1965 por Dijkstra. Dicho problema tiene un planteamiento sencillo: Cinco filosofos estan sentados alrededor de una mesa circular. Cada filosofo tiene ante si un plato de espagueti. El espagueti es tan resbaloso que el filosofo necesita dos tenedores para comerlo. Entre cada par de platos hay un tenedor. Como en la imagen de fondo. Cuando a un filosofo le da hambre, trata de adquirir el tenedor izquierdo y el derecho, uno a la vez. Si logra adquirir los tenedores comera por un rato y luego dejara los tenedores en su lugar.

3 Pregunta: Se puede escribir un programa para que cada filosofo haga lo que se supone debe hacer y nunca se entrampe? A continuación se muestra una “solución” obvia al problema:

4 Pero, que problema tiene esta solución? Supongamos que todos los filósofos agarran el tenedor izquierdo simultáneamente Ninguno va a poder agarrar el tenedor derecho, con lo cual tenemos un bloqueo mutuo. Otra posible solución podría ser modificar un poco este código, de tal forma que cuando el filosofo agarra su tenedor izquierdo, verifique si puede agarrar el derecho. Si no puede el filosofo dejara el tenedor que agarro, esperara cierto tiempo, y repetira el proceso. La falla? Supongamos que tenemos mala suerte y todos los filósofos agarran su tenedor izquierdo simultáneamente, ven que el derecho no esta disponible, dejaran su tenedor izquierdo, esperaran, y simultáneamente vuelven a agarrar el tenedor, y asi continuaran eternamente. Con esto introducimos un nuevo concepto Inanición: Situación en la que todos los programas continúan ejecutándose de manera indefinida pero no logran avanzar.

5 Ahora, podríamos pensar que cada filosofo espere un tiempo aleatorio después de su intento fallido de agarra el tenedor. Con esto la posibilidad de que sus acción continúen coordinadas es excesivamente pequeña. Pero para ciertas aplicaciones no queremos una falla debido a una serie improbable de números aleatorios (planta nuclear). Podemos proteger las cinco instrucción que están abajo de think, con semáforo binario. El filosofo ejecutaría DOWN con mutex cuando agarra los tenedores y UP con mutex cuando los deja. Esta solución es correcta, el problema con esto es que no admite paralelismo. La siguiente solución es correcta también, y además admite paralelismo. Se utiliza un arreglo state para estar al tanto de si un filosofo esta comiendo, pensando o hambriento. Un filosofo solo puede comer si ninguno de sus vecinos esta comiendo. Sus vecinos están definidos por las macros RIGHT y LEFT. También se usa un arreglo de semáforos, uno por filosofo de modo que si un filosofo tiene hambre puede bloquearse si los tenedores que necesita están ocupados.

6


Descargar ppt "En la literatura de sistemas operativos abundan problemas interesantes que han sido estudiados ampliamente. A continuación vamos a examinar uno de los."

Presentaciones similares


Anuncios Google