Algoritmo De Dekker
FACULTAD DE CIENCIAS DE LA COMPUTACIÓN
PROGRAMACIÓN CONCURRENTE Y PARALELA
REPORTE DEL ALGORITMO DE PETERSON Y DEKKER
MATRICULA:
200713431
PRIMAVERA 2013
FECHA:
30-FEBRERO-2013
ALGORITMO DE PETERSON
1. Introducción
El algoritmo de Peterson, también conocido como solución de Peterson, es un algoritmo de programaciónconcurrente 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.
2. ObjetivoAnalizar el problema de exclusión mutua de procesos, mediante el algoritmo de Peterson
3. Código
class PetersonP1 extends Thread
{
ComunPeterson cp;
public PetersonP1(ComunPeterson cp)
{
this.cp =cp;
cp.I.insertarDato(new Integer(0));
}
public void run()
{
int i=0;
int j=0;
while(j<21)
{
cp.P1deseaEntrar=true;
try{
sleep(400);
}catch(Exception e){}
while((cp.P2deseaEntrar)&&(cp.procesofavorecido==1))
{
cp.I.insertarDato(new Integer(i+1));
System.out.println("\nEl algoritmo de Peterson inserto el #"+(i));
cp.procesofavorecido=2;
cp.P1deseaEntrar=false;
}
i++; j++;
}
}
}
class PetersonP2 extends Thread
{
ComunPeterson cp;
public PetersonP2(ComunPeterson cp)
{this.cp=cp;
}
public void run()
{
int i=0;
int j=0;
boolean inicio =true;
while (j<20)
{
cp.P2deseaEntrar = true;
try{
sleep(400);
}
catch(Exception e){}
while((cp.P1deseaEntrar)&&(cp.procesofavorecido==2))
{
if(inicio) cp.I.iniciarAuxiliar();
inicio=false;
System.out.println("\tEl Algoritmo Peterson tomo el#"+(cp.I.obtenerDato()));
cp.procesofavorecido = 1;
cp.P2deseaEntrar=false;
}
i++; j++;
}
}
}
class ComunPeterson
{
int procesofavorecido = 1;
boolean P1deseaEntrar =false;
boolean P2deseaEntrar =false;
Lista I = new Lista();
}
class MainPeterson
{
public static void main(String a[])
{
ComunPeterson cp =new ComunPeterson();cp.procesofavorecido=1;
cp.P1deseaEntrar = false;
cp.P2deseaEntrar = false;
PetersonP1 p1=new PetersonP1(cp);
PetersonP2 p2=new PetersonP2(cp);
System.out.println("\n\t\tAlgoritmo de PETERSON\n");
p1.start();
p2.start();
}
}
4. Corridas:
--------------------Configuration: <Default>--------------------
Algoritmo de PETERSON
El algoritmo dePeterson inserto el #0
El Algoritmo Peterson tomo el #0
El algoritmo de Peterson inserto el #1
El Algoritmo Peterson tomo el #1
El algoritmo de Peterson inserto el #2
El Algoritmo Peterson tomo el #2
El algoritmo de Peterson inserto el #3
El Algoritmo Peterson tomo el #3
El algoritmo de Peterson inserto el #4
El Algoritmo Peterson tomo el #4
El algoritmo de Peterson inserto el#5
El Algoritmo Peterson tomo el #5
El algoritmo de Peterson inserto el #6
El Algoritmo Peterson tomo el #6
El algoritmo de Peterson inserto el #7
El Algoritmo Peterson tomo el #7
El algoritmo de Peterson inserto el #8
El Algoritmo Peterson tomo el #8
El algoritmo de Peterson inserto el #9
El Algoritmo Peterson tomo el #9
El algoritmo de Peterson inserto el #10
ElAlgoritmo Peterson tomo el #10
El algoritmo de Peterson inserto el #11
El Algoritmo Peterson tomo el #11
El algoritmo de Peterson inserto el #12
El Algoritmo Peterson tomo el #12
El algoritmo de Peterson inserto el #13
El Algoritmo Peterson tomo el #13
El algoritmo de Peterson inserto el #14
El Algoritmo Peterson tomo el #14
El algoritmo de Peterson inserto el #15
El Algoritmo...
Regístrate para leer el documento completo.