Está en la página 1de 17

UNIVERSIDAD DE SANTIAGO DE CHILE

FACULTAD DE INGENIERÍA
DEPARTAMENTO DE INGENIERÍA INFORMÁTICA

Sistemas Distribuidos
Nombramiento
Sincronización
Exclusión Mutua
Replicación y Consistencia

Integrantes: Ariel Argomedo M

23 de Julio de 2023
Tabla de contenidos
1. Nombramiento 1
1.1. Conceptos clave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Nombres planos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2.1. Multitransmision - Protocolo de Resolución de Direcciones . . . . . . 1
1.2.2. Forwarding Pointers . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.3. Métodos Basados en el Origen . . . . . . . . . . . . . . . . . . . . . . 2
1.2.4. Tablas Hach Distribuidas . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.5. Árbol Jerárquico de Búsqueda . . . . . . . . . . . . . . . . . . . . . . 3
1.3. Nombres estructurados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3.1. Implementación de la Resolución de Nombres - Iterativa . . . . . . . 4
1.3.2. Implementación de la Resolución de Nombres - Recursiva . . . . . . . 4
1.4. Nombres basados en atributos . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2. Sincronización 5
2.1. Sincronización de Reloj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.1. Relojes fı́sicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.2. Algoritmos de Sincronización de Relojes . . . . . . . . . . . . . . . . 5
2.2. Relojes Lógicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2.1. Relojes Lógicos de Lamport . . . . . . . . . . . . . . . . . . . . . . . 6
2.2.2. Relojes Vectoriales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3. Exclusión Mutua 8
3.1. Algoritmos de Exclusión Mutua . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.1.1. Algoritmo Centralizado . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.1.2. Algoritmo Descentralizado . . . . . . . . . . . . . . . . . . . . . . . . 9
3.1.3. Algoritmo Distribuido . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.1.4. Algoritmo de Anillo de Token . . . . . . . . . . . . . . . . . . . . . . 10
3.2. Algoritmos de Elección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2.1. Algoritmos del Abuson . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2
3.2.2. Algoritmo de Anillo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2.3. Elección en Ambiente Inalámbrico (WAN) . . . . . . . . . . . . . . . 11
3.2.4. Elección de Sistemas de Gran Escala . . . . . . . . . . . . . . . . . . 11

4. Replicación y Consistencia 12
4.0.1. Consistencia Continua . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.0.2. Ordenamiento Consistente de Operaciones . . . . . . . . . . . . . . . 13
4.0.3. Lecturas monotónicas . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.0.4. Escrituras monotónicas . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.0.5. Administracion de replicas . . . . . . . . . . . . . . . . . . . . . . . . 14
1. Nombramiento
Los nombres juegan un rol fundamental en los sistemas de cómputo para:

Compartir recursos.

Identificar entidades de manera única.

Referenciar ubicaciones.

1.1. Conceptos clave

Nombre: Cadena de bits o caracteres utilizados para referenciar una entidad.

Entidad: Cualquier cosa dentro del sistema. Para ser operada requiere tener un punto
de acceso en una dirección determinada.

Identificador: Hace referencia a una entidad como máximo. Cada entidad es referen-
ciada por al menos un identificador. (En general, son cadenas de bits)

Existen diferentes formas de implementar nombres en un sistema de naming.

1.2. Nombres planos

Muchas veces, los identificadores son simplemente cadenas aleatorias de bits, a las
cuales nos referimos convenientemente como nombres planos o no estructurados. Estos, no
referencian la ubicación del punto de acceso del recurso.
Se requiere resolver un identificador hacia la dirección de su entidad
asociada. ¿Soluciones?

1.2.1. Multitransmision - Protocolo de Resolución de Direcciones

Un mensaje que contiene el identificador de la entidad es transmitido a cada


maquina y a cada maquina se le solicita verificar si tiene una entidad.

1
Problemas:

• Malo en medida que la red crece.

