solucion de Peterson
Facultad Experimental de Ciencias y Tecnología
Departamento de Computación
Sistemas Operativos
Prep. Carlos I. Buchart I.
Nombre:___________________________________
Sincronizacion de Procesos en Java y C
(Aproximaciones de Dekker y solucion de Peterson)
Si bien el lenguaje Java no esta diseñado para la construccion de sistemas operativos, destaca por la variedad de servicios que ofrece al desarrollador. Entre dichos servicios destacan la implementacion de hilos y el modificador de variables synchronized. La implementacion de hilos se realiza mediante la herencia de la clase Thread. Esta nueva clase debe implementar el metodo run que sera el encargado de ejecutar el codigo del hilo. Un hilo entra al …ver más…
Buchart I. - CIBI3D
*/
public class Hilo extends Thread { private String name; private int m_iId; private ModeloExclusion m_oExc; public Hilo(String sName, int iId, ModeloExclusion oExc) { name = sName; m_iId = iId; m_oExc = oExc;
}
public void run() { while (true) {
System.out.println(name + "desea entrar a la SC"); m_oExc.entrarSC(m_iId); System.out.println(name + "entro a la SC");
ModeloExclusion.SC();
m_oExc.salirSC(m_iId);
System.out.println(name + "salio de la SC");
ModeloExclusion.noSC();
}
}
}
/** -ModeloExclusion
* @author Carlos I. Buchart I. - CIBI3D
*/
public abstract class ModeloExclusion { public static final int TURN_0 = 0; public static final int TURN_1 = 1; public static final int TIME = 2000; public static void SC() { try {
Thread.sleep((int) (Math.random() * TIME + 1000));
} catch (InterruptedException e) {}