Está en la página 1de 26

EXCLUSIN MUTUA:

SOLUCIONES POR SOFTWARE


Asignatura: Sistemas Operativos
SOLUCIONES POR
SOFTWARE
Pueden implementarse soluciones de software
para los procesos concurrentes que ejecuten en
mquinas monoprocesador o multiprocesador con
una memoria principal compartida. Normalmente,
estas soluciones suponen que existe una
exclusin mutua elemental en el acceso a
memoria.
Algoritmo Dekker
Dijkstra present un algoritmo de exclusin mutua
para dos procesos que dise el matemtico
holands Dekker.
Segn Dijkstra, la solucin se desarrolla por etapas.
Este mtodo tiene la ventaja de ilustrar la mayora
de los errores habituales que se producen en la
construccin de programas concurrentes.
Primer Intento
Cualquier intento de exclusin mutua debe
depender de algunos mecanismos bsicos de
exclusin en el hardware.
El ms habitual es la restriccin de que solo se
puede realizar un acceso a una posicin memoria
en cada instante.
Primer Intento: Protocolo
del Iglu
Tanto la entrada como
el mismo igl son tan
pequeos que solo
puede entrar una
persona a la vez en el
igl. Dentro, hay una
pizarra en la que se
puede escribir un nico
valor.

Descripcin del
Protocolo
Un proceso (P0 P1) que desee ejecutar su seccin
crtica entra primero en el igl y examina la pizarra.
Si su nmero est escrito en ella, el proceso puede
abandonar el igl y continuar con su seccin critica.
En otro caso, abandona el igl y se ve obligado a
esperar.
De vez en cuando, el proceso vuelve a entrar en el igl
para mirar la pizarra. Esta operacin la repite hasta que
se le permite entrar en su seccin crtica.
Este procedimiento se denomina espera activa porque
un proceso frustrado no puede hacer nada productivo
hasta que obtiene permiso para entrar en su seccin
crtica.
Los programas quedaran
as:
Inconvenientes en esta
solucin
Los procesos deben
alternarse de forma
estricta en el uso de sus
secciones crticas; as
pues, el ritmo de
ejecucin viene dictado
por el ms lento.
Si P0 usa su seccin
crtica solo una vez por
hora, pero P1 quiere
usarla con una tasa de
1000 veces por hora, P1
est obligado a adoptar
el ritmo de P0.

Inconvenientes en esta
solucin


2. Un problema mucho
ms serio es que si un
proceso falla (por
ejemplo, se lo come un
oso polar en su camino
hacia el igl), el otro
proceso se bloquea
permanentemente. Esto
es cierto tanto si un
proceso falla en su
seccin critica como
fuera de ella.

Segundo Intento
En realidad, cada
proceso debera tener su
propia llave de la seccin
crtica para que, si un oso
polar elimina a uno de
ellos, el otro pueda seguir
accediendo a su seccin
crtica.
Segundo Intento: Protocolo
del Iglu
Cada proceso tiene ahora su propio igl y puede mirar la
pizarra del otro, pero no modificarla.
Cuando un proceso desea entrar en su seccin critica,
comprueba peridicamente la pizarra del otro hasta que
encuentra escrito en ella falso, lo que indica que el otro
proceso no est en su seccin crtica.
Entonces, se dirige rpidamente hacia su propio igl, entra y
escribe cierto en la pizarra. El proceso puede ahora
continuar con su seccin crtica. Cuando deja su seccin
crtica, cambia su pizarra para que ponga falso.
Los programas quedaran
as:
Anlisis del Caso
Si uno de los procesos falla fuera de la seccin crtica,
incluyendo el cdigo para dar valor a las seales, el otro
proceso no se queda bloqueado.
El otro proceso puede entrar en su seccin crtica tantas
veces como quiera, porque la seal del otro proceso
est siempre puesta a falso.
Sin embargo, si un proceso falla en su seccin crtica, el
otro proceso est bloqueado permanentemente.
Anlisis de la Secuencia
P0 ejecuta la sentencia while y encuentra seal [1]
a falso.
P1 ejecuta la sentencia while y encuentra seal [0]
a falso.
P0 pone seal [0] a cierto y entra en su seccin
crtica.
P1 pone seal [1] a cierto y entra en su seccin
crtica.
Tercer Intento: Realizando
un cambio al cdigo
Anlisis del Caso
Una vez que P0 ha puesto seal a cierto, P1 no
puede entrar a su seccin critica hasta que P0
haya entrado y abandonado la suya.
Puede ser que P1 est todava en su seccin crtica
cuando P0 activa su seal.
En ese caso, P0 se bloquear en la sentencia while
hasta que P1 deje su seccin critica. El mismo
razonamiento es aplicable desde el punto de vista
de P1.
Problema que se
genera
Se garantiza la
Exclusin Mutua, pero si
ambos procesos ponen
sus seales a cierto
antes de que ambos
hayan ejecutado la
sentencia while, cada
uno pensar que el
otro ha entrado en su
seccin critica.
El resultado es un
interbloqueo.
Cuarto Intento
En el tercer intento, un proceso fijaba su estado sin
conocer el estado del otro.
Se puede intentar arreglar esto haciendo que los
procesos sean ms educados: Deben activar su
seal para indicar que desean entrar en la seccin
crtica, pero deben estar listos para desactivar la
seal y ceder la preferencia al otro proceso:
Cuarto Intento: Cdigo
Anlisis de la Secuencia
P0 pone seal [0] a cierto.
P1 pone seal [1] a cierto.
P0 comprueba seal [1].
P1 comprueba seal [0]
P0 pone seal [0] a falso
P1 pone seal [1] a falso
P0 pone seal [0] a cierto
P1 pone seal [1] a cierto
Solucin Correcta
De algn modo, se hace
necesario imponer algn
orden en la actividad de los
dos procesos para evitar el
problema de cortesa
mutua que se acaba de
observar.
La variable turno del primer
intento puede usarse en
esta labor; en este caso, la
variable indica qu proceso
tiene prioridad para exigir la
entrada a la seccin critica.
Anlisis Paso a Paso
Ahora hay un igl rbitro con una pizarra llamada tumo.
Cuando P0 quiere entrar en su seccin critica, pone su seal a
cierto. A continuacin, va y mira la seal de P1.
Si est puesta a falso, P0 puede entrar inmediatamente en su
seccin crtica. En otro caso, P0 va a consultar al rbitro.
Si encuentra el turno = 0, sabe que es momento de insistir y
comprueba peridicamente el igl de P1. Este otro se percatar
en algn momento de que es momento de ceder y escribir
falso en su pizarra, permitiendo continuar a P0.
Despus de que P0 haya ejecutado su seccin crtica, pone su
seal a falso para liberar la seccin crtica y pone turno a 1
para traspasar el derecho de insistir a P1.
Algoritmo Dekker
Algoritmo Peterson: Sln
Simple y Elegante.
Considrese el proceso P0.
Una vez que ha puesto seal [0] a cierto
P1 no puede entrar en su seccin critica.
Si P1 est an en su seccin critica, seal [1] =
cierto y P0 est bloqueado para entrar en su
seccin crtica.
Algoritmo Peterson
MUCHAS GRACIAS

También podría gustarte