• Desperdicia ancho de banda.

• Solo aplicable para LAN.

1.2.2. Forwarding Pointers

Cada vez que una entidad se mueve, deja un puntero indicado dónde se ha movido.
Cuando una entidad se mueve de A a B, deja en A una referencia de su nueva ubicación en
B.

Problemas:

• Poco escalable si la entidad se mueve mucho.

• Cadenas muy largas aumentan latencia del sistema considerablemente.

• Problemas con pérdida de una sección de la cadena.

1.2.3. Métodos Basados en el Origen

Mantiene el registro de la ubicación actual de una entidad. Cada vez que una
entidad se mueve hacia otra asignación, le informa al origen donde se encuentra. La ubicación
de una entidad se lleva a cabo preguntando primero a su origen por la ubicación actual.

1.2.4. Tablas Hach Distribuidas

Consideremos un sistema Chord, con una organización en forma de anillo lógico.


Los datos se mapean a la llave del nodo mas pequeño. Hace uso de finger tables.

Problemas:

• No considera la proximidad fı́sica de los nodos.

• Se puede enrutar mensajes de manera poco efectiva.

2
1.2.5. Árbol Jerárquico de Búsqueda

La red esta dividida en una colección de dominios. Existe un solo dominio de nivel
superior que se expande por toda la red. Los dominios se pueden agrupar en dominios de
mayor nivel y se pueden dividir subdividir en subdominios mas pequeños. El nodo de nivel
superior (raı́z), sabe acerca de todas las entidades.
Si se desea realizar una petición de búsqueda, se debe enviar la petición a los
dominios superiores hasta encontrar un puntero al dominio buscado. Para actualizar la in-
formación de una entidad E, se debe actualizar la información en todos los dominios que
contengan referencias a dicha entidad.

1.3. Nombres estructurados

Los nombres planos no son muy convenientes para las personas. Como alternativa,
se tienen los nombres estructurados que están compuestos de nombres sencillos y legibles.
Se organizan fácilmente dentro de un espacio de nombre, comúnmente represen-
tado por un grafo dirigido con dos tipos de nodos: directorios y hojas.

Nodo hoja: Almacena, en general, información respecto a la entidad que representa.

Nodo directorio: Contiene aristas que salen de dicho nodo, cada una con su respectivo
nombre. (Almacena una tabla de directorio)

Para acceder a un nodo, se utiliza el nombre de ruta. Se necesita conocer el


nodo inicial y tener acceso a su tabla de directorio.

1 if ( nombre ruta contiene raiz del grafo ) THEN


2 ruta absoluta
3 else
4 ruta relativa

Mecanismo de clausura: Propiedad básica para la resolución de nombres es-


tructurados. Trata con la selección del nodo inicial dentro de un espacio de nombres en el
cual empieza la resolución de nombres. Saber como y en donde comenzar la resolución de
nombres es conocido.

3
Capa global: Formada por los nodos de alto nivel. Frecuentemente son estables,
es decir, las tablas de directorio rara vez de modifican.
Capa de administración: Esta formada por los nodos directorio que son admi-
nistrados juntos dentro de una sola organización.
Capa de dirección: Consta de nodos que pudieran modificarse de manera regu-
lar.

1.3.1. Implementación de la Resolución de Nombres - Iterativa

Se asume que la dirección para contactar al servidor de nombres es conocida. Se


resuelve cada dirección en cada iteración. Alto consumo de computo por el cliente. Necesidad
de comunicar cliente con cada servidor.

1.3.2. Implementación de la Resolución de Nombres - Recursiva

El servidor de nombre pasa la solicitud al siguiente servidor de nombre. Computo


del lado del servidor. Se genera una única conexión entre servidor y cliente.

1.4. Nombres basados en atributos

En general, es muy importante mantener atributos asociados a una entidad para


