SlideShare ist ein Scribd-Unternehmen logo
1 von 32
BENEMERITA UNIVERSIDAD
 AUTONOMA DE PUEBLA




 FACULTAD DE CIENCIAS
  DE LA COMPUTACION




  PROGRAMACION CONCURRENTE Y PARALELA




               semaforos
LEZAMA SANCHEZ ANA LAURA
                                                    VALENCIA TOXQUI HUMBERTO




INTRODUCCION

El siguiente reporte describe los grafos con semáforos de 3,6 y 4 procesos
respectivamente, presentados el dia 10 de febrero de 2012.

DESARROLLO

1.-Grafo de 3 procesos, 3 clases, una por cada proceso, la clase
Simple_Mutex_Demo, SemaforoBinario, SemaforoGeneral, Semaphore,
SemaphoreDemo y Procesos1 donde se encuentra contenido en main.

               B



        A             D


               C




Codigo en java

Proceso1
class p1 extends Procesos1 implements Runnable

{




    public void run()

    {

        try

              {

                    SA.WAIT();

                    mutex.WAIT();

          System.out.println("Soy el proceso #1 y la instruccion A");

          Thread.sleep(5000);

          //System.out.flush();

          mutex.SIGNAL();

          SD.SIGNAL();



          } catch (InterruptedException e) {}



}

}

******************************************************



Proceso2

class p2 extends Procesos1 implements Runnable

{
public void run()

    {

            try

                  {

                         mutex.WAIT();

              System.out.println("Soy el proceso #2 y la instruccion B");

              Thread.sleep(5000);

              //System.out.flush();

              mutex.SIGNAL();

            SA.SIGNAL();

            SB.SIGNAL();

            SC.SIGNAL();

              } catch (InterruptedException e) {}

    try {

            SB.WAIT();

            SD.WAIT();

            SE.WAIT();

            mutex.WAIT();

            System.out.println("Soy el proceso #2 y la instruccion C");

             Thread.sleep(5);

            mutex.SIGNAL();

        }

        catch (InterruptedException e) {}



}
}

***************************************************************
proceso3

class p3 extends Procesos1 implements Runnable

{




    public void run()

    {

        try

              {

                    SC.WAIT();

                    mutex.WAIT();

          System.out.println("Soy el proceso #3 y la instruccion D");

          Thread.sleep(5000);

          //System.out.flush();

          mutex.SIGNAL();

          SE.SIGNAL();



          } catch (InterruptedException e) {}



}

}

**************************************************************

Semáforo binario

public class SemaforoBinario {
protected int contador = 0;



       public SemaforoBinario (int valorInicial) {

             contador = valorInicial;

       }



       synchronized public void WAIT () {

             while (contador == 0)

                    try {

                            wait();

                    }

                    catch (Exception e) {}

             contador--;

       }



       synchronized public void SIGNAL () {

             contador = 1;

             notify();

       }

}

******************************************************

Semaphore

class Semaphore

{

       private int count;

    public Semaphore(int n)
{

              this.count = n;

      }



      public synchronized void WAIT()

              {

                    while(count == 0)

                          {

                                try

                                        {

                                              wait();

                                        }

                                        catch (InterruptedException e) {//keep
trying}

                                                            }

                                                            count--;

               }

          }

     public synchronized void SIGNAL()

      {

              count++;

              notify();

          }

}

************************************************************

Procesos1
import java.io.*;

class Procesos1

{



protected static final SemaforoBinario SA = new SemaforoBinario(0);

protected static final SemaforoBinario SB = new SemaforoBinario(0);

protected static final SemaforoBinario SC = new SemaforoBinario(0);

protected static final SemaforoBinario SD = new SemaforoBinario(0);

protected static final SemaforoBinario SE = new SemaforoBinario(0);

protected static final SemaforoBinario mutex = new SemaforoBinario(1);




public static void main(String args[]) throws IOException

{

      try

             {

                       Thread P1 = new Thread(new p1());

         Thread P2 = new Thread(new p2());

         Thread P3 = new Thread(new p3());

         P1.start();

         P2.start();

         P3.start();

         Thread.sleep(300);

     }



     catch (InterruptedException e) {}
System.out.println(" Termine...");

     // System.exit(0);

}

}



Salida:




♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠

2.-Grafo de 3 procesos,3 clases, una por cada proceso, la clase
Simple_Mutex_Demo, SemaforoBinario, SemaforoGeneral, Semaphore,
SemaphoreDemo y Procesos1 donde se encuentra contenido en main.



          A    C       E




          B    D           F




Codigo en java

Proceso1

class p1 extends Procesos1 implements Runnable

{
public void run()

    {

        try

              {

              //    SA.WAIT();

                    mutex.WAIT();

          System.out.println("Soy el proceso #1 y la instruccion a");

          System.out.println("Soy el proceso #1 y la instruccion b");

          Thread.sleep(5000);

          //System.out.flush();

          mutex.SIGNAL();

          SA.SIGNAL();



          } catch (InterruptedException e) {}




}

}

********************************************************



Proceso2

class p2 extends Procesos1 implements Runnable

