Anda di halaman 1dari 6

UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN | FACULTAD DE INGENIERA

ESCUELA ACADMICO PROFESIONAL DE INGENIERA EN INFORMTICA Y SISTEMAS


CURSO: ALGORITMOS PARALELOS
AO DE ESTUDIOS: SEGUNDO



Ing. Hugo Barraza Vizcarra / Ing. Ana Cori Moron 1/6
LABORATORIO N 03

ALGORITMOS NO EFICIENTES

1. OBJETIVO

Conocer el principio de exclusin mutua para procesos concurrentes.
Describir correctamente los intentos de solucin a los problemas de exclusin mutua.

2. FUNDAMENTO TERICO

EXCLUSIN MUTUA

La exclusin mutua necesita ser aplicada slo cuando un proceso accede a datos compartidos;
ejemplo, la lectura de archivos, cuando los procesos ejecutan operaciones que no estn en conflicto
entre s; debe permitrseles proceder de forma concurrente. La condicin de exclusin mutua debe
conservarse para recursos no compatibles. Por ejemplo varios procesos no pueden compartir una
impresora al mismo tiempo. Los recursos compatibles, por otra parte, no requieren acceso
mutuamente excluyente y por lo tanto no pueden participar en un bloqueo mutuo.

SECCIN CRTICA

Cuando un proceso est accediendo a datos compartidos se dice que el proceso se encuentra en
seccin crtica. Cuando un proceso est en su seccin crtica, todos los dems procesos (o al
menos aquellos que tengan acceso a los mismos datos compartidos) sern excluidos de sus propias
secciones crticas.

Mientras un proceso se encuentra en su seccin crtica, los dems procesos pueden continuar su
ejecucin fuera de sus secciones crticas, cuando un proceso abandona su seccin crtica, entonces
debe permitrseles proceder a otro proceso que espera entrar en su propia seccin crtica (s
hubiera un proceso en espera). Estar dentro de una seccin crtica es un estado muy especial
asignado a un proceso. El proceso tiene acceso exclusivo a los datos compartidos y todos los
dems procesos que necesitan acceder a esos datos permanecen en espera. En la figura 1 puede
verse cmo cuando dos procesos llegan a la seccin crtica, slo uno de ellos podr entrar teniendo
que esperar el otro. Puede verse tambin que una vez que un proceso ha salido de la seccin
crtica, el otro proceso puede entrar y de esta forma seguir ejecutndose los dos de manera
concurrente.



Figura 1. Izquierda: Solo se ejecuta P1. Derecha: Se ejecuta P2 cuando P1 termin su seccin crtica.

UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN | FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA EN INFORMTICA Y SISTEMAS
CURSO: ALGORITMOS PARALELOS
AO DE ESTUDIOS: SEGUNDO



Ing. Hugo Barraza Vizcarra / Ing. Ana Cori Moron 2/6
Por tanto las secciones crticas deben ser ejecutadas lo ms rpido posible, un programa no debe
bloquearse dentro de su seccin crtica, y las secciones crticas deben ser codificadas con todo
cuidado. Si un proceso dentro de una seccin crtica termina, tanto de forma voluntaria como
involuntaria, entonces al realizar su limpieza de terminacin, el S.O. debe liberar la exclusin mutua
para que otros procesos puedan entrar en sus secciones crticas. Proceso lineal: se ejecut el
proceso, termina y empieza otro.

3. PROCEDIMIENTO

EL PROBLEMA DE LA EXCLUSIN MUTUA

Sean dos procesos que comparten un recurso. El acceso a dicho recurso debe ser exclusivo. Es
decir, cuando un proceso lo est utilizando el otro proceso no puede acceder a l. Considere, por
ejemplo, que el recurso es un armario de cinta y que dos procesos, P1 y P2, intentan acceder
simultneamente a la cinta. De forma esquemtica el ciclo de vida de los procesos es:

(* P1 *)
REPEAT
Usa cinta;
Otras cosas;
FOREVER
(* P2 *)
REPEAT
Usa cinta;
Otras cosas;
FOREVER

Debemos arbitrar algn mecanismo para conseguir la exclusin mutua de los procesos respecto a la
cinta. En lo que sigue utilizaremos las aproximaciones de Ben-Ari (1982) para resolver el problema
de la exclusin mutua.

PRIMER INTENTO (ALTERNANCIA)

Imaginemos 2 esquimales y un agujero para pescar como recurso compartido. Existe un igl con un
pizarrn. Solo uno de los esquimales puede acceder a la vez al pizarrn a la vez. Cuando uno de los
esquimales quiere acceder al agujero para pescar debe consultar si tiene permiso para hacerlo en el
pizarrn, si en el pizarrn se indica que el permiso lo tiene el otro esquimal espera un tiempo y lo
vuelve a probar de nuevo ms tarde. Si en el pizarrn se indica que tiene permiso, ir a pescar. Una
vez que termine con el agujero, ir al pizarrn y ceder el permiso al otro esquimal.


Figura 2. Representacin del primer intento con el ejemplo de los esquimales
De manera ms formal el pseudocdigo es:

process P
1
repeat
while turno=2 do;
Seccin Crtica
1
;
turno:=2;
Resto
1

forever
process P
2
repeat
while turno=1 do;
Seccin Crtica
2
;
turno:=1;
Resto
2

forever

El cdigo fuente del PrimerIntento en PascalFC sera el siguiente:
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN | FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA EN INFORMTICA Y SISTEMAS
CURSO: ALGORITMOS PARALELOS
AO DE ESTUDIOS: SEGUNDO



Ing. Hugo Barraza Vizcarra / Ing. Ana Cori Moron 3/6
program PrimerIntento;
var turno: integer;

Process P1;
begin
repeat
while turno=2 do
null; (* pasea *)
writeln('Esquimal 1 Pescando...'); (*Usa agujero de pesca *)
turno:=2;
forever
end;

Process P2;
begin
repeat
while turno=1 do
null; (* pasea *)
writeln('Esquimal 2 Pescando...'); (* Usa agujero de pesca *)
turno:=1;
forever
end;

begin
turno:=1;
cobegin
P1;
P2;
coend;
end.

El inconveniente de este algoritmo es la alternancia obligada en el uso del recurso, si uno de los
procesos es cancelado mientras usa el recurso nunca podr ceder su uso de nuevo.

SEGUNDO INTENTO (FALTA DE EXCLUSIN)

Siguiendo con el paradigma anterior, haremos uso de dos igles con su correspondiente pizarrn.
Los pizarrones tienen dos indicadores, pescando (true) o no pescando (fase), cada uno de los
pizarrones corresponden a cada uno de los esquimales. Si queremos hacer uso del agujero para
pescar deberemos consultar en el pizarrn del otro esquimal, si indica que est pescando saldremos
y esperaremos para volverlo a intentar ms tarde. Si en el pizarrn pone no pescando (false) iremos
a nuestro pizarrn y pondremos pescando (true). Cuando terminemos de usar el agujero de pescar
iremos a nuestro pizarrn y pondremos no pescando (false).



Figura 3. Representacin del segundo intento con el ejemplo de los esquimales
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN | FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA EN INFORMTICA Y SISTEMAS
CURSO: ALGORITMOS PARALELOS
AO DE ESTUDIOS: SEGUNDO



Ing. Hugo Barraza Vizcarra / Ing. Ana Cori Moron 4/6

De manera ms formal podramos codificar el algoritmo como:

process P
1
repeat
a) while C
2
=true do;
b) C
1
=true;
c) Seccin Crtica
1
;
d) C
1
:=false;
Resto
1

forever
process P
2
repeat
a) while C
1
=true do;
b) C
2
=true;
c) Seccin Crtica
2
;
d) C
2
:=false;
Resto
2

forever

El cdigo fuente del SegundoIntento en PascalFC sera el siguiente:

program SegundoIntento;
var pizarra1, pizarra2: boolean;

Process P1;
begin
repeat
while pizarra2=true do
null; (* pasea *)
pizarra1:=true; (* Usa agujero de pesca *)
writeln('Esquimal 1 Pescando...');
pizarra1:=false;
forever
end;

Process P2;
begin
repeat
while pizarra1=true do
null; (* pasea *)
pizarra2:=true; (* Usa agujero de pesca *)
writeln('Esquimal 2 Pescando...');
pizarra2:=false;
forever
end;

begin
pizarra1:=true;
pizarra2:=false;
cobegin
P1;
P2;
coend;
end.

Este algoritmo puede generar falta de exclusin mutua si los dos procesos tienen libre el recurso, a
la vez consultan el estado de los oponentes y al comprobar que est libre los dos indican estado de
uso del recurso y lo usan.

TERCER INTENTO (INTERBLOQUEO O ESPERA INFINITA)