realizar una búsqueda efectiva. Para mantener dicha información, se describen las entidades
con pares (atributo, valor).
Marco de Descripción de Recursos: Describe los recursos como trı́os que
constan de un sujeto, un predicado y un objeto. (Persona, nombre, Alice)
Protocolo ligero de acceso a directorios: Permite el acceso a un servicio de
directorio basado en atributos. El directorio es un conjunto de objetos con atributos que
tienen una organización jerárquica.

4
2. Sincronización

2.1. Sincronización de Reloj

A nivel distribuido no es trivial lograr un acuerdo sobre el tiempo.

2.1.1. Relojes fı́sicos

Todos los computadores contabilizan el tiempo con Timer o Cronómetros. En


general, consta de un cristal de cuarzo mecanizado con precisión que oscila dependiendo
del corte, tipo de cristal utilizado y cantidad de tensión. (Dos registros asociados al cristal:
contador y registro mantenedor)
Cada oscilacion del cristal disminuye el contador en uno. Cuando el contador llega
a 0, se genera una interrupcion y el contador se reinicia respecto al registro mantenedor.
Si se tienen n CPUs los n cristales funcionan a velocidades ligeramente diferentes.
Diferencia conocida como distorsión de reloj.
¿Como se sincronizan los distintos relojes en un sistema distribuido?
Se instaura el TAI (Tiempo Atómico Internacional). Promedio de relojes de cesio
133 de distintos lugares del mundo. El problema de este tiempo es que no va acorde al tiempo
solar. Por lo que, se introducen segundos vacı́os en el UTC. Con estos dos estándares, se logra
tener un tiempo común a nivel mundial.
Sistema de Posicionamiento Global (GPS): Sistema distribuido basado en
satélites, se utilizan 29 satélites que tienen hasta 4 relojes calibrados regularmente. Cada
satélite transmite su posición de manera continua y, respecto al tiempo de los mensajes, se
logra tener la posición de los dispositivos receptores.

2.1.2. Algoritmos de Sincronización de Relojes

Se asume que cada maquina tiene un cronometro que ocasiona una interrupción H
veces por segundo. Cuando el cronometro se apaga, el manipulador de interrupciones agrega 1
al reloj del software. Con esto, se tiene la cantidad de marcas desde un momento determinado.
Dado que cada reloj tiene sus propios tiempos, se definen distorsiones máximas que pueden
existir en consideración del tiempo UTC.

5
Algoritmo de Cristian: Propone que los clientes se conectan con un servidor que
tiene el tiempo exacto. El problema reside en que existen retrasos de mensaje que ocasionaran
que el tiempo reportado no este actualizado. El truco esta en estimar los retrasos de la mejor
forma. Para esto, se miden los tiempos de propagación de los mensajes y se ajusta el reloj
respecto a la estimación generada y el tiempo obtenido desde el servidor.
Algortimo de Berkeley: En este algoritmo, el servidor del tiempo no es pasivo.
Se cuenta con una daemon desde el servidor del tiempo que pregunta cada ciertos intervalos
el tiempo actual de cada sistema. Basado en las respuestas, calcula un tiempo promedio y le
indica a las maquinas que adelanten o retrasen su relojes.
Network Time Protocol: Esta generado para proveer servicios de tiempo en
Internet. Utiliza un sistema de estratos de reloj, donde los sistemas de estrato 1 están coor-
dinados con un reloj externo. Los sistemas de estrato 2 derivan su tiempo de uno o mas de
los sistemas de estrato 1 y ası́ sucesivamente.
Se calculan los tiempo de propagación aplicando el concepto de dispersión respecto
al servidor que se solicita la hora. Posterior a eso, se aplica una fase para la modificación de
la frecuencia de los relojes en base a la diferencia calculada.

2.2. Relojes Lógicos

Muchas veces lo importante es el orden en que se generan los eventos, indiferente


de los tiempos locales de cada sistema.

2.2.1. Relojes Lógicos de Lamport

Lamport definio la relacion llamada concurrencia anterior. La expresion a →