{




    public void run()
{

        try

              {

                    mutex.WAIT();

          System.out.println("Soy el proceso #2 y la instruccion c");

          Thread.sleep(5000);

          //System.out.flush();

          mutex.SIGNAL();



        SC.SIGNAL();

          } catch (InterruptedException e) {}




}

}

******************************************************

Proceso 3

class p3 extends Procesos1 implements Runnable

{




    public void run()

    {

        try

              {
mutex.WAIT();

     System.out.println("Soy el proceso #3 y la instruccion e");

     System.out.println("Soy el proceso #3 y la instruccion F");

     Thread.sleep(5000);

     //System.out.flush();

     mutex.SIGNAL();

     SE.SIGNAL();



     } catch (InterruptedException e) {}

     try

           {

               SA.WAIT();

               SC.WAIT();

               SE.WAIT();

               mutex.WAIT();

     System.out.println("Soy el proceso #3 y la instruccion d");

     Thread.sleep(5000);

     //System.out.flush();

     mutex.SIGNAL();

     SE.SIGNAL();



     } catch (InterruptedException e) {}



}

}

******************************************************
Semáforo binario

public class SemaforoBinario {

      protected int contador = 0;



      public SemaforoBinario (int valorInicial) {

            contador = valorInicial;

      }



      synchronized public void WAIT () {

            while (contador == 0)

                   try {

                           wait();

                   }

                   catch (Exception e) {}

            contador--;

      }



      synchronized public void SIGNAL () {

            contador = 1;

            notify();

      }

}

******************************************************

Semaphore

class Semaphore

{
private int count;

    public Semaphore(int n)

       {

               this.count = n;

       }



       public synchronized void WAIT()

               {

                     while(count == 0)

                            {

                                 try

                                         {

                                               wait();

                                         }

                                         catch (InterruptedException e) {//keep
trying}

                                                             }

                                                             count--;

                }

           }

      public synchronized void SIGNAL()

       {

               count++;

               notify();

           }

}
************************************************************

Procesos1

import java.io.*;

class Procesos1

{



protected static final SemaforoBinario SA = new SemaforoBinario(0);

protected static final SemaforoBinario SB = new SemaforoBinario(0);

protected static final SemaforoBinario SC = new SemaforoBinario(0);

protected static final SemaforoBinario SD = new SemaforoBinario(0);

protected static final SemaforoBinario SE = new SemaforoBinario(0);

protected static final SemaforoBinario mutex = new SemaforoBinario(1);




public static void main(String args[]) throws IOException

{

      try

             {

                       Thread P1 = new Thread(new p1());

         Thread P2 = new Thread(new p2());

         Thread P3 = new Thread(new p3());

         P1.start();

         P2.start();

         P3.start();

         Thread.sleep(300);

     }
catch (InterruptedException e) {}

        System.out.println(" Termine...");

        // System.exit(0);

}

}

Salida




♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠



3.- Grafo de 4 procesos,4 clases, una por cada proceso, la clase
Simple_Mutex_Demo, SemaforoBinario, SemaforoGeneral, Semaphore,
SemaphoreDemo y Procesos1 donde se encuentra contenido en main.

Proceso 1

class p1 extends Procesos1 implements Runnable

{




    public void run()

    {

        try

               {
mutex.WAIT();

          System.out.println("Soy el proceso #1 y la instruccion S1");

          Thread.sleep(5000);

          //System.out.flush();

          mutex.SIGNAL();

        SA.SIGNAL();

        SB.SIGNAL();



          } catch (InterruptedException e) {}

    }

}

***********************************************************

Proceso 2

class p2 extends Procesos1 implements Runnable

{




    public void run()

    {

        try

              {

                    mutex.WAIT();

                    SA.WAIT();

                    System.out.println("Soy el proceso #2 y la instruccion S2");

          Thread.sleep(5000);

          //System.out.flush();
mutex.SIGNAL();

        SC.SIGNAL();




          } catch (InterruptedException e) {}

    }

}

************************************************************

Proceso 3

class p3 extends Procesos1 implements Runnable

{




    public void run()

    {

        try

              {

                    mutex.WAIT();

                    SB.WAIT();

                    System.out.println("Soy el proceso #3 y la instruccion S3");

          Thread.sleep(5000);

          //System.out.flush();

          mutex.SIGNAL();

        SD.SIGNAL();
} catch (InterruptedException e) {}

    }

}

******************************************************

Proceso 4

class p4 extends Procesos1 implements Runnable

{




    public void run()

    {

        try

              {

                    mutex.WAIT();

                    SC.WAIT();

                    SD.WAIT();

                    System.out.println("Soy el proceso #4 y la instruccion S4");

          Thread.sleep(5000);

          //System.out.flush();

          mutex.SIGNAL();




          } catch (InterruptedException e) {}

    }

}
**********************************************************

Semáforo binario

public class SemaforoBinario {

      protected int contador = 0;



      public SemaforoBinario (int valorInicial) {

            contador = valorInicial;

      }



      synchronized public void WAIT () {

            while (contador == 0)

                   try {

                           wait();

                   }

                   catch (Exception e) {}

            contador--;

      }



