Está en la página 1de 2

package dekker2; public class Algorithm_Dekker2 extends MutualExclusion { private volatile int turn; private volatile boolean []flag=

new boolean [2]; public Algorithm_Dekker2() { flag[0]=false; flag[1]=false; turn=TURN_0; } public void LeavingCrititcalSection(int t) { flag[t]=false; } public void enteringCriticalSection(int t) { int other; other=1-t; flag[t]=true; turn=other; while((flag[other]== true)&& (turn==other)) Thread.yield(); } } Explicacin: Sistemas Operativos I Cada hilo comparte 2 variables flag y turn. Al iniciar cada flag comienza en false, y el turno puede ser 0 o 1. para entrar en su seccin crtica cada hilo fija el valor de su flag en true y el turno decide cul de los hilos entra a su seccin crtica.

Algoritmo de Peterson: Al igual que Dekker, este algoritmo desarroll una solucin simple y elegante. La variable global Seal indica la posicin de cada proceso con respecto a la exclusin, y la variable global Turno resuelve los conflictos de simultaneidad. Exclusin mutua: si un hilo T1 se est ejecutando en su seccin crtica, ningn otro hilo puede estar en la misma ejecucin. Exclusin Mutua Hay varias formas de satisfacer los requisitos de exclusin mutua: 9 Sistemas Operativos,Silverschats Galvin-Gagne,Limusa Wiley Sistemas Operativos I Por Software: Estas soluciones suponen que existe una exclusin mutua elemental en los accesos simultneos a la misma posicin de memoria. Existe: El algoritmo de Dekker: Controla la restriccin de que solo se puede realizar un acceso a una posicin de memoria en cada instante. Teniendo en cuenta esta restriccin se reserva una posicin de memoria global llamada turno, un proceso P0 o P1 primero examina el contenido de turno, si el valor de turno es igual al nmero del proceso, el proceso puede continuar con su seccin crtica. En otro caso, el proceso se ve obligado a esperar. El proceso en espera lee repetitivamente el valor del turno, hasta que puede entrar en su seccin crtica, este procedimiento se denomina espera activa, porque un proceso frustrado no puede hacer nada productivo mientras obtiene permiso, para entrar en su seccin crtica. Cuando un proceso termina el acceso a su seccin crtica, debe actualizar el valor del turno para el otro proceso.

También podría gustarte