− b
se como a ocurre antes que b. Esto quiere decir que todos los procesos coinciden en que el
evento a ocurre primero y, posterior a eso, ocurre el evento b. La concurrencia es transitiva,
es decir si a →
− byb→
− c entonces a →
− c. Si dos eventos x e y ocurren en diferentes procesos
que no intercambian mensajes, entonces no se puede determinar que evento ocurre primero.
Se dice que estos eventos son concurrentes.
Se hacen ajustes de los relojes locales en torno a como se generan los eventos. El
algoritmo va corrigiendo los relojes paso a paso.

6
Útil para cuando se necesita una transmisión totalmente ordenada, es decir, una
operación de transmisión mediante la cual todos los mensajes se entreguen en el mismo orden
a cada destinatario.

2.2.2. Relojes Vectoriales

En los relojes lógicos de Lamport como solo se conocen los tiempos locales, nada
dice sobre la relación de los eventos a y b. No se puede establecer que si C(a) ≤ C(b) entonces
necesariamente a ocurrió antes de b. Problema: no capturan la causalidad.
Un reloj vectorial, VC(a), asignado a un evento a, tiene la propiedad que si VC(a)
¡VC(b), para algún evento b, entonces se sabe que el evento a precede en causalidad al evento
b. Los relojes vectoriales se construyen de manera que cada proceso Pi mantenga un vector
V Ci con las siguientes propiedades:

V Ci [i] es el numero de eventos que han ocurrido hasta el momento en Pi .

Si V Ci [i] = k, entonces Pi sabe que han ocurrido k eventos en Pj . Ası́, este es el


conocimiento de Pi del tiempo local en Pij .

Por lo tanto, este tipo de reloj permite tener una causalidad de los eventos. Si no
se puede establecer una relación entre VC(a) y VC(b) entonces quiere decir que son eventos
concurrentes. Con esto, se puede generar una transmisión causalmente ordenada.

7
3. Exclusión Mutua
Para evitar la corrupción y asegurar la consistencia, se necesita encontrar solucio-
nes que garanticen que los procesos tengan acceso mutuamente exclusivo.
Los algoritmos de exclusión mutua se dividen en dos grandes categorı́as:

Soluciones basadas en token: La exclusión mutua se logra pasando un mensaje


especial conocida como token. Solo hay un token y quien lo tenga puede acceder al
recurso compartido.

Soluciones basadas en permisos: El proceso que quiere acceso al recurso solicita


permiso al resto de procesos.

3.1. Algoritmos de Exclusión Mutua

3.1.1. Algoritmo Centralizado

Simula las acciones de un sistema monoprocesador. Se selecciona un proceso como


coordinador, los demás procesos se comunican con el para acceder a los recursos.
1 if ( recurso libre ) THEN
2 acceso permitido
3 else
4 coordinador encola la peticion

Ventajas

• Garantiza exclusión mutua.

• Peticiones se responden en orden de llegada.

Desventajas

• Único punto de fallo (procesador coordinador).

• Mientras mas grande el sistema, un único coordinador puede ser un cuello de


botella en cuanto al rendimiento.

8
3.1.2. Algoritmo Descentralizado

Es una extensión del algoritmo centralizado de un solo coordinador. Cada recurso


se replica n veces, donde cada replica tiene su propio coordinador para controlar el acceso de
procesos concurrentes.

Consideraciones

• Elimina el cuello de botella y único punto de fallo.

3.1.3. Algoritmo Distribuido

Requiere un reordena miento total de los eventos del sistema, lo cual se puede
lograr con relojes lógicos de Lamport. Cuando un proceso desea acceder a un recurso com-
partido, elabora un mensaje que contiene el nombre del recurso, su numero de proceso y
el tiempo actual. Tras generar el mensaje, envı́a dicho mensaje a todos los demás procesos,
incluyéndose de manera conceptual. Cuando un proceso recibe un mensaje de petición de
otro proceso, toma acción dependiendo de su propio estado respecto al recurso mencionado
en el mensaje.
Se distinguen 3 casos:

