Puebla, Pue a 4 de Junio del 2015 Programación Concurrente...

12
Puebla, Pue a 4 de Junio del 2015 Programación Concurrente y Paralela Algoritmo de Dekker y Peterson Problemas: 1.- Esquimales 2.- Identificar procesos. ALUMNOS: OSCAR EDUARDO GONZÁLEZ RAMOS MICHAEL CASTAÑEDA TREJO JESÚS URIEL RODRÍGUEZ CUAUTLE IVÁN HERNÁNDEZ PEDRAZA JUDITH ANGÉLICA HERRERA NICIO ALAN JOB DE LA LUZ HERNÁNDEZ

Transcript of Puebla, Pue a 4 de Junio del 2015 Programación Concurrente...

Page 1: Puebla, Pue a 4 de Junio del 2015 Programación Concurrente ...programacioncp.weebly.com/uploads/5/5/2/9/55295857/p3e.pdf · Puebla, Pue a 4 de Junio del 2015 Programación Concurrente

Puebla, Pue a 4 de Junio del 2015

Programación Concurrente y Paralela

Algoritmo de Dekker y Peterson

Problemas:

1.- Esquimales

2.- Identificar procesos.

ALUMNOS: OSCAR EDUARDO GONZÁLEZ RAMOS

MICHAEL CASTAÑEDA TREJO

JESÚS URIEL RODRÍGUEZ CUAUTLE

IVÁN HERNÁNDEZ PEDRAZA

JUDITH ANGÉLICA HERRERA NICIO

ALAN JOB DE LA LUZ HERNÁNDEZ

Page 2: Puebla, Pue a 4 de Junio del 2015 Programación Concurrente ...programacioncp.weebly.com/uploads/5/5/2/9/55295857/p3e.pdf · Puebla, Pue a 4 de Junio del 2015 Programación Concurrente

ALGORITMOS: DEKKER Y PETERSON

Algoritmo de Dekker: El algoritmo de Dekker es un algoritmo de programación

concurrente para exclusión mutua, que permite a dos procesos o hilos de ejecución compartir un recurso sin conflictos. Fue uno de los primeros algoritmos de exclusión mutua inventados, implementado por Edsger Dijkstra.

Si ambos procesos intentan acceder a la sección crítica simultáneamente, el algoritmo elige un proceso según una variable de turno. Si el otro proceso está ejecutando en su sección crítica, deberá esperar su finalización.

Existen cinco versiones del algoritmo Dekker, teniendo ciertos fallos los primeros cuatro. La versión 5 es la que trabaja más eficientemente, siendo una combinación de la 1 y la 4.

Versión 1: Alternancia estricta. Garantiza la exclusión mutua, pero su desventaja es que acopla los procesos fuertemente, esto significa que los procesos lentos atrasan a los procesos rápidos.

Versión 2: Problema interbloqueo. No existe la alternancia, aunque ambos procesos caen a un mismo estado y nunca salen de ahí.

Versión 3: Colisión región crítica no garantiza la exclusión mutua. Este algoritmo no evita que dos procesos puedan acceder al mismo tiempo a la región crítica.

Versión 4: Postergación indefinida. Aunque los procesos no están en interbloqueo, un proceso o varios se quedan esperando a que suceda un evento que tal vez nunca suceda.

Algoritmo de Peterson: Es un algoritmo de programación concurrente para

exclusión mutua, que permite a dos o más procesos o hilos de ejecución compartir

un recurso sin conflictos, utilizando sólo memoria compartida para la comunicación.

Peterson desarrolló en 1981 el algoritmo básico para dos procesos, como una

simplificación del algoritmo de Dekker. El algoritmo básico puede generalizarse

fácilmente a un número arbitrario de procesos. Los procesos p0 y p1 no pueden

estar en la sección crítica al mismo tiempo: si p0 está en la sección crítica, entonces

bandera[0] = 1, y ocurre que bandera[1] = 0, con lo que p1 ha terminado la sección

crítica, o que la variable compartida turno = 0, con lo que p1 está esperando para

entrar a la sección crítica. En ambos casos, p1 no puede estar en la sección crítica.

Page 3: Puebla, Pue a 4 de Junio del 2015 Programación Concurrente ...programacioncp.weebly.com/uploads/5/5/2/9/55295857/p3e.pdf · Puebla, Pue a 4 de Junio del 2015 Programación Concurrente

Programa 1: El problema de los esquimales

