Está en la página 1de 27

Algoritmos Distribuidos

Semana 2: Parte 1
Topologías Lógicas Y
Notación Algorítmica

Claudia León
Universidad Central de Venezuela
Facultad de Ciencias
Escuela de Computación

Octubre 2006 – Marzo 2007


Objetivos

 Comprender y describir las principales


características de los algoritmos distribuidos
 Conocer algunas medidas de complejidad en
los algoritmos distibuidos
 Familiarizarnos con una notación para
expresar algoritmos distribuidos.
Algoritmo Distribuido
P1 P3

P4

P5
P2

Conjunto de procesos que se ejecutan en un sistema


distribuido, se comunican por medio de mensajes y realizan
una tarea en común.
Algoritmo Distribuido = Conjunto de Procesos + Mensajes
Características de los
algoritmos distribuidos

 Hipótesis sobre las propiedades estructurales


y de comportamiento de la red
 Topología lógica
 Grado de distribución
 Complejidad del algoritmo
 Conocimiento del estado global
 Tolerancia a fallas.
Hipótesis sobre las propiedades
de la red

 Comunicación fiable: Todo mensaje enviado es recibido


exactamente una vez
 Comunicación no fiable: Puede presentar los siguientes errores:
• Pérdida de mensajes
• Alteración de mensajes
• Duplicación de mensajes
• Creación de mensajes
 La hipótesis de que la comunicación es fiable es clásica en A.D.
 Secuenciamiento: Los mensajes son recibidos en el mismo orden