      synchronized public void SIGNAL () {

            contador = 1;

            notify();

      }

}

******************************************************

Semaphore

class Semaphore
{

       private int count;

    public Semaphore(int n)

       {

               this.count = n;

       }



       public synchronized void WAIT()

               {

                     while(count == 0)

                            {

                                 try

                                         {

                                               wait();

                                         }

                                         catch (InterruptedException e) {//keep
trying}

                                                             }

                                                             count--;

                }

           }

      public synchronized void SIGNAL()

       {

               count++;

               notify();

           }
}

***************************************************************

Procesos1

import java.io.*;

class Procesos1

{



protected static final SemaforoBinario SA = new SemaforoBinario(0);

protected static final SemaforoBinario SB = new SemaforoBinario(0);

protected static final SemaforoBinario SC = new SemaforoBinario(0);

protected static final SemaforoBinario SD = new SemaforoBinario(0);



protected static final SemaforoBinario mutex = new SemaforoBinario(1);




public static void main(String args[]) throws IOException

{

      try

            {

                      Thread P1 = new Thread(new p1());

        Thread P2 = new Thread(new p2());

        Thread P3 = new Thread(new p3());

        Thread P4 = new Thread(new p4());




        P1.start();
P2.start();

         P3.start();

         P4.start();



         Thread.sleep(300);

     }



     catch (InterruptedException e) {}

     //System.out.println(" Termine...");

     // System.exit(0);

}

}

Salida




******************************************************

4.-Grafo de 6 procesos 6 clases, una por cada proceso, la clase
Simple_Mutex_Demo, SemaforoBinario, SemaforoGeneral, Semaphore,
SemaphoreDemo y Procesos1 donde se encuentra contenido en main.

Proceso1

class p1 extends Procesos1 implements Runnable

{
public void run()

    {

        try

              {

                     mutex.WAIT();

          System.out.println("Soy el proceso #1 y la instruccion S1");

          Thread.sleep(1000);

          //System.out.flush();

          mutex.SIGNAL();

        SA.SIGNAL();

        SB.SIGNAL();



          } catch (InterruptedException e) {}

    }

}

Proceso2

class p2 extends Procesos1 implements Runnable

{

        public void run()

