Universidad Nacional Jorge Basadre Grohomann FAIN-ESIS
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN
UNIVERSIDAD: JORGE BASADRE GROHMANN
FACULTAD : INGENIERA
ESCUELA : ACADMICO PROFESIONAL DE INGENIERA EN INFORMTICA Y SISTEMAS
CURSO : ALGORITMOS PARALELOS
AO : SEGUNDO A
TEMA : ALGORITMOS DEKKER Y PETERSON
N : 04
DOCENTES : ING.HUGO BARRAZA VIZCARRA / ING. ANA CORI MORN
ALUMNO : JIMENEZ FLORES, VICTOR JUAN
CODIGO : 2012-39098
TURNO : MAANA
HORA : 7:00 am -9:00 am
TACNA PERU 2014
Universidad Nacional Jorge Basadre Grohomann FAIN-ESIS Informe de Laboratorio N4 I) OBJ ETIVOS
Conocer el funcionamiento de los algoritmos de Dekker y Perterson. Analizar la forma en que los algoritmos de Dekker y Peterson superan el problema de exclusin mutua. Resolver un problema real, utilizando el algoritmo de Dekker y Peterson.
II) FUNDAMENTO TERICO Un problema inherente a la programacin concurrente es la exclusin mutua y su solucin, por tanto, se fueron dando versiones que poco a poco fueron pulindose hasta pasar de simples intentos a solucionar la exclusin mutua para 2 procesos y luego para n procesos. As, a continuacin se muestran algoritmos que satisfacen la solucin a dicho problema. Algoritmo de Dekker El problema de exclusin mutua entre 2 procesos, fue estudiado por Dijkstra a principios de los aos 60 y estableci las condiciones de cualquier solucin satisfactoria al problema. En 1965 Dijkstra present un algoritmo de exclusin mutua para los procesos que dise el matemtico holands Dekker al que denomin algoritmo de Dekker. (Palma Mendez, 2002) En realidad, hubo 4 intentos antes de llegar al algoritmo original, los cuales son detallados a continuacin: Intento 1: Garantiza la exclusin mutua, pero su diseo hace que exista una sincronizacin forzada, lo que hace que los procesos lentos atrasen a los rpidos. Intento 2: Existe una falta de exclusin y no se da una alternancia, lo que puede generar un bucle infinito. Intento 3: Se da un interbloqueo, adems no se garantiza la exclusin mutua. Universidad Nacional Jorge Basadre Grohomann FAIN-ESIS Intento 4: Se puede dar el caso de que los procesos esperen un evento que no suceder. Algoritmo de Peterson Combinando la idea de turnarse con la idea de variables de bloqueo y variables de advertencia, un matemtico holands, T. Dekker, fue el primero en hallar una solucin en software para el problema de la exclusin mutua que no requiere alternancia estricta. En 1981, G.L. Peterson descubri una forma mucho ms sencilla de lograr exclusin mutua, lo que volvi obsoleta la solucin de Dekker. (Tanenbaum,2003) Bsicamente, lo que se introduce es una variable adicional turno, la cual ser til cuando se produzca un problema de peticin simultnea a la seccin crtica. Algoritmo de Lamport Los algoritmos anteriores slo se pueden ejecutar en un entorno centralizado (con memoria comn) ya que usan variables globales que son modificadas por los procesos. Los algoritmos adecuados para entornos distribuidos (sin memoria comn) son aquellos que permiten que cualquier proceso pueda consultar todas las variables comunes, pero slo pueda modifcar las suyas propias. (Palma Mendez, 2002) En s, lo que hace este algoritmo es dar solucin al problema de exclusin mutua para n procesos, y se pueden dar en entornos distribuidos con un acceso slo de lectura a la memoria de otro proceso. Algoritmo de Hyman Encontrar una solucin software al problema de la exclusin mutua ha sido un desafo para los investigadores de la ciencia de la computacin desde los aos 60, conduciendo a muchas soluciones falsas. (Palma Mendez.2002) El algoritmo de Hyman es una solucin errnea al problema de exclusin mutua, pero clarifica lo que hay que hacer y se usa con fines educacionales. Algoritmo de Eisenberg McGuire
Universidad Nacional Jorge Basadre Grohomann FAIN-ESIS
III) PROCEDIMIENTO Algoritmo de Dekker Primeramente implementamos el algoritmo de Dekker. Para ello necesitamos el pseudocdigo que est en la literatura de programacin concurrente. La pizarra (C1) primer proceso debe inicializarse con el valor true y la pizarra (C2) del segundo proceso debe inicializarse con el valor false. El valor de turno debe inicializarse con 2
Figura 1
Universidad Nacional Jorge Basadre Grohomann FAIN-ESIS
El cdigo en pascal es
Figura 2
Universidad Nacional Jorge Basadre Grohomann FAIN-ESIS Haciendo unas pequeas modificaciones, sustituimos el bucle repeat- forever por un for con el fin de contar el nmero de veces que se realiza cada proceso. En pascal FC quedara de la siguiente manera:
FIGURA 3
Universidad Nacional Jorge Basadre Grohomann FAIN-ESIS Algoritmo de Peterson El pseudocdigo del algoritmo es FIGURA 4
Ambas pizarras deben inicializarse con valor false. El valor de turno no tiene relevancia (puede inicializarse con 1 o 2).
El cdigo fuente el Pascal FC es el siguiente
FIGURA 5 Universidad Nacional Jorge Basadre Grohomann FAIN-ESIS Haciendo las respectivas modificaciones, como en el caso anterior, para que nos muestre el nmero de veces que se ejecuta el programa, aadimos un contador y un bucle for.
FIGURA 6 Ejercicio Del Banco Supongamos que un banco que tiene 20 cuentas, enumeradas del 1 al 20, y cada cuenta tiene, inicialmente, S./100 de saldo. Por lo tanto el banco tiene 2000 soles. El banco realiza 2 operaciones i) Contabiliza los saldos de todas las cuentas ii) Traspasos de una cuenta a otra La implementacin de este ejercicio en pascal FC quedara de la siguiente manera usando el bucle for de i=1 hasta 25: Universidad Nacional Jorge Basadre Grohomann FAIN-ESIS
FIGURA 7
FIGURA 8 Universidad Nacional Jorge Basadre Grohomann FAIN-ESIS
Implementacin usando Repeat Forever
FIGURA 9
FIGURA 10 Universidad Nacional Jorge Basadre Grohomann FAIN-ESIS
Para resolver el problema del banco, primero se procedi a usar un array que guarde el saldo existente en cada cuenta, 2 variables que actualizen la informacin de la cuenta inicial y la cuenta final a la cual se transferir un monto y un total que almacena la suma de total de saldo de las cuentas. Adems, se necesito de variables aleatorias que en Pascal FC son definidas mediante la funcin RANDOM.
IV) CONCLUSIONES Con la programacin de los algoritmos de Dekker y Peterson en pascal FC, se clarific la funcin de cada parte del algoritmo, por lo que puede ser base para generar nuevas ideas e ir mejorando o puliendo detalles sobre los mismos. Al momento de la programacin, naturalmente el algoritmo de Peterson fue mucho ms fcil de implementar, y aunque ambos solucionen el problema de exclusin mutua, el algoritmo de Peterson lo hace de una manera ms ptima y sencilla. Con el ejercicio del banco, se pudo clarificar an ms las funciones de los algoritmos de Dekker y Peterson respectivamente, puesto que fue aplicado a un problema real y al funcionar, se comprob su veracidad.
V) BIBLIOGRAFA Mndez, J. T. (2003). Programaci Concurrente. Espaa : Parainfo. Tanenbaum, A. S. (2003). Sistemas operativos modernos. Mexico: Pearson Educacin.