Está en la página 1de 11

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

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)

OBJETIVOS

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

III)

FAIN-ESIS

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

El cdigo en pascal es

Figura 2

FAIN-ESIS

Universidad Nacional Jorge Basadre Grohomann

FAIN-ESIS

Haciendo unas pequeas modificaciones, sustituimos el bucle repeatforever 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

FIGURA 7

FIGURA 8

FAIN-ESIS

Universidad Nacional Jorge Basadre Grohomann

Implementacin usando Repeat Forever

FIGURA 9

FIGURA 10

FAIN-ESIS

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.

También podría gustarte