¿Qué tarea asignó Dijkstra a los voluntarios, que se mencionó en su artículo "El programador humilde"?

65

En el "Programador Humilde" de Dijkstra , menciona que dio algunos ofrece un problema para resolver:

  

“He realizado un pequeño experimento de programación con voluntarios realmente experimentados, pero algo inesperado y bastante inesperado apareció. Ninguno de mis voluntarios encontró la solución obvia y más elegante. Tras un análisis más detallado, esto resultó tener una fuente común: su noción de repetición estaba tan estrechamente conectada con la idea de una variable controlada asociada que debía incrementarse, que se les impedía mentalmente ver lo obvio. Sus soluciones eran menos eficientes, innecesariamente difíciles de entender, y les llevó mucho tiempo encontrarlas ".

¿Cuál fue el problema que Dijkstra dio a los voluntarios? ¿Cuáles fueron las soluciones?

    
pregunta user712092 11.10.2011 - 22:32

1 respuesta

11

El "problema de los filósofos de la cena" fue el problema presentado.

  

Básicamente hay 5 filósofos que necesitan comer. (Imagine un plato de comida interminable frente a cada filósofo), entre cada plato hay un tenedor (5 platos, 5 tenedores, 5 filósofos).

     

Un filósofo solo puede comer si sostiene el tenedor a la derecha y el tenedor a la izquierda. (Sólo dos filósofos pueden comer en un momento dado).

     

Un tenedor puede ser recogido en cualquier momento que esté disponible y bajarse si está siendo retenido.   Cada horquilla debe ser recogida interdependientemente. (uno a la vez).

     

Mientras un filósofo no come, ellos piensan (la necesidad de alternar estados es lo que impulsa el problema).

     

¿Cómo permites que cada uno de ellos coma y alterne el pensamiento (para que los otros puedan comer) sin crear un sistema de interbloqueo (donde un filósofo sostiene un tenedor y espera al otro, evitando que otro filósofo coma)?

Esto tiene sus raíces en los sistemas concurrentes y es una pregunta típica de la universidad que se presenta cuando se habla de concurrencia.

Creo que se han desarrollado 4 o 5 algoritmos "oficiales" para resolver el problema, pero una búsqueda rápida en Google del "problema de los filósofos de los restaurantes" le dará una gran cantidad de resultados.

  • Para obtener más información sobre este problema en Standford U, visite: enlace

  • El artículo de wikipedia se encuentra en: enlace

  • Una solución de MSDN Magizine se encuentra en: enlace

Si lee la versión original del documento en las notas a pie de página en la página 866 indica: "Actas del Congreso IFIP 1965, 213-217." Soluciones de un problema en el control de programación concurrente ".

El problema de la concurrencia y los recursos compartidos es el "Problema de los filósofos que comen". :-)

Espero que ayude.

    
respondido por el Robert French 26.10.2011 - 23:41

Lea otras preguntas en las etiquetas