Algoritmo de Peterson

Algoritmo de Peterson

El algoritmo de Peterson, también conocido como solución de Peterson, es un algoritmo de programación concurrente para exclusión mutua, que permite a dos o más procesos o hilos de ejecución compartir un recurso sin conflictos, utilizando sólo memoria compartida para la comunicación.

Peterson desarrolló el primer algoritmo (1981) para dos procesos que fue una simplificación del algoritmo de Dekker para dos procesos. Posteriormente este algoritmo fue generalizado para N procesos.

Algoritmo para dos procesos

  bandera[0] = 0
  bandera[1] = 0
  turno      = 0 
  p0: bandera[0] = 1                            p1: bandera[1] = 1
      turno = 1                                 turno = 0
      while( bandera[1] && turno == 1 );        while( bandera[0] && turno == 0 );
                //no hace nada; espera.                               //no hace nada; espera. 
      // sección crítica                        // sección crítica
 
      // fin de la sección crítica              // fin de la sección crítica
      bandera[0] = 0                            bandera[1] = 0

Los procesos p0 y p1 no pueden estar en la sección crítica al mismo tiempo: si p0 está en la sección crítica, entonces bandera[0] = 1, y ocurre que bandera[1] = 0, con lo que p1 ha terminado la sección crítica, o que la variable compartida turno = 0, con lo que p1 está esperando para entrar a la sección crítica. En ambos casos, p1 no puede estar en la sección crítica.

Algoritmo para N procesos (pseudo-codigo)

// Variables compartidas
bandera: array[0..N-1] of -1..n-2; /* inicializada a –1 */
turno: array[0..N-2] of 0..n-1; /* inicializada a 0 */
 
// Protocolo para Pi ( i=0,...,N-1 )
j:0..N-2; /* variable local indicando la etapa */
for j = 0 to N-2
{
   bandera[i] = j;
   turno[j] = i;
   while [(∃ k ≠ i : bandera[k] ≥ j)(turno[j] == i)] do; 
}
<sección crítica>
bandera[i] = -1;

Véase también


Wikimedia foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Mira otros diccionarios:

  • Algoritmo de Peterson — El algoritmo de Peterson es un algoritmo de programación concurrente para exclusión mutua, que permite a dos procesos compartir un recurso sin conflictos, utilizando sólo memoria compartida para la comunicación. pre  f0   := 0  f1   := 0… …   Enciclopedia Universal

  • Algoritmo de la panadería de Lamport — El algoritmo de la panadería de Lamport es un algoritmo de computación creado por el científico en computación Dr Leslie Lamport, para implementar la exclusión mutua de N procesos o hilos de ejecución. Contenido 1 Algoritmo 2 Entrada en sección… …   Wikipedia Español

  • Algoritmo de Dekker — El algoritmo de Dekker es un algoritmo de programación concurrente para exclusión mutua, que permite a dos procesos o hilos de ejecución compartir un recurso sin conflictos. Fue uno de los primeros algoritmos de exclusión mutua inventados,… …   Wikipedia Español

  • Exclusión mutua (informática) — Para otros usos de este término, véase Exclusión mutua. Los algoritmos de exclusión mutua (comúnmente abreviada como mutex por mutual exclusion) se usan en programación concurrente para evitar el uso simultáneo de recursos comunes, como variables …   Wikipedia Español

  • Comprobación de redundancia cíclica — La comprobación de redundancia cíclica (CRC) es un tipo de función que recibe un flujo de datos de cualquier longitud como entrada y devuelve un valor de longitud fija como salida. El término suele ser usado para designar tanto a la función como… …   Wikipedia Español

  • Generador pseudoaleatorio de números — Saltar a navegación, búsqueda Un generador pseudoaleatorio de números (GPAN) es un algoritmo que produce una sucesión de números que es una muy buena aproximación a un conjunto aleatorio de números. La sucesión no es exactamente aleatoria en el… …   Wikipedia Español

  • Generador de números pseudoaleatorios — Un generador pseudoaleatorio de números (GPAN) es un algoritmo que produce una sucesión de números que es una muy buena aproximación a un conjunto aleatorio de números. La sucesión no es exactamente aleatoria en el sentido de que queda… …   Wikipedia Español

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”