Sie sind auf Seite 1von 3

ALGORITMO DE DEKKER Y PETERSON

I. ALGORITMO DE DEKKER Y PETERSON


La solucin al problema de la exclusin mutua se atribuye
al matemtico holands T. Dekker y fue presentada por
Dijkstra en 19!. "e utili#a al i$ual %ue en otro al$oritmo
llamado &l$oritmo de 'eterson( una )ariable turno %ue
sir)e para establecer la prioridad relati)a de los dos
procesos( es decir( en caso de conflicto sta )ariable
ser)ir para saber( a %uien se le concede el recurso y su
actuali#acin se reali#a en la re$in cr*tica( lo %ue e)ita
%ue pueda haber interferencias entre los procesos.
+xplicaremos la utilidad de este al$oritmo mediante un
problema,
1.1 EL PROBLEMA DE LOS ESQUIMALES
-ntentaremos una manera de implementar el blo%ueo a
una re$in cr*tica mediante el uso de una )ariable
compartida en el problema denominado .de los
es%uimales/. -remos refinando el al$oritmo de manera %ue
cada )ersin de dicho refinamiento presente el tipo de
problemas %ue suele sur$ir en la implementacin de la
concurrencia entre procesos. +l problema de los
es%uimales mostrar el uso de las )ariables compartidas
para implementar la exclusin mutua entre dos procesos.
La ejecucin concurrente de los procesos la indicaremos
mediante la estructura cobe$in0coend. La palabra cobe$in
indica el comien#o de la ejecucin concurrente de los
procesos %ue se se1alan hasta la palabra coend. La
accin de blo%ueo se reali#a con la acti)acin de la
)ariable com2n 3indicador4 y la de desblo%ueo con su
desacti)acin.
1.5. Primer Intento: ALTERNANCIA
-ma$inemos 5 es%uimales y un a$ujero para pescar como
recurso compartido. +xiste un i$l2 con un pi#arrn. "olo
uno de los es%uimales puede acceder a la )e# al pi#arrn
a la )e#. 6uando uno de los es%uimales %uiere acceder al
a$ujero para pescar debe consultar si tiene permiso para
hacerlo en el pi#arrn( si en el pi#arrn se indica %ue el
permiso lo tiene el otro es%uimal espera un tiempo y lo
)uel)e a probar de nue)o ms tarde. "i en el pi#arrn se
indica %ue tiene permiso( ir a pescar. 7na )e# %ue
termine con el a$ujero( ir al pi#arrn y ceder el permiso
al otro es%uimal. De manera ms formal la codificacin del
al$oritmo es,
PROGRAM PrimerIntento;
VAR turno [1..2];
PROCEDURE P1;
BEGIN
REPEAT
WHILE turno = 2 DO ; (* pasea *)
****** usa aguero !e pes"a ******
turno #= 2;
otras cosas
FOREVER
END;
PROCEDURE P2;
BEGIN
REPEAT
WHILE turno = $ DO ; (* pasea *)
****** usa aguero !e pes"a ******
turno #= $;
otras cosas
FOREVER
END;
BEGIN
turno : 1
COBEGIN
P1; P2
COEND
END
+l incon)eniente de este al$oritmo es la alternancia
obli$ada en el uso del recurso( si uno de los procesos es
cancelado mientras usa el recurso nunca podr ceder su
uso de nue)o.
1.3. Se!n"o Intento: #ALTA DE E$CLUSION
"i$uiendo con el paradi$ma anterior( haremos uso de dos
i$l2es con su correspondiente pi#arrn. Los pi#arrones
tienen dos indicadores( pescando o 89pescando( cada
uno de los pi#arrones corresponden a cada uno de los
es%uimales. "i %ueremos hacer uso del a$ujero para
pescar deberemos consultar en el pi#arrn del otro
es%uimal( si indica %ue est pescando saldremos y
esperaremos para )ol)erlo a intentar ms tarde. "i en el
pi#arrn pone 89pescando iremos a nuestro pi#arrn y
pondremos pescando. 6uando terminemos de usar el
a$ujero de pescar iremos a nuestro pi#arrn y pondremos
89pescando. De manera ms formal podr*amos codificar
el al$oritmo como,
PROGRAM %egun!oIntento;
VAR !"#arra1$ !"#arra2: %!&scan'o
NO!&scan'o(;
PROCEDURE P1;
BEGIN
REPEAT
)*I+E !"#arra2 !&scan'o DO; %,
!as&a ,(
!"#arra1 : !&scan'o;
,,, usa a-u.&ro '& !&sca ,,,
!"#arra1 : NO!&scan'o;
otras cosas
FOREVER
END;
PROCEDURE P2;
BEGIN
REPEAT
)*I+E !"#arra1 !&scan'o DO; %,
!as&a ,(
!"#arra2 : !&scan'o;
,,, usa a-u.&ro '& !&sca ,,,
!"#arra2 : NO!&scan'o;
otras cosas
FOREVER
END;
BEGIN
!"#arra1 : NO!&scan'o;
!"#arra2 : NO!&scan'o;
COBEGIN
P1; P2
COEND
END.
+ste al$oritmo puede $enerar falta de exclusin mutua si
los dos procesos tienen libre el recurso( a la )e# consultan
el estado de los oponentes y al comprobar %ue est libre
los dos indican estado de uso del recurso y lo usan.
1.%. Ter&er Intento: INTERBLOQUEO 'E()er* In+init*,
&hora actuaremos a la in)ersa para tratar de e)itar la falta
de exclusin mutua( cuando un proceso %uiera utili#ar el
recurso( primero indica %ue %uiere hacerlo y lue$o espera
a %ue est libre. De manera ms formal podr*amos
codificar el al$oritmo como,
PROGRA/ T&rc&rInt&nto;
VAR !"#arra1$ !"#arra2: %!&scan'o
NO!&scan'o(;
PROCEDURE P1;
BEGIN
REPEAT
!"#arra1 : !&scan'o;
)*I+E !"#arra2 !&scan'o DO; %,
!as&a ,(
,,, usa &0 a-u.&ro '& !&sca ,,,
!"#arra1 : NO!&scan'o;
otras cosas
FOREVER
END;
PROCEDURE P2;
BEGIN
REPEAT
!"#arra2 : !&scan'o;
)*I+E !"#arra1 !&scan'o DO; %,
!as&a ,(
,,, usa &0 a-u.&ro '& !&sca ,,,
!"#arra2 : NO!&scan'o;
otras cosas
FOREVER
END;
BEGIN
!"#arra1 : NO!&scan'o;
!"#arra2 : NO!&scan'o;
COBEGIN
P1; P2
COEND
END.
+n el caso %ue los dos es%uimales estn sin pescar
389pescando4 y los dos pretendan acceder al a$ujero al
mismo instante( los dos acti)arn en su pi#arrn el estado
de intencin de pescar 3pescando4( al ir a consultar la
pi#arra del oponente comprobarn %ue est pescando 3o
en intencin de hacerlo4( en este caso nin$uno de los dos
es%uimales podr acceder al recurso ni podr cambiar su
estado. :emos lle$ado a un estado de exclusin mutua
3los dos procesos %uieren acceder al mismo recurso( pero
para %ue este les sea concedido los dos procesos deben
reali#ar una accin %ue depende mutuamente de la accin
del oponente para poderse reali#ar4.
1.-. C!*rto Intento: ESPERA IN#INITA
'ara solucionar el problema anterior a1adiremos el trato
de cortes*a( si un proceso )e %ue su oponente %uiere
hacer uso del recurso( se lo cede. De manera ms formal
podr*amos codificar el al$oritmo como,
VAR !"#arra1$ !"#arra2: %!&scan'o$
NO!&scan'o(;
PROCEDURE P1;
BEGIN
REPEAT
!"#arra1 : !&scan'o;
)*I+E !"#arra2 !&scan'o DO
BEGIN
%, trata1"&nto '& cort&s2a ,(
!"#arra1 : NO!&scan'o;
%, 'at& una 3u&0ta ,(
!"#arra1 : !&scan'o
END;
,,, usa &0 a-u.&ro '& !&sca ,,,
!"#arra1 : NO!&scan'o;
otras cosas
FOREVER
END;
PROCEDURE P2;
BEGIN
REPEAT
!"#arra2 : !&scan'o;
)*I+E !"#arra1 !&scan'o DO
BEGIN
%, trata1"&nto '& cort&s2a ,(
!"#arra2 : NO!&scan'o;
%, 'at& una 3u&0ta ,(
!"#arra2 : !&scan'o
END;
,,, usa &0 a-u.&ro '& !&sca ,,,
!"#arra2 : NO!&scan'o;
otras cosas
FOREVER
END;

BEGIN
!"#arra1 : NO!&scan'o;
!"#arra2 : NO!&scan'o;
COBEGIN
P1; P2
COEND
END.
+ste tratamiento de cortes*a puede conducir a %ue los
procesos se %ueden de manera indefinida cedindose
mutuamente el paso. +sta solucin no ase$ura %ue se
acceda al recurso en un tiempo finito.
1. Q!into Intento: ALGORITMO DE DEKKER
De manera formal la codificacin del al$oritmo es,
PROGRAMA A&goritmoDeDe''er;
VAR !"#arra1$ !"#arra1: %!&scan'o$
NO!&scan'o(;
Turno:[1..2];
PROCEDURE P1;
BEGIN
REPEAT
!"#arra1 : !&scan'o
)*I+E !"#arra2 !&scan'o DO
IF turno 2 T*EN
BEGIN
%, trata1"&nto '& cort&s2a ,(
!"#arra1 : NO!&scan'o;
)*I+E turno 2 DO; %, 'at& una
3u&0ta ,(
!"#arra1 : !&scan'o
END
,,, usa &0 a-u.&ro '& !&sca ,,,
turno : 2;
!"#arra1 : NO!&scan'o;
otras cosas
FOREVER
END;
PROCEDURE P2;
BEGIN
REPEAT
!"#arra2 : !&scan'o
)*I+E !"#arra1 !&scan'o DO
IF turno 1 T*EN
BEGIN
%, trata1"&nto '& cort&s2a ,(
!"#arra2 : NO!&scan'o;
)*I+E turno 1 DO; %, 'at& una
3u&0ta ,(
P"#arra2 : !&scan'o
END
,,, usa &0 a-u.&ro '& !&sca ,,,
turno : 1;
!"#arra2 : NO!&scan'o;
otras cosas
FOREVER
END;

BEGIN
!"#arra1 : NO!&scan'o;
!"#arra2 : NO!&scan'o;
turno : 1;
COBEGIN
P1; P2
COEND
END.
Este algoritmo asegura la exclusin mutua y est libre
de interbloqueos.

Das könnte Ihnen auch gefallen