1. Si el destinatario no accede al recurso y no desea acceder a el, envia un mensaje de OK


al remitente.

2. Si el destinatario ya cuenta con acceso al recurso, simplemente no responde. En su


lugar, coloca la petición en una cola.

3. Si el receptor también quiere acceder al recurso, compara el tiempo del mensaje entrante
respecto al suyo. El mejor gana. Si el mensaje entrante es menor, el receptor entrega un
mensaje OK. Si su propio registro es menor, el destinatario encola el mensaje entrante
y no envı́a nada.

Consideraciones

• Si algún proceso falla, no enviara un mensaje.

9
• No existe un único punto de fallo.

• No genera cuello de botella.

3.1.4. Algoritmo de Anillo de Token

En un anillo, se da una distribución lógica de los componentes. No tiene un orden


en particular, lo único importante es saber el proceso que va a continuación de el. Al inicio,
se le asigna un token al proceso 0.
Cuando ningún proceso necesita el recurso, el token circula a alta velocidad a
través del anillo.

Problemas

• Si el token se pierde, en algún momento debe reponerse.

• Si un proceso falla también es un problema, aunque mas fácil de recuperar ya que


simplemente se puede ignorar el proceso conflictivo al pasar el token.

3.2. Algoritmos de Elección

Muchos de los algoritmos de elección requieren un proceso que actúe como coor-
dinador. Supondremos que cada proceso tiene un identificador y los algoritmos intentaran
seleccionar el proceso con mayor id. Los procesos conocen el id del resto y se busca que todos
los procesos sepan cual es el coordinador al terminar el proceso de elección.

3.2.1. Algoritmos del Abuson

Cuando cualquier proceso advierte que el coordinador ya no esta respondiendo


peticiones, inicia una elección.

3.2.2. Algoritmo de Anillo

Suponemos que los procesos están fı́sicamente o lógicamente ordenados, de tal


forma que cada proceso sabe cual es su sucesor. Cuando un proceso nota que el coordinador
fallo, elabora un mensaje de Elección con su propio id y envı́a el mensaje a su sucesor. En

10
cada paso del mensaje, el remitente agrega el id de su proceso hasta llegar al proceso que
inicio la elección. Una vez llega el mensaje al proceso que inicio la elección, envı́a un mensaje
por el anillo con el Coordinador informando cual es el nuevo coordinador y los miembros del
nuevo anillo.

3.2.3. Elección en Ambiente Inalámbrico (WAN)

Para elegir un lı́der, cualquier nodo de la red puede iniciar una elección enviando
un mensaje de elección a sus vecinos inmediatos. Cuando un nodo recibe el mensaje de
elección, designa al remitente como su padre y posteriormente envı́a un mensaje de elección
a sus vecinos inmediatos a excepción del padre. Cuando un nodo recibe un mensaje de otro
nodo que no sea su padre, simplemente acusa recibo.

3.2.4. Elección de Sistemas de Gran Escala

Hay situaciones en que se debe seleccionar varios nodos, como el caso de los super
peers.

Requerimientos

• Los nodos normales deben tener acceso de baja latencia a los super peers.

• Distribución uniforme a través de la red superpuesta.

• Cantidad predefinida de super peers.

• Máximo de nodos normales por súper peer.

Supongamos que necesitamos colocar uniformemente N súper puntos a través de


la red sobrepuesta. La idea es simple, un total de N tokens se propagan por los N nodos
seleccionados al azar. Cada token representa una fuera de rechazo por la que otro token
prefiere retirarse. Si todos los tokens tienen la misma fuerza de rechazo, se alejaran unos de
otros y se propagaran uniformemente en el espacio geométrico.