Solo uno de los esquimales puede acceder a la vez al pizarrón y cuando uno de los esquimales quiere acceder al agujero para pescar debe consultar si tiene permiso para hacerlo; si el permiso lo tiene otro esquimal esperara un tiempo, cuando se le indique que tiene permiso entonces este podrá ir a pescar.

Código: Aquí se establecen las propiedades del esquimal 2, dentro del método run y se cambian las banderas para decidir si espera o va a pescar

Page 4: Puebla, Pue a 4 de Junio del 2015 Programación Concurrente ...programacioncp.weebly.com/uploads/5/5/2/9/55295857/p3e.pdf · Puebla, Pue a 4 de Junio del 2015 Programación Concurrente

Aquí se establecen las propiedades del esquimal 1, dentro del método run y se cambian las banderas, para establecer si va a la pizarra o a pescar.

Page 5: Puebla, Pue a 4 de Junio del 2015 Programación Concurrente ...programacioncp.weebly.com/uploads/5/5/2/9/55295857/p3e.pdf · Puebla, Pue a 4 de Junio del 2015 Programación Concurrente

Este es el método principal en el que se inicializan las variables y métodos que harán que funcionen las clases de los procesos (esquimales).

Ejecución

Page 6: Puebla, Pue a 4 de Junio del 2015 Programación Concurrente ...programacioncp.weebly.com/uploads/5/5/2/9/55295857/p3e.pdf · Puebla, Pue a 4 de Junio del 2015 Programación Concurrente
Page 7: Puebla, Pue a 4 de Junio del 2015 Programación Concurrente ...programacioncp.weebly.com/uploads/5/5/2/9/55295857/p3e.pdf · Puebla, Pue a 4 de Junio del 2015 Programación Concurrente

Como podemos observar en la salida, se puede notar que cada esquimal pesca un pescado a la vez, respetando sus condiciones, de acuerdo a la bandera

Page 8: Puebla, Pue a 4 de Junio del 2015 Programación Concurrente ...programacioncp.weebly.com/uploads/5/5/2/9/55295857/p3e.pdf · Puebla, Pue a 4 de Junio del 2015 Programación Concurrente

Programa 2: Algoritmo de Peterson (identificar procesos)

En el algoritmo propuesto por la profesora, se identificaba que así como se producía el mismo proceso podía interpretar que se consumía lo producido, para esto, se deben identificar los procesos y escribir correctamente los mensajes que se muestren en la salida, para identificar qué proceso produce y cual consume.

Código:

Para este programa se implementa una lista con 2 métodos,

insertarDato y ObtenerDato.

Page 9: Puebla, Pue a 4 de Junio del 2015 Programación Concurrente ...programacioncp.weebly.com/uploads/5/5/2/9/55295857/p3e.pdf · Puebla, Pue a 4 de Junio del 2015 Programación Concurrente

Aquí tenemos la clase PetersonP1 en la cual se van a establecer las

condiciones que va a llevar el hilo1.

Page 10: Puebla, Pue a 4 de Junio del 2015 Programación Concurrente ...programacioncp.weebly.com/uploads/5/5/2/9/55295857/p3e.pdf · Puebla, Pue a 4 de Junio del 2015 Programación Concurrente

Aquí vemos las condiciones para el hilo2.

Page 11: Puebla, Pue a 4 de Junio del 2015 Programación Concurrente ...programacioncp.weebly.com/uploads/5/5/2/9/55295857/p3e.pdf · Puebla, Pue a 4 de Junio del 2015 Programación Concurrente

Ejecución:

Como se puede observar en la salida, se identifica perfectamente que hilo es el que

produce y cuál es el hilo que consume.

Page 12: Puebla, Pue a 4 de Junio del 2015 Programación Concurrente ...programacioncp.weebly.com/uploads/5/5/2/9/55295857/p3e.pdf · Puebla, Pue a 4 de Junio del 2015 Programación Concurrente

CONCLUSION

El resolver al problema de los esquimales usando el algoritmo de Dekker nos dimos

cuenta, la manera en la que funciona el algoritmo llevando el control, mediante la

bandera haciendo que el programa se ejecute sincronizadamente.

Mientras que por parte de el algoritmo de Peterson, se observó y aprendió la forma

en la que por medio de la lista los hilos iban produciendo y consumiendo, en las

clases correspondientes a los hilos se pudo observar la manera en la que se hace

la sincronización, nunca el hilo1 puede producir si el hilo2 no a consumido, así como,

el hilo2 no puede consumir sin que el hilo1 ya haya producido el elemento.