¡Escribe tu texto aquí!1. ¿Por qué debemos tener sincronizados los relojes de los equipos que conforman un sistema
distribuido?
¿Qué mecanismos se utilizan para mantener los relojes sincronizados de estos equipos?
¿Qué mecanismos se utilizan para mantener los relojes sincronizados de estos equipos?
R: Es necesario porque se pueden producir diversos problemas de sincronización y/o actualización,
como la llegada de correos electrónicos donde puede ser que la respuesta llegue antes que una
pregunta o en casos más críticos donde no se guarde una actualización de sistema por que la nueva
versión tiene una hora anterior a otra.
Para mantener la sincronización se usan relojes lógicos o exclusión mutua.
2. ¿Por qué surge el problema de los generales bizantinos? ¿Qué solucionamos en los sistemas
distribuidos al solucionar el problema de los generales bizantinos?
R: El problema comienza cuando el capitán general envía la orden a los tenientes generales. Ya que
el capitán general puede ser traidor (y enviarles ordenes distintas), los tenientes deben
intercambiarse mensajes indicando cuál es la orden que les ha llegado del capitán general. Pero
claro, si hay algún teniente que es traidor, al resto de los tenientes les enviará órdenes
contradictorias para confundirles. Se pretende que, en cualquier caso, todos los generales leales
adopten la misma postura (atacar o retirarse).
La solución que sale de este problema es el de evitar ordenes erróneas de los procesadores, debido
a comportamientos malintencionados por fallos que enviarían mensajes con información errónea
por la red, generando un mal acuerdo entre los procesadores correctos.
3. ¿Cómo se maneja el problema de la sección critica en los sistemas distribuidos? De dos ejemplos.
R: Es importante el manejo de la sección crítica donde solo 1 proceso puede entrar a la vez, para
manejar este problema en sistemas distribuidos se elige un coordinador al cual se le debe consultar
si hay un proceso ocupando la sección crítica, de no ser así dicho proceso ocupará la sección crítica y
el coordinador registrará que la sección crítica está siendo usada y que proceso lo está usando. Si
otro proceso intentase hacer uso de dicha sección no podrá porque al consultar al administrador,
éste le indicará que debe esperar hasta que esté libre.
4. ¿En qué se diferencian los algoritmos de elección de los algoritmos de consenso en relación a las
soluciones propuestas para sincronización y manejo de exclusión mutua?
R: en que el algoritmo de elección se basa en elegir a un proceso coordinador cuando un nodo cae
mientras que el algoritmo de consenso están todo el tiempo identificando quien dice la verdad con
respecto a la hora real.
5. Algunas aplicaciones distribuidas necesitan estar sincronizados en el tiempo a través de los
distintos nodos que la conforman. Dentro de los mecanismos de sincronización nos encontramos
con métodos para la sincronización de relojes físicos, como el método de Cristian, y también nos
encontramos con otros métodos para la sincronización de los relojes lógicos como el método de
Lamport. De un ejemplo de caso donde es necesario la sincronización a través de relojes físicos
porque la alternativa de sincronización de relojes lógicos no es aplicable y viceversa.
R: Cuando utilizamos una base de tiempo Universal, se dice que utilizamos Relojes Físicos. Son útiles
en aplicaciones que se manejan eventos secuenciados a alta velocidad, de tal suerte que no hay
recursos disponibles para organizar la sincronización; En ciertos sistemas (por ejemplo, los sistemas
de tiempo real), es importante la hora real del reloj.
Para estos sistemas se necesitan relojes físicos
Para estos sistemas se necesitan relojes físicos
8 seg transcurridos
externos. Por razones de eficiencia y redundancia, por lo general son recomendables varios relojes
físicos, lo cual implica dos problemas:
1.- ¿Cómo sincronizamos los relojes con la hora exacta del mundo real?
2.- ¿Cómo sincronizamos los relojes entre sí?
Los relojes físicos deben ser iguales (estar sincronizados), no deben desviarse del tiempo real más
allá de cierta magnitud. Debido a la distorsión del tiempo y las derivas en los relojes de los distintos
CPU's, en ciertos sistemas es importante la hora real del reloj, por lo que se precisan relojes físicos
externos (más de uno) y se deben sincronizar con los relojes del mundo real.
6. Con respecto a la coordinación y acuerdo de los procesos distribuidos, se vieron en clase los
problemas de la exclusión mutua distribuida; de cómo elegir a un proceso, dentro de un conjunto,
para que desarrolle un papel especial, por ejemplo el de coordinador y de cómo llegar a un
consenso. Los algoritmos propuestos se basan fundamentalmente en el paso de mensajes entre
ellos. ¿Cómo afecta este paso de mensajes en la eficiencia de los algoritmos estudiados?
R: con el algoritmo de Cristian afecta mucho la sincronización porque si son demasiado los equipos a
sincronizar esto puede producir un bajo rendimiento en el funcionamiento de los procesos, por otro
lado el algoritmo de… no afecta mucho en le eficiencia pues este algoritmo no se preocupa por que
todos los equipos tengan la misma hora, sino que solo los procesos que interactúan y que el mensaje
enviado sea consistente con la hora que tiene el equipo actual.
7. El reloj de un computador A tiene la hora de 10:27:50 (hh:mm:ss) y se descubre que esta
adelantado por 4 segundos. ¿Por qué no es recomendable ajustar este reloj atrásándolo a la hora
correcta? Muestre numéricamente como debiera de ser ajustado este reloj de modo que su hora sea
correcta después de transcurridos 8 segundos. Considere que 1 segundo UTC está compuesto por
100 tics de reloj del computador.
R:
Comp. A 10:27:50 ->Adelantado 4 seg
8 seg para corregir error
1 seg = 100 tics Comp. A
Hora Real 10:27:46 10:27:50
Hora Corrección 10:27:54 Corregida 10:27:54
1 seg = 100 tics
4 seg = 800 tics
1 seg = x tics -> 200 tics
Para arreglar la hora, se aconseja a ralentizar el reloj del Comp. A, aumentando los tics en referencia
al valor que tiene para 1 segundo.
El retrasar el reloj nunca debe hacerse, pues se puede confundir a las aplicaciones. Pensemos, como
ejemplo del comando make, si se atrasase el reloj local, podría suceder que en un mismo equipo, la
hora de compilación de un programa fuera anterior a la hora de edición, lo cual confundiría al
comando make.
8. Un cliente intenta sincronizar su computador con un servidor de hora. Para ello, registra los
tiempos de ida y vuelta como también la hora devuelta por el servidor en una tabla. ¿Cuál de estos
registros debiera de utilizarse para sintonizar el reloj? ¿A qué hora debiera de colocarles el
computador del cliente? Estimar la precisión de la sintonización con respecto al reloj del servidor. Si
se sabe que el tiempo entre enviar y recibir un mensaje en el sistema implicado es de al menos 8 ms,
¿cambiaría su respuesta?
Ida y Vuelta (ms) Tiempo (hh:mm:ss)
22 10:54:23,674
25 10:54:25,450
20 10:54:28,342
R: a) Se elige el de menor tiempo de respuesta, ya que su margen de error es menor.
b) 20 ms = 0,02 seg / 2 <- Ida y Vuelta Relativa
Entonces, 10:54:28,342 + 0,01 seg
c) La precisión sería de +- 0,01 seg = 10 ms
d) En ese caso, si el enviar y recibir demora 8 ms (tiempo de proceso), entonces el valor del ida y
vuelta será de 12 ms, el cual daría con un valor de precisión de +- 6 ms, y como es menor al
calculado anteriormente, la respuesta se mantiene, y solamente variaría el valor de la precisión.
9. ¿Qué algoritmo utilizarías para sincronizar los ordenadores de un sistema distribuido que cuenta
con un servidor que dispone de una hora UTC? Comenta las líneas básicas del funcionamiento de
este algoritmo.
R: El algoritmo de Cristian: Periódicamente, cada ordenador cliente envía un mensaje al servidor de
tiempo preguntándole la hora actual. El servidor de tiempo responde con un mensaje que contiene
la hora actual. Cuando el cliente recibe el mensaje, debe actualizar su reloj. Si su hora local es
posterior al tiempo del servidor debe ralentizar la velocidad del reloj hasta ajustarse a la hora UTC (si
a cada interrupción del reloj normalmente se añaden 10 ms. Al contador de tiempo, se empiezan a
añadir solamente 9). Si su hora es anterior a la hora recibida, directamente actualiza su reloj, o bien
lo acelera hasta igualarlo a la hora UTC.
10. En algunos sistemas distribuidos no se dispone de un servidor de tiempo que esté sincronizado
con una hora UTC. ¿Qué algoritmo sincronización horaria se utiliza en estos casos? ¿Qué hace para
establecer la hora de referencia?
R: El algoritmo de Berkeley está pensado para entornos en los que no se dispone de ningún receptor
de tiempo UTC, y lo único que se pretende es que todos los ordenadores se mantengan
sincronizados con una misma hora.
En este algoritmo, entre todos los equipos del sistema distribuido eligen un coordinador para que
actúe como maestro o servidor de tiempo. Cuando los esclavos responden cada uno con su hora
local, el maestro estima los retardos de propagación de los mensajes con cada uno de los esclavos y
calcula un tiempo promedio con las horas recibidas y la suya propia.
Luego, envía a cada uno el desfase que tiene con la hora promedio calculada. Recibido este desfase,
cada equipo actualiza su reloj adelantándolo directamente, o ralentizándolo temporalmente en caso
de ir adelantado.
11. Una de las formas más simples que hay de gestionar la exclusión mutua en un sistema
distribuido es mediante el “algoritmo centralizado”, aunque también se dispone de un algoritmo
distribuido denominado “algoritmo por marcas de tiempo”. ¿Cuál de los dos te parece más
apropiado? ¿Por qué?
R: Ambos algoritmos funcionan de manera similar: hacen una solicitud para el ingreso de la regíón
crítica, por medio de un coordinador, hacia los procesos. Si este proceso quiere entrar, se envía la
orden de ingreso. Si llega un proceso mientras otro está en la RC, se deniega.
La diferencia se genera en que el centralizado el coordinador recibe solicitudes, mientras que el
distribuido por marcas de tiempo envía mensajes a los procesos para el ingreso a la RC.
Ante estos casos, la mejor opción sería el centralizado, ya que aunque se puedan generar problemas
de respuesta o de ingreso a la RC, si uno de los procesos se cae, la de Marca de Tiempo puede causar
este mismo problema, pero n veces debido a la cantidad de nodos que podría manejar este método.
12. Sean dos equipos con relojes físicos que presentan una velocidad de deriva de 1µs y de −1µs
respectivamente. ¿Cada cuánto tiempo, como máximo, deberían sincronizarse estos equipos para
que no difieran más de 1 ms en su hora?
R: Debido a que un equipo difiere en -1µs, y el otro difiere en 1µs, el total de la diferencia sería de
2µs, en el momento que transcurra 1 seg.
Para que 2µs se vuelvan 1ms de diferencia, se hace una regla de 3
1 seg = 2µs = 0,000002 seg
X seg = 1ms = 0,001 seg => 500 seg -> 8:20 minutos. Por lo tanto, la sincronización debe ser a lo más
a los 8 minutos.
13. ¿Cuál es el objetivo que persigue el consenso distribuido? ¿Se puede considerar que los
algoritmos de sincronización de relojes físicos se basan en el consenso distribuido?
R: El objetivo es el de cómo conseguir que un conjunto de procesos (en distintos nodos) se pongan
de acuerdo en el valor de un cierto dato.
Mediante este significado, los relojes físicos al querer ser sincronizados, están siguiendo el mismo
objetivo del consenso distribuido, ya que quieren llegar al mismo valor de la hora para un conjunto
de procesos relacionados.
14. En el algoritmo Bully, un proceso que se está recuperando de un fallo comienza un proceso de
elección y se convierte en el nuevo coordinador si tiene un identificador mayor que el actual
ocupante del cargo. ¿Es necesaria esta carácterística en el algoritmo?
R: Por supuesto que es necesaria ya que ésta funcionalidad le da sentido al algoritmo, el más fuerte
es quien lleva el mando en éste algoritmo, por lo que si un proceso se recupera de un fallo y éste es
el más fuerte será él quien se convierta en el coordinador.
15. ¿Cuáles son las ventajas y desventajas de crear una aplicación cliente servidor utilizando RPC,
RMI y GWT?
RPC RMI GWT
Ventajas Rápidos tiempos de
ejecución
Facilidad para
programar aplicaciones
graficas
Permite depurar código
web
Desventajas No es muy interactivo
gráficamente
Bajos tiempos de
ejecución
Solo sirve para entornos