You are on page 1of 3

ALGORITMO DE PETERSON

Una solucin posible es la proporcionada por Peterson (1981). En esta solucin se introduce una
variable adicional, que denominaremos turno, que solamente resultar til cuando se produca un
problema de peticin simultnea de acceso a la re!in cr"tica.
(# E$clusin %utua&'olucin de Peterson#)
moduleE$clusion(%utua(P)
var *la!1,*la!+& boolean)
turno& inte!er)
procedure bloqueo(var mi(*la!, su(*la!& boolean) su(turno&inte!er))
begin
mi(*la! &, true)
turno &, su(turno)
while su(*la! and (turno , su(turno) do ) end
end bloqueo)
procedure desbloqueo(var mi(*la!& boolean))
be!in mi(*la! &, *alse)
end desbloqueo)
process P1
be!in
loop
bloqueo(*la!1,*la!+,+))
(# Uso del recurso 'eccin -r"tica #)
desbloqueo(*la!1))
(# resto del proceso #)
end
end P1)
process P+
begin
loop
bloqueo(*la!+,*la!1,1))
(# Uso del recurso 'eccin -r"tica #)
desbloqueo(*la!+))
(# resto del proceso #)
end
end P+)
begin (# E$clusion(%utua(P#)
*la!1 &, ./0'E)
*la!+ &, ./0'E)
cobegin
P1)
P+)
coend
end E$clusion(%utua(P.
'i slo uno de los procesos intenta acceder a la seccin cr"tica lo podr 1acer sin nin!n problema.
'in embar!o, si ambos intentan entrar a la ve el valor de turno se pondr a 1 2 + pero slo un valor
de ellos permanecer al escribirse sobre el otro, permitiendo el acceso de un proceso a su re!in
cr"tica.
El al!oritmo permite resolver el problema de la e$clusin mutua 2 !arantia que ambos procesos
usarn de *orma consecutiva el recurso en el caso de que lo soliciten a la ve 2 se impedir el cierre
del otro proceso. 'i, por e3emplo, P1 1a entrado en su seccin cr"tica bloqueando el acceso de P+
4ste entrar una ve 1a2a *inaliado aqu4l, 2a que cuando P1 sale de su re!in cr"tica desactiva su
indicador, permitiendo el acceso de P+) si una ve que P1 sale de su seccin cr"tica P+ no est en
e3ecucin, P1 deber permanecer en espera 1asta que P+ 1a2a entrado 2 1a2a desactivado su
indicador. 5e esta manera se evita que P+ pueda quedar rele!ado por P1 en el uso del recurso, es
decir ambos !oan de la misma prioridad en el uso del recurso.
ALGORITMO DE DEKKER
0a solucin al problema de la e$clusin mutua que si!ue se atribu2e al matemtico 1oland4s 6.
5e77er, 2 *ue presentada por 5i37stra en 1988. 'e utilia, al i!ual que en la solucin de Peterson,
una variable turno. /1ora la variable sirve para establecer la prioridad relativa de los dos procesos 2
su actualiacin se realia en la seccin cr"tica, lo que evita que pueda 1aber inter*erencias entre los
procesos.
(# E$clusin %utua&'olucin de 5e77er#)
moduleE$clusion(%utua(5)
var*la!1,*la!+& boolean)
turno& inte!er)
procedure bloqueo(var mi(*la!, su(*la!& boolean) su(turno& inte!er))
be!in
mi(*la! &, true)
while su(*la! do (# otro proceso en la seccin cr"tica #)
if turno , su(turno then
mi(*la! &, *alse)
while turno ,su(turno do
) (# espera a que el otro acabe #)
end)
mi(*la! &, true)
end)
end)
end bloqueo)
procedure desbloqueo (var mi(*la!& boolean) su(turno& inte!er))
begin
turno &, su(turno)
mi(*la! &, *alse
end desbloqueo)
process P1
begin
loop
bloqueo(*la!1,*la!+,+))
(# Uso del recurso 'eccin -r"tica #)
desbloqueo(*la!1))
(# resto del proceso #)
end
end P1)
process P+
begin
loop
bloqueo(*la!+,*la!1,1))
(# Uso del recurso 'eccin -r"tica #)
desbloqueo(*la!+))
(# resto del proceso #)
end
end P+)
begin (# E$clusion(%utua(P#)
*la!1 &, ./0'E)
*la!+ &, ./0'E)
turno &, 1)
cobegin
P1)
P+)
coend
end E$clusion(%utua(5.
El pro!rama se inicia con el valor de turno i!ual a 1 lo que da prioridad al proceso P1. 'i ambos
procesos piden a la ve el acceso a su seccin cr"tica, ponen en activo sus respectivos indicadores 2
comprueban si el indicador del otro est activado. /mbos encuentran que s", por lo que pasan a
evaluar el turno. El se!undo se encuentra con que no es su turno, desactiva su indicador 2 se queda
en espera de que lo sea. P1 comprueba que s" es su turno 2 pasa a valorar el estado del indicador de
P+, entrar en su seccin cr"tica 2 dar el turno a P+ antes de desactivar su indicador. Esto permite
que el proceso P+ !ane el acceso a su seccin cr"tica aunque el proceso P1 1a!a una nueva solicitud
de entrar a la re!in cr"tica inmediatamente despu4s de desactivar su indicador.
0os al!oritmos de Peterson 2 5e77er se pueden e$tender, aunque no de manera sencilla, al caso
ms !eneral en el que 1a2a n procesos en e3ecucin concurrente) pero no son soluciones adecuadas
2a que la espera de acceso a un recurso siempre se realia de *orma 9ocupada:. El proceso se queda
permanentemente comprobando una variable, lo que puede suponer un derroc1e de los recursos del
sistema. 'i, por e3emplo, se dispone de un nico procesador, 4ste tendr que ocupar parte de su
tiempo en la comprobacin reiterada de una variable.

You might also like