              {

                     try

                            {

                                  mutex.WAIT();

                                  SA.WAIT();

                                  System.out.println("Soy el proceso #2 y la
instruccion S2");
System.out.println("Soy el proceso #2 y la
instruccion S4");

                                Thread.sleep(1000);

                                mutex.SIGNAL();

                                SC.SIGNAL();

                                SD.SIGNAL();

                          } catch (InterruptedException e) {}

            }

}



Proceso3

class p3 extends Procesos1 implements Runnable

{

      public void run()

            {

                    try

                          {

                                mutex.WAIT();

                                SB.WAIT();

                                System.out.println("Soy el proceso #3 y la
instruccion S3");

                                Thread.sleep(1000);

                                mutex.SIGNAL();

                                SE.SIGNAL();

                          } catch (InterruptedException e) {}

            }
}

Proceso4

class p4 extends Procesos1 implements Runnable

{

      public void run()

            {

                    try

                          {

                                mutex.WAIT();

                                SC.WAIT();

                                System.out.println("Soy el proceso #4 y la
instruccion S5");

                                Thread.sleep(1000);

                                mutex.SIGNAL();

                                SF.SIGNAL();

                          } catch (InterruptedException e) {}

            }

}

Proceso5

class p5 extends Procesos1 implements Runnable

{

      public void run()

            {

                    try

                          {

                                mutex.WAIT();
SD.WAIT();

                                SE.WAIT();

                                System.out.println("Soy el proceso #5 y la
instruccion S6");

                                Thread.sleep(1000);

                                mutex.SIGNAL();

                                SG.SIGNAL();

                          } catch (InterruptedException e) {}

            }

}

Proceso6

class p6 extends Procesos1 implements Runnable

{

      public void run()

            {

                    try

                          {

                                mutex.WAIT();

                                SF.WAIT();

                                SG.WAIT();

                                System.out.println("Soy el proceso #6 y la
instruccion S7");

                                Thread.sleep(1000);

                                mutex.SIGNAL();



                          } catch (InterruptedException e) {}
}

}

*************************************************************

Semáforo binario

public class SemaforoBinario {

      protected int contador = 0;



      public SemaforoBinario (int valorInicial) {

            contador = valorInicial;

      }



      synchronized public void WAIT () {

            while (contador == 0)

                   try {

                           wait();

                   }

                   catch (Exception e) {}

            contador--;

      }



      synchronized public void SIGNAL () {

            contador = 1;

            notify();

      }

}

******************************************************
Semaphore

class Semaphore

{

       private int count;

    public Semaphore(int n)

       {

               this.count = n;

       }



       public synchronized void WAIT()

               {

                     while(count == 0)

                            {

                                 try

                                         {

                                               wait();

                                         }

                                         catch (InterruptedException e) {//keep
trying}

                                                             }

                                                             count--;

                }

           }

      public synchronized void SIGNAL()

       {

               count++;
notify();

        }

}

***********************************************************

import java.io.*;

class Procesos1

{



protected static final SemaforoBinario SA = new SemaforoBinario(0);

protected static final SemaforoBinario SB = new SemaforoBinario(0);

protected static final SemaforoBinario SC = new SemaforoBinario(0);

protected static final SemaforoBinario SD = new SemaforoBinario(0);

protected static final SemaforoBinario SE = new SemaforoBinario(0);

protected static final SemaforoBinario SF = new SemaforoBinario(0);

protected static final SemaforoBinario SG = new SemaforoBinario(0);

protected static final SemaforoBinario mutex = new SemaforoBinario(1);




public static void main(String args[]) throws IOException

{

      try

            {

                    Thread P1 = new Thread(new p1());

        Thread P2 = new Thread(new p2());

        Thread P3 = new Thread(new p3());

        Thread P4 = new Thread(new p4());
Thread P5 = new Thread(new p5());

         Thread P6 = new Thread(new p6());



         P1.start();

         P2.start();

         P3.start();

         P4.start();

         P5.start();

         P6.start();

         Thread.sleep(100);

    }



    catch (InterruptedException e) {}

    //System.out.println(" Termine...");

    // System.exit(0);

}

}

***********************************************************

Salida
Conclusión

Los programas mencionados anteriormente me ayudaron a comprender el
concepto de semáforo y como se manejan en java.

Ubique de mejor forma los errores obtenidos en el momento de la elaboración
de los programas y pude implementar los 4 grafos ya sin problemas.

Bibliografía

http://www.cs.buap.mx/~mceron/principal_con.html

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.
 
Ejercicios de programacion concurrente
Ejercicios de programacion concurrenteEjercicios de programacion concurrente
Ejercicios de programacion concurrente
 
Reporte viernes 24
Reporte viernes 24Reporte viernes 24
Reporte viernes 24
 
Programas en netbeans
Programas en netbeansProgramas en netbeans
Programas en netbeans
 
Pila
PilaPila
Pila
 
Electrónica digital: Maquina de estado finito
Electrónica digital: Maquina de estado finito Electrónica digital: Maquina de estado finito
Electrónica digital: Maquina de estado finito
 
Codigo distancia
Codigo distanciaCodigo distancia
Codigo distancia
 
NOTACIÓN POSTFIJA E INFIJA - JAVA
NOTACIÓN POSTFIJA E INFIJA - JAVANOTACIÓN POSTFIJA E INFIJA - JAVA
NOTACIÓN POSTFIJA E INFIJA - JAVA
 
Entrega de reporte no 1, lab 1
Entrega de reporte no 1, lab 1Entrega de reporte no 1, lab 1
Entrega de reporte no 1, lab 1
 
Java AWT Tres en Raya
Java AWT Tres en RayaJava AWT Tres en Raya
Java AWT Tres en Raya
 
Test bench en vhdl
Test bench en vhdlTest bench en vhdl
Test bench en vhdl
 
Taller interfaz 2
Taller interfaz 2Taller interfaz 2
Taller interfaz 2
 
Node al limite con Nest
Node al limite con NestNode al limite con Nest
Node al limite con Nest
 
Claseprogrmacion
ClaseprogrmacionClaseprogrmacion
Claseprogrmacion
 
Recopilacion
RecopilacionRecopilacion
Recopilacion
 
JUEGO CONCENTRECE PARA ENTORNO DEV C++
JUEGO CONCENTRECE PARA ENTORNO DEV C++JUEGO CONCENTRECE PARA ENTORNO DEV C++
JUEGO CONCENTRECE PARA ENTORNO DEV C++
 
P1
P1P1
P1
 
Clase5 controldeflujo
Clase5 controldeflujoClase5 controldeflujo
Clase5 controldeflujo
 
Electrónica digital: Maquina de estado
Electrónica digital: Maquina de estado Electrónica digital: Maquina de estado
Electrónica digital: Maquina de estado
 
TIMERS&TEMPORIZADORES EN "C"
TIMERS&TEMPORIZADORES EN "C"TIMERS&TEMPORIZADORES EN "C"
TIMERS&TEMPORIZADORES EN "C"
 

Ähnlich wie Reporte de grafos con semagforos de 3,3,4 y 6 procesos

Sistemas Tolerantes a Fallas
Sistemas Tolerantes a FallasSistemas Tolerantes a Fallas
Sistemas Tolerantes a FallasAgustin Ramos
 
Desarrollo de sistemas tolerantes a fallas
Desarrollo de sistemas tolerantes a fallasDesarrollo de sistemas tolerantes a fallas
Desarrollo de sistemas tolerantes a fallasSoftware Guru
 
Copilacion de ejercicios en java
Copilacion de ejercicios en javaCopilacion de ejercicios en java
Copilacion de ejercicios en javaJonathan Israel
 
Ejercicios en Netbeans
Ejercicios en NetbeansEjercicios en Netbeans
Ejercicios en Netbeansedgar muñoz
 
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01cursobeta
 
Taller de programación clase #3
Taller de programación   clase #3Taller de programación   clase #3
Taller de programación clase #3Juan Cardona
 
Scjp Jug Section 2 Flow Control
Scjp Jug Section 2 Flow ControlScjp Jug Section 2 Flow Control
Scjp Jug Section 2 Flow ControlJose Selman
 
Apache Storm: Desarrollo
Apache Storm: DesarrolloApache Storm: Desarrollo
Apache Storm: DesarrolloStratebi
 
Guia para examen java
Guia para examen javaGuia para examen java
Guia para examen javatecno5
 
Guia para examen java
Guia para examen javaGuia para examen java
Guia para examen javatecno5
 
ARDUINO - LADDER PROYECTO CX3 RESET TEMP EH EN 2 CILINDROS BI MONO...
ARDUINO  - LADDER   PROYECTO  CX3 RESET  TEMP  EH  EN   2  CILINDROS  BI MONO...ARDUINO  - LADDER   PROYECTO  CX3 RESET  TEMP  EH  EN   2  CILINDROS  BI MONO...
ARDUINO - LADDER PROYECTO CX3 RESET TEMP EH EN 2 CILINDROS BI MONO...Jovanny Duque
 
Lenguaje de programacion java, conceptos
Lenguaje de programacion java, conceptosLenguaje de programacion java, conceptos
Lenguaje de programacion java, conceptosmellcv
 
Ordenamiento shell
Ordenamiento shellOrdenamiento shell
Ordenamiento shellAngel Duarte
 
ARDUINO GRAFCET - A+TEMPA- CONDICIONES OK FLUIDSIM P ARDUINO GRAFCET.pdf
ARDUINO  GRAFCET   -  A+TEMPA- CONDICIONES OK  FLUIDSIM P ARDUINO GRAFCET.pdfARDUINO  GRAFCET   -  A+TEMPA- CONDICIONES OK  FLUIDSIM P ARDUINO GRAFCET.pdf
ARDUINO GRAFCET - A+TEMPA- CONDICIONES OK FLUIDSIM P ARDUINO GRAFCET.pdfJovanny Duque
 
la estruturas de la programacion basicas de las POO
la estruturas de la programacion basicas de las POOla estruturas de la programacion basicas de las POO
la estruturas de la programacion basicas de las POOAmado Arcaya
 

Ähnlich wie Reporte de grafos con semagforos de 3,3,4 y 6 procesos (20)

Java
JavaJava
Java
 
Multitarea e hilos en java con ejemplos
Multitarea e hilos en java con ejemplosMultitarea e hilos en java con ejemplos
Multitarea e hilos en java con ejemplos
 
Sistemas Tolerantes a Fallas
Sistemas Tolerantes a FallasSistemas Tolerantes a Fallas
Sistemas Tolerantes a Fallas
 
Desarrollo de sistemas tolerantes a fallas
Desarrollo de sistemas tolerantes a fallasDesarrollo de sistemas tolerantes a fallas
Desarrollo de sistemas tolerantes a fallas
 
Copilacion de ejercicios en java
Copilacion de ejercicios en javaCopilacion de ejercicios en java
Copilacion de ejercicios en java
 
Ejercicios en Netbeans
Ejercicios en NetbeansEjercicios en Netbeans
Ejercicios en Netbeans
 
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
 
Taller de programación clase #3
Taller de programación   clase #3Taller de programación   clase #3
Taller de programación clase #3
 
Prueba try
Prueba tryPrueba try
Prueba try
 
Scjp Jug Section 2 Flow Control
Scjp Jug Section 2 Flow ControlScjp Jug Section 2 Flow Control
Scjp Jug Section 2 Flow Control
 
5 c iterative
5 c iterative5 c iterative
5 c iterative
 
Apache Storm: Desarrollo
Apache Storm: DesarrolloApache Storm: Desarrollo
Apache Storm: Desarrollo
 
Guia para examen java
Guia para examen javaGuia para examen java
Guia para examen java
 
Guia para examen java
Guia para examen javaGuia para examen java
Guia para examen java
 
ARDUINO - LADDER PROYECTO CX3 RESET TEMP EH EN 2 CILINDROS BI MONO...
ARDUINO  - LADDER   PROYECTO  CX3 RESET  TEMP  EH  EN   2  CILINDROS  BI MONO...ARDUINO  - LADDER   PROYECTO  CX3 RESET  TEMP  EH  EN   2  CILINDROS  BI MONO...
ARDUINO - LADDER PROYECTO CX3 RESET TEMP EH EN 2 CILINDROS BI MONO...
 
Lenguaje de programacion java, conceptos
Lenguaje de programacion java, conceptosLenguaje de programacion java, conceptos
Lenguaje de programacion java, conceptos
 
Ordenamiento shell
Ordenamiento shellOrdenamiento shell
Ordenamiento shell
 
ARDUINO GRAFCET - A+TEMPA- CONDICIONES OK FLUIDSIM P ARDUINO GRAFCET.pdf
ARDUINO  GRAFCET   -  A+TEMPA- CONDICIONES OK  FLUIDSIM P ARDUINO GRAFCET.pdfARDUINO  GRAFCET   -  A+TEMPA- CONDICIONES OK  FLUIDSIM P ARDUINO GRAFCET.pdf
ARDUINO GRAFCET - A+TEMPA- CONDICIONES OK FLUIDSIM P ARDUINO GRAFCET.pdf
 
la estruturas de la programacion basicas de las POO
la estruturas de la programacion basicas de las POOla estruturas de la programacion basicas de las POO
la estruturas de la programacion basicas de las POO
 
Programas en netbeans
Programas en netbeansProgramas en netbeans
Programas en netbeans
 

Reporte de grafos con semagforos de 3,3,4 y 6 procesos

  • 1. BENEMERITA UNIVERSIDAD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACION PROGRAMACION CONCURRENTE Y PARALELA semaforos
  • 2. LEZAMA SANCHEZ ANA LAURA VALENCIA TOXQUI HUMBERTO INTRODUCCION El siguiente reporte describe los grafos con semáforos de 3,6 y 4 procesos respectivamente, presentados el dia 10 de febrero de 2012. DESARROLLO 1.-Grafo de 3 procesos, 3 clases, una por cada proceso, la clase Simple_Mutex_Demo, SemaforoBinario, SemaforoGeneral, Semaphore, SemaphoreDemo y Procesos1 donde se encuentra contenido en main. B A D C Codigo en java Proceso1
  • 3. class p1 extends Procesos1 implements Runnable { public void run() { try { SA.WAIT(); mutex.WAIT(); System.out.println("Soy el proceso #1 y la instruccion A"); Thread.sleep(5000); //System.out.flush(); mutex.SIGNAL(); SD.SIGNAL(); } catch (InterruptedException e) {} } } ****************************************************** Proceso2 class p2 extends Procesos1 implements Runnable {
  • 4. public void run() { try { mutex.WAIT(); System.out.println("Soy el proceso #2 y la instruccion B"); Thread.sleep(5000); //System.out.flush(); mutex.SIGNAL(); SA.SIGNAL(); SB.SIGNAL(); SC.SIGNAL(); } catch (InterruptedException e) {} try { SB.WAIT(); SD.WAIT(); SE.WAIT(); mutex.WAIT(); System.out.println("Soy el proceso #2 y la instruccion C"); Thread.sleep(5); mutex.SIGNAL(); } catch (InterruptedException e) {} }
  • 5. } *************************************************************** proceso3 class p3 extends Procesos1 implements Runnable { public void run() { try { SC.WAIT(); mutex.WAIT(); System.out.println("Soy el proceso #3 y la instruccion D"); Thread.sleep(5000); //System.out.flush(); mutex.SIGNAL(); SE.SIGNAL(); } catch (InterruptedException e) {} } } ************************************************************** Semáforo binario public class SemaforoBinario {
  • 6. protected int contador = 0; public SemaforoBinario (int valorInicial) { contador = valorInicial; } synchronized public void WAIT () { while (contador == 0) try { wait(); } catch (Exception e) {} contador--; } synchronized public void SIGNAL () { contador = 1; notify(); } } ****************************************************** Semaphore class Semaphore { private int count; public Semaphore(int n)
  • 7. { this.count = n; } public synchronized void WAIT() { while(count == 0) { try { wait(); } catch (InterruptedException e) {//keep trying} } count--; } } public synchronized void SIGNAL() { count++; notify(); } } ************************************************************ Procesos1
  • 8. import java.io.*; class Procesos1 { protected static final SemaforoBinario SA = new SemaforoBinario(0); protected static final SemaforoBinario SB = new SemaforoBinario(0); protected static final SemaforoBinario SC = new SemaforoBinario(0); protected static final SemaforoBinario SD = new SemaforoBinario(0); protected static final SemaforoBinario SE = new SemaforoBinario(0); protected static final SemaforoBinario mutex = new SemaforoBinario(1); public static void main(String args[]) throws IOException { try { Thread P1 = new Thread(new p1()); Thread P2 = new Thread(new p2()); Thread P3 = new Thread(new p3()); P1.start(); P2.start(); P3.start(); Thread.sleep(300); } catch (InterruptedException e) {}
  • 9. System.out.println(" Termine..."); // System.exit(0); } } Salida: ♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠ 2.-Grafo de 3 procesos,3 clases, una por cada proceso, la clase Simple_Mutex_Demo, SemaforoBinario, SemaforoGeneral, Semaphore, SemaphoreDemo y Procesos1 donde se encuentra contenido en main. A C E B D F Codigo en java Proceso1 class p1 extends Procesos1 implements Runnable {
  • 10. public void run() { try { // SA.WAIT(); mutex.WAIT(); System.out.println("Soy el proceso #1 y la instruccion a"); System.out.println("Soy el proceso #1 y la instruccion b"); Thread.sleep(5000); //System.out.flush(); mutex.SIGNAL(); SA.SIGNAL(); } catch (InterruptedException e) {} } } ******************************************************** Proceso2 class p2 extends Procesos1 implements Runnable { public void run()
  • 11. { try { mutex.WAIT(); System.out.println("Soy el proceso #2 y la instruccion c"); Thread.sleep(5000); //System.out.flush(); mutex.SIGNAL(); SC.SIGNAL(); } catch (InterruptedException e) {} } } ****************************************************** Proceso 3 class p3 extends Procesos1 implements Runnable { public void run() { try {
  • 12. mutex.WAIT(); System.out.println("Soy el proceso #3 y la instruccion e"); System.out.println("Soy el proceso #3 y la instruccion F"); Thread.sleep(5000); //System.out.flush(); mutex.SIGNAL(); SE.SIGNAL(); } catch (InterruptedException e) {} try { SA.WAIT(); SC.WAIT(); SE.WAIT(); mutex.WAIT(); System.out.println("Soy el proceso #3 y la instruccion d"); Thread.sleep(5000); //System.out.flush(); mutex.SIGNAL(); SE.SIGNAL(); } catch (InterruptedException e) {} } } ******************************************************
  • 13. Semáforo binario public class SemaforoBinario { protected int contador = 0; public SemaforoBinario (int valorInicial) { contador = valorInicial; } synchronized public void WAIT () { while (contador == 0) try { wait(); } catch (Exception e) {} contador--; } synchronized public void SIGNAL () { contador = 1; notify(); } } ****************************************************** Semaphore class Semaphore {
  • 14. private int count; public Semaphore(int n) { this.count = n; } public synchronized void WAIT() { while(count == 0) { try { wait(); } catch (InterruptedException e) {//keep trying} } count--; } } public synchronized void SIGNAL() { count++; notify(); } }
  • 15. ************************************************************ Procesos1 import java.io.*; class Procesos1 { protected static final SemaforoBinario SA = new SemaforoBinario(0); protected static final SemaforoBinario SB = new SemaforoBinario(0); protected static final SemaforoBinario SC = new SemaforoBinario(0); protected static final SemaforoBinario SD = new SemaforoBinario(0); protected static final SemaforoBinario SE = new SemaforoBinario(0); protected static final SemaforoBinario mutex = new SemaforoBinario(1); public static void main(String args[]) throws IOException { try { Thread P1 = new Thread(new p1()); Thread P2 = new Thread(new p2()); Thread P3 = new Thread(new p3()); P1.start(); P2.start(); P3.start(); Thread.sleep(300); }
  • 16. catch (InterruptedException e) {} System.out.println(" Termine..."); // System.exit(0); } } Salida ♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠ 3.- Grafo de 4 procesos,4 clases, una por cada proceso, la clase Simple_Mutex_Demo, SemaforoBinario, SemaforoGeneral, Semaphore, SemaphoreDemo y Procesos1 donde se encuentra contenido en main. Proceso 1 class p1 extends Procesos1 implements Runnable { public void run() { try {
  • 17. mutex.WAIT(); System.out.println("Soy el proceso #1 y la instruccion S1"); Thread.sleep(5000); //System.out.flush(); mutex.SIGNAL(); SA.SIGNAL(); SB.SIGNAL(); } catch (InterruptedException e) {} } } *********************************************************** Proceso 2 class p2 extends Procesos1 implements Runnable { public void run() { try { mutex.WAIT(); SA.WAIT(); System.out.println("Soy el proceso #2 y la instruccion S2"); Thread.sleep(5000); //System.out.flush();
  • 18. mutex.SIGNAL(); SC.SIGNAL(); } catch (InterruptedException e) {} } } ************************************************************ Proceso 3 class p3 extends Procesos1 implements Runnable { public void run() { try { mutex.WAIT(); SB.WAIT(); System.out.println("Soy el proceso #3 y la instruccion S3"); Thread.sleep(5000); //System.out.flush(); mutex.SIGNAL(); SD.SIGNAL();
  • 19. } catch (InterruptedException e) {} } } ****************************************************** Proceso 4 class p4 extends Procesos1 implements Runnable { public void run() { try { mutex.WAIT(); SC.WAIT(); SD.WAIT(); System.out.println("Soy el proceso #4 y la instruccion S4"); Thread.sleep(5000); //System.out.flush(); mutex.SIGNAL(); } catch (InterruptedException e) {} } }
  • 20. ********************************************************** Semáforo binario public class SemaforoBinario { protected int contador = 0; public SemaforoBinario (int valorInicial) { contador = valorInicial; } synchronized public void WAIT () { while (contador == 0) try { wait(); } catch (Exception e) {} contador--; } synchronized public void SIGNAL () { contador = 1; notify(); } } ****************************************************** Semaphore class Semaphore
  • 21. { private int count; public Semaphore(int n) { this.count = n; } public synchronized void WAIT() { while(count == 0) { try { wait(); } catch (InterruptedException e) {//keep trying} } count--; } } public synchronized void SIGNAL() { count++; notify(); }
  • 22. } *************************************************************** Procesos1 import java.io.*; class Procesos1 { protected static final SemaforoBinario SA = new SemaforoBinario(0); protected static final SemaforoBinario SB = new SemaforoBinario(0); protected static final SemaforoBinario SC = new SemaforoBinario(0); protected static final SemaforoBinario SD = new SemaforoBinario(0); protected static final SemaforoBinario mutex = new SemaforoBinario(1); public static void main(String args[]) throws IOException { try { Thread P1 = new Thread(new p1()); Thread P2 = new Thread(new p2()); Thread P3 = new Thread(new p3()); Thread P4 = new Thread(new p4()); P1.start();
  • 23. P2.start(); P3.start(); P4.start(); Thread.sleep(300); } catch (InterruptedException e) {} //System.out.println(" Termine..."); // System.exit(0); } } Salida ****************************************************** 4.-Grafo de 6 procesos 6 clases, una por cada proceso, la clase Simple_Mutex_Demo, SemaforoBinario, SemaforoGeneral, Semaphore, SemaphoreDemo y Procesos1 donde se encuentra contenido en main. Proceso1 class p1 extends Procesos1 implements Runnable {
  • 24. public void run() { try { mutex.WAIT(); System.out.println("Soy el proceso #1 y la instruccion S1"); Thread.sleep(1000); //System.out.flush(); mutex.SIGNAL(); SA.SIGNAL(); SB.SIGNAL(); } catch (InterruptedException e) {} } } Proceso2 class p2 extends Procesos1 implements Runnable { public void run() { try { mutex.WAIT(); SA.WAIT(); System.out.println("Soy el proceso #2 y la instruccion S2");
  • 25. System.out.println("Soy el proceso #2 y la instruccion S4"); Thread.sleep(1000); mutex.SIGNAL(); SC.SIGNAL(); SD.SIGNAL(); } catch (InterruptedException e) {} } } Proceso3 class p3 extends Procesos1 implements Runnable { public void run() { try { mutex.WAIT(); SB.WAIT(); System.out.println("Soy el proceso #3 y la instruccion S3"); Thread.sleep(1000); mutex.SIGNAL(); SE.SIGNAL(); } catch (InterruptedException e) {} }
  • 26. } Proceso4 class p4 extends Procesos1 implements Runnable { public void run() { try { mutex.WAIT(); SC.WAIT(); System.out.println("Soy el proceso #4 y la instruccion S5"); Thread.sleep(1000); mutex.SIGNAL(); SF.SIGNAL(); } catch (InterruptedException e) {} } } Proceso5 class p5 extends Procesos1 implements Runnable { public void run() { try { mutex.WAIT();
  • 27. SD.WAIT(); SE.WAIT(); System.out.println("Soy el proceso #5 y la instruccion S6"); Thread.sleep(1000); mutex.SIGNAL(); SG.SIGNAL(); } catch (InterruptedException e) {} } } Proceso6 class p6 extends Procesos1 implements Runnable { public void run() { try { mutex.WAIT(); SF.WAIT(); SG.WAIT(); System.out.println("Soy el proceso #6 y la instruccion S7"); Thread.sleep(1000); mutex.SIGNAL(); } catch (InterruptedException e) {}
  • 28. } } ************************************************************* Semáforo binario public class SemaforoBinario { protected int contador = 0; public SemaforoBinario (int valorInicial) { contador = valorInicial; } synchronized public void WAIT () { while (contador == 0) try { wait(); } catch (Exception e) {} contador--; } synchronized public void SIGNAL () { contador = 1; notify(); } } ******************************************************
  • 29. Semaphore class Semaphore { private int count; public Semaphore(int n) { this.count = n; } public synchronized void WAIT() { while(count == 0) { try { wait(); } catch (InterruptedException e) {//keep trying} } count--; } } public synchronized void SIGNAL() { count++;
  • 30. notify(); } } *********************************************************** import java.io.*; class Procesos1 { protected static final SemaforoBinario SA = new SemaforoBinario(0); protected static final SemaforoBinario SB = new SemaforoBinario(0); protected static final SemaforoBinario SC = new SemaforoBinario(0); protected static final SemaforoBinario SD = new SemaforoBinario(0); protected static final SemaforoBinario SE = new SemaforoBinario(0); protected static final SemaforoBinario SF = new SemaforoBinario(0); protected static final SemaforoBinario SG = new SemaforoBinario(0); protected static final SemaforoBinario mutex = new SemaforoBinario(1); public static void main(String args[]) throws IOException { try { Thread P1 = new Thread(new p1()); Thread P2 = new Thread(new p2()); Thread P3 = new Thread(new p3()); Thread P4 = new Thread(new p4());
  • 31. Thread P5 = new Thread(new p5()); Thread P6 = new Thread(new p6()); P1.start(); P2.start(); P3.start(); P4.start(); P5.start(); P6.start(); Thread.sleep(100); } catch (InterruptedException e) {} //System.out.println(" Termine..."); // System.exit(0); } } *********************************************************** Salida
  • 32. Conclusión Los programas mencionados anteriormente me ayudaron a comprender el concepto de semáforo y como se manejan en java. Ubique de mejor forma los errores obtenidos en el momento de la elaboración de los programas y pude implementar los 4 grafos ya sin problemas. Bibliografía http://www.cs.buap.mx/~mceron/principal_con.html