Algoritmo de Peterson

El algoritmo de Peterson o algoritmo de desempate es un algoritmo desarrollado en la teoría de control de la competencia para coordinar dos o más procesos o hilos que tienen una sección crítica en la que debe haber exclusión mutua. El algoritmo garantiza una sincronización adecuada, evitando el bloqueo y asegurando que solo un proceso a la vez pueda realizar una sección crítica (serialización).

La siguiente es una descripción esquemática del algoritmo en pseudocódigo C, para 2 y para n procesos: si el proceso #1 se ejecuta primero, in1 se establece en true antes de configurar turn a 2. Dado que in2 se ha inicializado a false, la condición de iteración while no se cumple y el proceso #1 accede a la sección crítica. Si Mientras tanto se inicia el proceso #2, esto establecerá in2 en true y cambiará a 1. in1 ya se ha establecido en true por el proceso # 1, por lo que se cumple la condición de iteración while del proceso #2, por lo que esto tiene que esperar. Solo después de que el proceso #1 haya caído, la sección crítica in1 se vuelve falsa, y el proceso #2 puede acceder a su sección crítica. Si el proceso #1 se reinicia mientras tanto, se pondrá turn a 2, y tendrá que esperar hasta que el proceso #2 haya abandonado su sección crítica. La generalización que se ha hecho del algoritmo para n procesos es bastante compleja. El protocolo de entrada, para cada uno de los n procesos, consiste en un bucle for que itera en fases n - 1. El valor shift indica cuál es el último proceso que llegó a la fase j; mientras que el valor de in representa la fase en la que se encuentra el proceso I.

Algoritmos de exclusión mutua

Algoritmo Dekker

El algoritmo Dekker, también conocido como algoritmo de proyección de Dijkstra, es una solución completa al problema de la exclusión mutua en la coordinación de...

Algoritmo Baker

El algoritmo baker es uno de los métodos de exclusión mutua que encuentran aplicación práctica en la programación paralela para serializar la ejecución de secci...
Esta página se basa en el artículo de Wikipedia: Fuente, Autores, Licencia Creative Commons Reconocimiento-CompartirIgual.
This page is based on the Wikipedia article: Source, Authors, Creative Commons Attribution-ShareAlike License.
contactos
Política de privacidad , Descargos de responsabilidad