en que fueron enviados.
Topología lógica
Estructura de control en un Algoritmo Distribuido.
Representa la forma como se organiza la comunicación
entre los procesos.
Proceso
Grafo
Comunicación
G = {V,E}
V Conjunto de nodos
E Conjunto de arcos
N Cantidad de nodos
D diametro (mayor distancia
entre un par de nodos.
Topología lógica
Las hipótesis sobre la topología lógica son
información conocida y almacenada por cada
proceso “antes del inicio” del algoritmo:
• Cantidad de nodos, diámetro, topología completa
• Identidad de los procesos. Se supone que los
nombres de los procesos son únicos y cada proceso
conoce su identificación
• Identidad de los vecinos. En general cada proceso
puede enviar mensajes sólo a un sub-conjunto del
resto que son sus Vecinos : es decir con los cuales
tiene una conexión.
Topología lógica Vs Topología
Física

P1
P2

P5

P4
P3
Topología lógica

P1
P2

P5

P4
P3

Topología de estrella
Topología lógica

P1
P2

P5

P4
P3

Topología de anillo
Topologías lógicas

Anillo
Arbol Extrella

Cualquier Grafo

Malla Malla Completa Hipercubo 23


Topologías lógicas: Anillo
2 3

1 4

0 5

• Nodos numerados de 0 a n-1


• Los arcos relacionan el proceso i con el proceso (i+1 mod n)
• Un grafo no dirigido, conectado y de grado 2
• Muy usada a causa de su simplicidad: round-robin
Topologías lógicas: Árbol
0

1 2

3 4 5

• Es un grafo no dirigido, conectado, acíclico con N-


1 arcos
• Entre cada par de nodos existe un único camino
• Si se agrega un arco, el grafo será cíclico
Topologías lógicas: Estrella

0
1 5

2 4
3

• Existe un nodo particular llamado centro y N-1 arcos


conectando el resto de los nodos con el centro
• Utilizada en cálculos centralizados donde un
proceso sirve de coordinador o maestro
• Es un árbol de profundidad 1.
Topologías lógicas: Malla
Completa
0 1

2 3

• Existe un arco entre cada par de nodos


• Diámetro es 1
• Cada nodo tiene grado N-1
• |E| es 1/2*N*(N-1)
Topologías lógicas: Hipercubo

101 111
011
100
001
011

000 010
• Un hipercubo de dimensión n es un grafo de N = 2n
• El identificador de cada nodo es codificado en n bit
• Dos nodos son vecinos sólo sus identificadores varían en
1 bit
• Diámetro y grado igual a n
Características de los
algoritmos distribuidos

 Hipótesis sobre las propiedades estructurales


y de comportamiento de la red
 Topología lógica
 Grado de distribución
 Complejidad del algoritmo
 Conocimiento del estado global
 Tolerancia a fallas.
Grado de distribución
Está relacionado con la simetría de roles que juegan los
diferentes procesos que conforman el algoritmo.
1. No simétrico: Cada proceso ejecuta un texto diferente.
Ejemplo: un cliente y un servidor
2. Simetría de texto: Los procesos ejecutan el mismo texto, pero
se hace referencia a la identificación del proceso, según la
cual pueden tener diferente comportamiento.
3. Simetría fuerte: Los procesos ejecutan el mismo texto, en el
cual no aparece la identificación del proceso. De acuerdo a los
mensajes recibidos los procesos pueden tener diferente
comportamiento.
4. Simetría total: Los procesos ejecutan el mismo texto y tienen
comportamiento idéntico.
Complejidad del algoritmo
La cantidad total de mensajes intercambiados
entre los procesos participantes tomando el
peor caso y expresada en base a la cantidad
de procesos denotada por N : Ejemplo O(N)

 Tamaño de los mensajes


 Tipo de los mensajes
Conocimiento del estado global

Ideal: Cada proceso toma las decisiones


utilizando la menor cantidad de información
acerca del estado de los otros.
Tolerancia a fallas
Es deseable que un algoritmo distribuido pueda
resistir a las fallas de los procesos que lo
componen. Está relacionada con (aunque no
determinada):
 El grado de distribución: a mayor simetría más
tolerancia
 Cantidad de mensajes intercambiados: a menor
intercambio de mensajes mayor tolerancia.
 Naturaleza del sistema: Si en sincrono es probable
garantizar la tolerancia.
Una notación para escribir
algoritmos distribuidos
 Se expresa en base a un algoritmo local a un
proceso con identificación Id
 Los identificadores de los procesos pueden ser
usados como índice de arreglos
 La variable Vecinos denota el conjunto de
identificadores de los procesos vecinos
 Las acciones:
• Asignación: a:= expresión
• si condición entonces accion sino aacion fsi
1 2

• mientras condición hacer accion fmientras


1
Una notación para escribir
algoritmos distribuidos
La acción paratodo:
paratodo x  X hacer accion fparatodo
Donde X es un conjunto, significa que la acción será ejecutada para
cada elemento x perteneciente a X, uno a la vez. El orden en el cual los
elementos son tomados no se especifica, por lo tanto se debe usar sólo
cuando el orden es irrelevante.

Ejemplo:
paratodo q  Vecinos hacer
Mensajes_recibidos[q] := 0
fparatodo

Inicializa la cantidad de mensajes recibidos desde cada vecino en 0


Una notación para escribir
algoritmos distribuidos
Enviar un mensaje:
enviar (tipo, datos) a destino

Donde :
tipo: identifica el tipo del mensaje si fuese necesario.
datos: es una estructura de datos que puede ser evaluada o
desempacada por el receptor
destino: es la identificación del vecino destinatario del mensaje.

Ejemplo:
paratodo q  Vecinos hacer
enviar (*,Id) a q
fparatodo

Envía la identificación del proceso a todos sus vecinos


Una notación para escribir
algoritmos distribuidos
Recibir un mensaje:
recibir (tipo,datos) de emisor
Donde :
tipo: identifica el tipo del mensaje si fuese necesario.
datos: es una estructura de datos para almacenar el mensaje
emisor: es la identificación del vecino emisor del mensaje.

Ejemplo:
recibir (*,cantidad) de emisor
No especifica de cual vecino se espera el mensaje, pero la identificación
del enviador será conocida luego en la variable emisor.

recibir (*,cantidad) de emisor=p


Permite recibir un mensaje del vecino cuya identificación es p
Una notación para escribir
algoritmos distribuidos
Manejo de eventos:
cuando { condición1 } hacer accion1 fcuando
cuando { condición2 } hacer accion2 fcuando
.
cuando { condiciónm } hacer acciom fcuando

Donde: condicióni es una expresión lógica denominada el


guardián y accioni es activada o disparada cuando su guardián
evalúa verdad.
Permite manejar el no-determinismo.
Ejemplo:
Cuando { “llegue un mensaje tipo A” } hacer
recibir (A,datos) de emisor ; . . . . . .
fcuando
Algoritmo distribuido: Ejemplo
Ataque Coordinado: En el seno de la ONU las decisiones
trascendentales se toman en base a los votos de los
Representantes de los Jefes de Estado de los 5 países que
son miembros permanentes del Consejo de Seguridad:
USA, Inglaterra, Francia, China y Rusia.

Las propuestas se someten a votación y se decide en base a:


Si los 5 países votan “Si” la propuesta es Aprobada.
Si algún país vota “No” la propuesta es Negada.

Desarrolle un algoritmo distribuido que implemente este sistema de


votación, el cual se utilizará en casos de emergencia, bajo una
comunicación absolutamente fiable.

También podría gustarte