You are on page 1of 12

ALGORITMOS

DISTRIBUIDOS

Dr. Dennis Barrios Aranibar
dennisbarrios@gmail.com

. . . . .QUÉ ES PROGRAMACIÓN CONCURRENTE? Programa “ordinario” Ejecución Secuencial Declaraciones . .. Instrucciones Programa Concurrente Declaraciones Declaraciones . . . . . Instrucciones Instrucciones Declaraciones .. Instrucciones Ejecución en Paralelismo Abstracto .

SINCRONISMO  Es importante que:  Varios procesos no accesen a un recurso compartido al mismo tiempo  Aceso exclusivo temporal  Algunos procesos pueden necesitar ponerse deacuerdo en el orden de ejecución de ciertos eventos .

todos los procesos debe estar de acuerdo en quien debe ser el coordinador  Bully Algorithm – Algoritmo Abusón  Ring Algorithm – Algoritmo basado en anillo .ALGORITMOS DE ELECCIÓN  Se requiere de un processo que actue como:  Coordinador  Iniciador  Ejecute  El algun rol especial objetivo de la elección es que cuando la misma concluya.

BULLY ALGORITHM Garcia-Molina 1982  Sistema Síncrono 1    T = 2*Ttrans + TProcesa 6 n Permite la caida de procesos durante elección  Construcción de detector de fallas  Coordinador Ok Ok ión cc e l E ó ci ID de los mayores n ec  3 Ele Ok cci ó 2 El Conocimiento de los otros procesos Elección  4 Timouts para fallas 5 X 7 0 .

2.0] [5.3.3.4.3.4.4 Chang y Roberts 1979  pi tiene un canal de comunicación con el siguiente proceso del anillo.6 .2.4. 6.6.4.4.3.1. 6. 6.2.1.6 No hay fallas  Sistema asíncrono  [5.4] [5] [5.2 3 ] 6 .2 .3.3 . 6.4.1.4.4.0 [5.0] [5 .1.3.2.3.1. 6.3.1 . [5.0] 5 [5.0] 0 .2.RING ALGORITHM  Se elige el proceso con identificador mas grande 1 [5.4.0] [5.1.4.3] [5.1.2.2.2.1. p(i+1) mod N  Supuestos  X6 7 [5.1.3.0] 4 2 [5.0] [5.1] 6.3.3.

ALGORITMOS DE CONSENSO Consenso frente a caídas o fallas bizantinas  Cuando existe replicación se debe llegar a un consenso para saber que información se envia  Problemas:      Sensores replicados no necesariamente dan el mismo valor Sensor malogrado o procesador que falla   Cada proceso elige un valor inicial y Se requiere que todos los procesos decidan por uno de esos valores Como lograr consenso Fallas   Por caídas: proceso no envia mensajes Bizantinas: proceso envia mensajes arbitrarios Algoritmo de una ronda  Algoritmo de los generales bizantinos  Algoritmo del rey (King Algorithm)  .

ALGORITMO DE UNA RONDA Si unos cuantos caen no se llega a consenso  Cada uno hace su tabla de valores escojidos por los otros  1 A 2 -AB B A B - A B 3 AAB A .

ALGORITMO DE LOS GENERALES BIZANTINOS Se ejecutan mas rondas  Primera ronda: igual a anterior  Segunda Ronda: enviar a cada proceso la elección de los otros  1 3:B 2:A A 2 A B - A 3 B 1:1:A AAB AAB A A .

ALGORITMO DEL REY    A:1 A:1 B:1 B:0 Requiere menos mensajes que el algoritmo de los generales bizantinos En cada ronda un proceso recibe el titulo de rey y su voto vale mas Algoritmo Cada general almacena el voto de la mayoria en la primera ronda  Segunda ronda:   Cuando el nodo recibe el plan del rey    Si mi mayoria es amplia: >(n/2)+1 considerar mi voto mayoria Caso contrario considerar voto del rey Tercera ronda:  Repetir segunda ronda con otro rey 1 A A B 2 B A A:1 A:1 B:0 B:1 B 3 A A:1 B:0 B:1 B 4 5 A:1 B:1 B:0 A:1 B:0 B:1 .

BIBLIOGRAFIA UTILIZADA  Distributed Systems: Principles and Paradigms (Prentice Hall)  Andrew S. Tanembaum  Maarten Van Sten  Principles of Concurrent and Distributed Programming (Adison Wesley)  M. Ben-Ari .

la cual será expuesta por un miembro del grupo elegido al azar.h para C/C++ en Windows  La MFC de Microsoft Visual Studio Presentar un informe  Realizar una presentación con Slides.h y windows.TRABAJO EN GRUPO (GRUPOS DE 4)  Realizar un trabajo sobre programación con hebras en:  Java  C++ con POSIX Threads sobre Linux  Las librerias process.  .