Algoritmo De Dekker

Páginas: 5 (1227 palabras) Publicado: 4 de febrero de 2013
BENÉMERITA UNIVERSIDAD AUTÓNOMA DE PUEBLA

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...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Algoritmo de dekker / peterson
  • Algoritmos de dekker
  • Algoritmos Dekker
  • dekk
  • Intentos de dekker
  • Algoritmo
  • Algoritmos
  • Algoritmo

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS