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.