En el algoritmo anterior, la falta de exclusin mutua surge porque un proceso (P
1
), toma una
decisin relacionada con el estado del otro proceso (P
2
) antes que ste tenga la oportunidad de
cambiar el estado de su variable. Para esto actuaremos a la inversa para tratar de evitar la falta de
exclusin mutua, cuando un proceso quiera utilizar el recurso, primero indica que quiere hacerlo y
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN | FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA EN INFORMTICA Y SISTEMAS
CURSO: ALGORITMOS PARALELOS
AO DE ESTUDIOS: SEGUNDO



Ing. Hugo Barraza Vizcarra / Ing. Ana Cori Moron 5/6
luego espera a que est libre. De manera ms formal podramos codificar el algoritmo como:

process P
1
repeat
C
1
:=quierepescar;
while C
2
=quiereentrar do;
Seccin Crtica
1
;
C
1
:=nopescando;
Resto
1

forever
process P
2
repeat
C
2
:=quierepescar;
while C
1
=quiereentrar do;
Seccin Crtica
2
;
C
2
:=nopescando;
Resto
2

forever

En el caso que los dos esquimales estn sin pescar (nopescado) y los dos pretendan acceder al
agujero al mismo instante, los dos activarn en su pizarrn el estado de intencin de pescar
(quierepescar), al ir a consultar la pizarra del oponente comprobarn que est pescando (o en
intencin de hacerlo), en este caso ninguno de los dos esquimales podr acceder al recurso ni
podr cambiar su estado. Hemos llegado a un estado de exclusin mutua (los dos procesos quieren
acceder al mismo recurso, pero para que este les sea concedido los dos procesos deben realizar
una accin que depende mutuamente de la accin del oponente para poderse realizar).

CUARTO INTENTO (ESPERA INDEFINIDA)

Para solucionar el problema anterior aadiremos el trato de cortesa, si un proceso ve que su
oponente quiere hacer uso del recurso, se lo cede. De manera ms formal podramos codificar el
algoritmo como:

process P
1
repeat
C
1
:=quierepescar;
while C
2
=quierepescar do
begin
C
1
:=nopescando;
(*hacer algo durante unos
momentos*)
C
1
:=quierepescar;
end;
Seccin Crtica
1
;
C
1
:=nopescando;
Resto
1

forever
process P
2
repeat
C
2
:=quierepescar;
while C
1
=quierepescar do
begin
C
2
:=nopescando;
(*hacer algo durante unos
momentos*)
C
2
:=quierepescar;
end;
Seccin Crtica
2
;
C
2
:=nopescando;
Resto
2

forever

Este tratamiento de cortesa puede conducir a que los procesos se queden de manera indefinida
cedindose mutuamente el paso. Esta solucin no asegura que se acceda al recurso en un tiempo
finito.

4. ACTIVIDADES

a) Programe los cuatro intentos en Pascal FC, adecue las instrucciones necesarias para que el
programa se ejecute. Copie el cdigo fuente de Pascal FC de cada intento y pegue las
capturas de los resultados de cada programa.
b) Resuman en un cuadro comparativo las ventajas y desventajas de cada uno de los cuatro
intentos.
c) Investigue de que se trata el Algoritmo de Dekker y qu relacin tiene con los intentos de
solucin mencionados en la presente prctica.

5. INDICACIONES

Para la elaboracin de su informe de laboratorio, tome en cuenta las siguientes indicaciones:
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN | FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA EN INFORMTICA Y SISTEMAS
CURSO: ALGORITMOS PARALELOS
AO DE ESTUDIOS: SEGUNDO



Ing. Hugo Barraza Vizcarra / Ing. Ana Cori Moron 6/6
a. El informe se presenta de manera individual y se debe subir antes de la fecha y hora indicada al
ambiente virtual.
b. Se sugiere que use el siguiente esquema:
Cartula.
Objetivos.
Fundamento terico.
Procedimiento y desarrollo.
Conclusiones.
Referencias bibliogrficas.
c. En su cartula, considere como mnimo los siguientes puntos:
Como cabecera: Nombre de la Universidad / Facultad / Escuela.
Nmero y nombre del informe de laboratorio.
Nombre del curso / Nombre de los docentes.
Nombre del estudiante / Cdigo universitario.
Ao / Seccin / Horario.
Fecha de elaboracin. (Da que se realiz el laboratorio)
Fecha de entrega del informe. (Da que debe presentar el informe)
d. Use como mnimo 2 referencias bibliogrficas y ctelas en su fundamento terico. Debe usar el
estilo APA para citar material bibliogrfico.
e. Las conclusiones, la cantidad conclusiones y recomendaciones debe ser la misma que la
cantidad de objetivos y estas deben estar estrechamente relacionadas entre ellas.