Algoritmo de anillo de fichas
Los procesos están organizados formando una estructura de anillo, donde a cada proceso se le asigna una posición en la estructura, de tal modo que cada proceso conoce a sus vecinos. Al inicializar el anillo se le da al proceso[0] el token, que circula en todo el anillo. Dicha ficha circula del proceso[k] al proceso[k + 1]. Como es obvio, el token estará circulando por todos los procesos, ya que estos se encuentran referenciados mediante una suerte de lista circular. Cuando un proceso obtiene la ficha de su vecino verifica si intenta entrar a una región crítica. En caso positivo el proceso entra a la región crítica (como se muestra en la zona marcada de rojo en la figura siguiente), hace el proceso necesario y sale de ella. Después de salir pasa la ficha a lo largo del anillo no se puede entrar a una segunda región crítica con la misma ficha (token o permiso).
En caso negativo:
La vuelve a pasar.
En un instante dado solo un proceso puede estar en una región crítica. En la figura podemos ver que solo un proceso es de color verde, es decir que solo ese proceso tiene la ficha y solo él está en facultad de poder acceder a su región crítica.
Si la ficha se pierde debe ser regenerada, pero es difícil detectar su perdida:
La cantidad de tiempo entre las apariciones sucesivas de la ficha en la red no está determinada, por ello es difícil decidir si está la ficha se ha perdido por algún error en un proceso o si es que está aún retenida por un proceso que está haciendo un uso intensivo de recursos.
La falla de un proceso es detectada cuando su vecino intenta sin éxito pasarle la ficha. Se lo debe eliminar del grupo y pasar la ficha al siguiente proceso activo. Todos los procesos deben mantener la configuración actual del anillo.
La falla de un proceso es detectada cuando su vecino intenta sin éxito pasarle la ficha. Se lo debe eliminar del grupo y pasar la ficha al siguiente proceso activo. Todos los procesos deben mantener la configuración actual del anillo.
Bueno, espero haber sido claro explicando este algoritmo. Y para cerrar el post aquí les dejo el link de descarga del proyecto de simulación realizado en Netbeans.
gracias por dejar tus algoritmos para piratearlos xD jajaja
ResponderBorrar