11
4. Replicación y Consistencia
En general, los datos se replican para incrementar la confiabilidad o mejorar el
rendimiento del sistema. A tener en cuenta la consistencia.
Replicación: Ayuda además a realizar una mejor protección contra datos co-
rruptos. También, cuando el sistema necesita escalar en numero de solicitudes que puede
responder y en área geográfica, se puede mejorar el rendimiento replicando el servidor y,
posteriormente, dividiendo el trabajo. El costo tras la replicación es la consistencia.
El como y cuando sincronizar las replicas, para mantener una consis-
tencia entre las copias, es tema de interés y análisis.

Consistencia: Se genera en el almacén de datos, el cual esta fı́sicamente distri-


buido en varias maquinas. Se asume que todo proceso que puede acceder a los datos del
almacén, tiene una copia local disponible de todo el almacén.

4.0.1. Consistencia Continua

Considera un método general para diferenciar tres ejes independientes para defi-
nir inconsistencias: desviación en valores numéricos entre replicas (datos tienen semánticas
numéricas), desviación en el deterioro entre replicas y desviación con respecto al ordenamien-
to de operaciones de actualización.
Para algunas aplicaciones, es tolerable que una replica proporcione datos viejos
siempre y cuando no sean demasiado viejos. Tambien existen aplicaciones en que se permite
el ordenamiento de actualizaciones sea diferente en varias replicas, siempre que las diferencias
sean limitadas.
Conit: unidad con la que se medirá con la consistencia.
Granularidad fina, replicas en inconsistencia rápidamente. Granularidad gruesa,
implica sobrecarga al sistema y una baja del rendimiento total.

12
4.0.2. Ordenamiento Consistente de Operaciones

Cuando es necesario confirmar las actualizaciones en replicas, estas tendrán que


acordar un ordenamiento global de las actualizaciones.
Consistencia secuencial: Las operaciones de todos los procesos de ejecutan en
algun orden secuencial y las operaciones de cada proceso individual aparecen en esa secuencia
en el orden especificado en el programa.
Consistencia causal: Las escrituras estan potencialmente relacionadas por la
causalidad, deben ser vistas por todos los procesos en el mismo orden.
Consistencia de entrada: Las granularidades anteriores, no coincide en muchos
casos con la granularidad provista por las aplicaciones. Lo que ocurre, es que la concurrencia
se mantiene bajo control a través de mecanismos de sincronización para exclusión mutua y
transacciones. Para esto, se utilizan variables de sincronizacion compartidas.
Consistencia momentánea: Si no ocurren actualizaciones durante mucho tiem-
po, todas las replicas gradualmente se volverán inconsistentes.
Se puede producir un problema si la actualización no se propaga antes de que el
cliente acceda a una nueva replica. Se puede aligerar introduciendo consistencia centrada
en el cliente.

4.0.3. Lecturas monotónicas

Ante la lectura de un valor x, cualquier operación de lectura sucesiva sobre x que


haga ese proceso devolverá siempre el mismo valor o un valor mas reciente.

4.0.4. Escrituras monotónicas

Una operación de escritura hecha por un proceso sobre un elemento x se completa


antes que cualquier otra operación sucesiva de escritura sobre x realizada por el mismo
proceso.
Basicamente, una operacion de escritura sobre una copia del elemento x se realiza
solo si esa copia se ha actualizado mediante cualquier operacion de escritura previa, la cual
pudo ocurrir en otra replica de x.

13
4.0.5. Administracion de replicas

La ubicación de servidores y replicas tiene que ver con encontrar los mejores
lugares para colocar un servidor que pueda hospedar un almacén de datos. (Es mas una
decision economica)
La ubicación de contenido se relaciona con encontrar a los mejores servidores para
colocar el contenido.
Replicas permanentes: se considera como el conjunto inicial de replicas que
constituyen un almacén de datos. Son un numero pequeño de replicas pequeñas.
Replicas iniciadas por servidores: Replicas iniciadas por los servidores acorde
a las necesidades del sistema.
Replica iniciada por el cliente: Se generan mediante los sistemas de caché.

14

También podría gustarte