Вы находитесь на странице: 1из 3

1

Solución al problema de los filósofos comensales y


sus aplicaciones.
Andrés A. Garcés, José A. Muñoz, y Jorge A. Villarreal

Resumen—En este trabajo exploramos el problema de


los filósofos comensales que fue propuesto hace cinco A. Nesterenko y Arora
décadas para representar el problema de sincronización al A continuación presentamos una solución para el problema
momento de compartir recursos en sistemas de los filósofos comensales propuesta por Nesterenko y Arora
multiprogramados. Sobre este mostramos distintas [2]. Esta solución tolera errores maliciosos. En un error
soluciones propuestas en los últimos años así como sus malicioso el proceso se comporta arbitrariamente por un
aplicaciones en sistemas operativos y redes de periodo de tiempo finito y después para cualquier operación de
computación. forma indetectable para los otros procesos. En esta solución, la
tolerancia a este problema la logramos mediante la
Palabras clave—Filósofos comensales, concurrencia, combinación de estabilidad y localización del error.
sincronización El problema de los filósofos comensales es definido a
continuación: Un número de procesos están unidos a un
I. INTRODUCCIÓN proceso vecino. Los procesos pueden estar en estado
pensando, hambriento o comiendo. Una solución para el
En un sistema de operativo multiprogramado, la problema satisface las siguientes condiciones: seguridad –
sincronización se refiere al mecanismo que permite a dos o dos filósofos vecinos no pueden estar comiendo al tiempo en
más procesos realizar acciones al mismo tiempo [1]. En este el mismo estado, y vitalidad – Cada proceso en estado
tipo de sistemas, cada proceso se ejecuta asíncronamente y, en hambriento eventualmente comerá, dado que los procesos en
algunos instantes, los procesos deben sincronizar sus estado comiendo no comen de forma indefinida.
actividades cuando la continuación de uno depende de alguna Choy y Singh probaron que la mínima localización de
tarea que debe realizar otro o un recurso que está siendo errores en para el problema de los filósofos comensales es de
ocupado por el mismo. dos, por lo tanto los errores maliciosos para este problema con
Los procesos compiten entre ellos por el acceso a los 𝑚 < 2 no tienen solución. En este algoritmo se soluciona el
recursos o cooperan para comunicar información. Ambas problema cuando 𝑚 = 2, el cual es el óptimo.
situaciones son manejadas por el sistema operativo mediante La solución se basa en un Sistema de prioridades entre los
mecanismos de sincronización que permiten el acceso procesos. Se toman los procesos en forma de Nodos y entre
exclusivo de forma coordinada a los recursos y a los cada arista se define una dirección. Este grafo de prioridad
elementos de comunicación compartidos. define ancestros y descendientes para cada proceso. Un
Cuando el recurso es no compartible se hace necesaria la proceso en estado hambriento es capaz de comer solamente
comunicación entre recursos que se ejecuten en paralelo con el si sus ancestros directos no están en estado hambriento. Un
fin de asignar el recurso a solo uno de los procesos, mientras bloqueo mutuo no es posible dado que el grafo es acíclico y se
que los otros deben permanecer en espera hasta que finalice la garantiza que un al menos un proceso eventualmente
utilización de dicho recurso por el proceso al que se le asignó. comerá. Después de comer un proceso cambia su estado para
Cuando este proceso termine, el recurso será asignado a uno ser descendiente de sus vecinos. Esta operación mantiene el
de los procesos en espera. Esta comunicación entre procesos grafo acíclico y asegura la vitalidad si todos los procesos
se denomina Exclusión Mutua. progresan.
En 1965, Edsger Dijkstra propuso el problema de los El grafo de dependencia puede formar cadenas de espera
Filósofos Comensales para representar el problema en la muy largas que ponen en peligro la vitalidad si algún proceso
sincronización de los procesos en los sistemas operativos. Este en espera termina inesperadamente. Para asegurar la
problema se remite a que hay un número n de filósofos localizació
sentados en una mesa y pasan su vida cenando y pensando. n de errores utiliza el mecanismo dinámico de límites
Cada filósofo tiene un plato delante de él entre cada uno de preferente (Dynamic preemption threshold scheduling) [3],
ellos hay un tenedor. Para poder comer es necesario tener dos en el cual, cuando un proceso termina inesperadamente, este
tenedores (el de su izquierda y el de su derecha). Si un filósofo cede a su descendiente directo cuando hay un ancestro directo
desea comer agarra un tenedor y si el otro no está disponible, en estado hambriento.
se queda con el tenedor en la mano esperando hasta que La vitalidad también se puede ver comprometida si el grafo
desocupen el segundo, para luego empezar a comer [1]. de dependencias contiene algún ciclo. Para garantizar la
Cuando dos filósofos contiguos intentan tomar el mismo estabilización nuestro el programa rompe cualquier ciclo, para
tenedor a la vez entran en una condición de carrera, la cual romper el ciclo todos los procesos tienen la distancia entre
resulta en uno agarrando el tenedor y otro esperando hasta que ellos y el descendiente más lejano, un ciclo es detectado si esa
lo libere. Si todos los filósofos toman el tenedor a su derecha, distancia excede el diámetro del Sistema y se procede a cortar
se quedarían esperando todos eternamente a que se desocupe el ciclo de forma que el proceso que lo detectó pasa a ser el
el tenedor a su izquierda y morirían de hambre, esto se descendiente de todos los vecinos [2], [3].
denomina bloqueo mutuo o deadlock. El principal problema
de los filósofos comensales consiste en encontrar un algoritmo B. Attiya, Kogan y Welch.
que le permita a los filósofos no morir de hambre [1]. En una red de dispositivos móviles ad hoc, es decir,
colecciones de entidades computacionales o nodos que se
II. SOLUCIONES comunican inalámbricamente sin la asistencia de una
infraestructura fija, los nodos que se encuentra en la red deben
Antes de exponer las soluciones cabe resaltar que no existe competir por los recursos compartidos en esta, en la cual
ninguna solución determinística, sin interbloqueos, ningún par de nodos de la red pueden estar en su sección
completamente distribuida y simétrica al problema de los crítica al mismo tiempo, además, el algoritmo debería permitir
filósofos comensales [1]. que cuando un nodo desee entrar a su sección crítica pueda
hacerlo. Soluciones para este problema han sido propuestas
pero en el caso de redes móviles ad hoc los nodos en la red
2
pueden cambiar de posición en cualquier momento y además comensales [6]. Los algoritmos de auto-estabilización
el recurso puede ser compartido por aquellos nodos que se eventualmente llegan a la correcta operación incluso si
encuentren cerca geográficamente y no todos los que se empiezan en un estado arbitrario, debido a su naturaleza que
encuentran en la red. les permite recuperarse después de la influencia de una falla
Este tipo de problema es una extensión al problema de los [6]. Con la variedad de algoritmos propuestos, resulta
filósofos comensales que ha sido estudiado en redes estáticas y
complicado saber cuál es el más adecuado para una
es llamado por Attiya, Kogan y Welch como exclusión local
transformación particular. Por lo tanto esta investigación está
mutua. La característica deseado para estos algoritmos es que
tengan un tiempo de respuesta y fallos locales independientes basada en el análisis teórico y aspectos prácticos de cinco
del número de nodos en la red. Dos algoritmos fueron algoritmos para determinar qué tan buena es la solución que
propuestos, uno que minimiza el tiempo de respuesta y otro proveen.
que minimiza el daño causado por los fallos locales, del cual Los resultados demostraron que los algoritmos de
el primero tiene dos variaciones [4]. Transformation [5] , LRA [5] y Fuzzy [5] son incorrectos
El primer algoritmo es una solución modular que asigna porque permiten una computación con un número infinito de
colores a los nodos basados en su localización geográfica, de palillos indefinidamente, en cambio Alternator [5] distingue
forma que los nodos cercanos tengan todos el mismo color, y entre variables públicas y privadas y opera correctamente en
resuelve los problemas de compartir recursos de forma local
un modelo de baja atomicidad, al igual que el algoritmo
en cada grupo de color. Se soluciona el problema de movilidad
Refinement [5] que también funciona adecuadamente bajo el
escogiendo en los colores basados en su estado de
movimiento. Las dos variaciones existen por el algoritmo para mismo modelo.
la escogencia de los colores. Una de ellas utiliza un algoritmo Después del resultado de ejecución de estos algoritmos, se
voraz para colorear mientras que la otra utiliza el algoritmo de propone la implementación de un algoritmo producto de
Linial para colorear rápidamente. La segunda versión tiene combinar los dos algoritmos que tuvieron soluciones correctas
una menor consecuencia al presentarse fallos locales y, aunque (Alternator-Refinement). Entre estos dos algoritmos, los
no es óptima, crece muy lentamente con respecto al tamaño de resultados de la simulación indicaron que no existe un
la red lo que lo hace rápido en redes dispersas. algoritmo que supere al otro. Para la métrica de rendimiento,
El segundo algoritmo es óptimo en respuesta a fallos y el Refinement funciona mejor que Alternator bajo condiciones
tiempo de respuesta es cuadrático con respecto al número de de poca carga. Sin embargo, cuando la carga incrementa,
nodos, pero en el caso de nodos estáticos el tiempo de
Alternator es más eficiente.
respuesta se convierte en lineal. Este, en lugar de utilizar
El nuevo algoritmo toma ventaja de las diferencias de
colores, usa prioridades para implementar el algoritmo de
inversión de los enlaces de los nodos para los casos en los que funcionamiento de los algoritmos anteriores para estimar la
haya una pérdida de conexión los demás nodos puedan seguir carga del sistema e intercambiar funcionalidades entre ellos
trabajando [4]. para lograr el mayor rendimiento [6].
El nuevo algoritmo combinado utiliza un árbol de
C. Davidrajuh expansión con raíz estática, en el cual la acción de carga para
En este trabajo se propone la implementación de Petri cada proceso consiste en computar la suma de la carga de sus
Nets para dar solución al problema de los filósofos comensales hijos y se le añade uno en caso de que el proceso requiera
[5]. Las Petri Nets son una familia de formalismos de acceder a la sección crítica [6]. De esta manera, el proceso de
modelado que se utilizan para modelar sistemas de eventos la raíz obtiene un estimado de la carga de todo el sistema. Una
discretos y que consta de varios tipos. En esta investigación se vez obtenida la carga, el proceso de la raíz selecciona qué
introduce el concepto de Petri Nets Orientada a Actividad algoritmo utilizar, lo que garantiza que el proceso se estabilice
(AOPN), la cual consiste en dos fases : (1) en esta fase se y sirva como solución al problema de los filósofos
construye el modelo estático Petri Net. Las actividades y sus comensales.
precedencias son representadas como transiciones entrelazadas
con lugares como los buffers. Los recursos son ordenados en III. CONCLUSIÓN
dos grupos como recursos focales y recursos útiles, donde sólo
los recursos focales son incluidos en el modelo estático y los En conclusión, en este trabajo pudimos mostrar la
otros en la ejecución del modelo. (2) la segunda fase consiste importancia que representa el problema de los filósofos
en añadir los detalles, que no se pueden codificar en el modelo comensales para representar el problema de la sincronización
estático, en la ejecución del programa [5]. en los sistemas operativos y en las redes de computación,
De esta manera, con la implementación de las AOPN junto desde distintos campos y aplicaciones, en especial en el
con GPenSIM (sistema para implementar Petri Nets), se mundo actual en el cual los dispositivos están interconectados.
verifican las tres soluciones existentes al problema de los La variedad de soluciones propuestas nos brindan un
filósofos comensales [5]. La solución de Dijkstra se basa en la amplio rango de posibilidades para suplir las demandas que
numeración de los palillos, por lo tanto con las AOPN se los sistemas operativos actuales e incluso futuros puedan
satisface la situación cuando dos palillos son reservados al presentar. De esta manera, dependiendo de las necesidades del
mismo tiempo. La transición que reserva el palillo con el sistema, se podrá escoger la solución que mejor se adapte y
mayor número se activa primero que la transición que reserva que proporcione un correcto funcionamiento entre los
el palillo con menor número. La solución basada en la procesos de un sistema. Por lo tanto, podemos inferir que estas
numeración de los filósofos se satisface con la asignación de soluciones nos pueden servir como un punto de partida para la
prioridades a las transiciones debido a que cada filósofo optimización de la multiprogramación en los computadores,
reserva los palillos a través de dos transiciones. Y por último, ya que estas soluciones nos permiten que la gestión de
la solución basada en un supervisor satisface la inanición. procesos mejore considerablemente.
Por lo tanto, se demuestra que el sistema AOPN sirve como
REFERENCIAS
modelado de sistemas de eventos discretos, especialmente
cuando se involucran recursos. [1] C. Laneve, A. Vitale, “The Expressive Power of
Synchronizations”, 2015 25th Annual IEEE Symposium on
D. Adamek, Nesterenko, Tixeuil Logic in Computer Science, pp. 382-391, 2015.
En este trabajo se propone el análisis de algoritmos de
auto-estabilización como solución al problema de los filósofos
3
[2] M. Nesterenko and A. Arora, "Dining philosophers that
tolerate malicious crashes," Distributed Computing Systems,
2002. Proceedings. 22nd International Conference on, pp.
191-198, 2002.

[3] M. Park, H. Jin Yoo, J. Chae, "Integration of Preemption


Threshold and Quantum-Based Scheduling for Schedulability
Enhancement of Fixed Priority Tasks", Embedded and Real-
Time Computing Systems and Applications 2009. RTCSA '09.
15th IEEE International Conference on, pp. 503-510, 2009.

[4] H. Attiya, A. Kogan, J. Welch, “Efficient and Robust


Local Mutual Exclusion in Mobile Ad Hoc Networks”, IEEE
Transactions on Mobile Computing, Vol. 9, No. 3, pp. 361-
375, 2010.

[5] R. Davidrajuh, “Verifying Solutions to the Dining


Philosophers Problem with Activity-Oriented Petri Nets”,
2014 4th International Conference on Artificial Intelligence
with Applications in Engineering and Technology, pp. 163-
168, 2014.

[6] J. Adamek, M. Nesterenko, and S. Tixeuil, “Evaluating


and Optimizing Stabilizing Dining Philosophers”, 2015 11th
European Dependable Computing Conference, pp. 233-244,
2015.

Вам также может понравиться