Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Comunicacin
Para lograr la distribucin de procesos se requiere de
mecanismos que permitan coordinar y controlar la
ejecucin de procesos en ambientes no centralizados,
ya sean de manera local y remota.
Los primeros protocolos para la distribucin de
procesos remotos fueron para mquinas homogneas.
Sockets
Los sockets son el mecanismo de sincronizacin
distribuida ms importante.
Se les denomina conectores por que pueden unir un proceso
cliente y un proceso servidor, de manera semejante a como
se puede unir un enchufe de un dispositivo elctrico con su
respectivo zcalo.
21/09/16
21/09/16
Sockets
Los sockets trabajan sobre la capa 4 (Transporte) del
modelo OSI, aunque algunos autores la ubican en la
capa 5 (Sesin).
Para la comunicacin de procesos remotos se necesita
conocer la direccin de la mquina destino y el puerto
donde se va a escuchar.
Funciones de un servidor
1. Abrir el canal de comunicacin e informar a la red su
direccin y su disposicin para aceptar peticiones de
servicio.
2. Esperar a que un cliente pida un servicio
3. Atender un cliente (servidor interactivo) a la vez o crear
un proceso hijo (servidor concurrente)
4. Volver al punto 2 para esperar nuevas peticiones.
Funciones de un cliente
1. Abrir el canal de comunicaciones y conectarse a
la direccin del servidor.
2. Enviar al servidor un mensaje de peticin de
servicio y esperar hasta recibir la respuesta.
3. Cerrar el canal de comunicaciones y terminar la
ejecucin.
Sockets
Para establecer una comunicacin a travs de
sockets se necesitan 5 requerimientos:
Direccin del servidor
Puerto del servidor
Direccin del cliente
Puerto del cliente
Canal de comunicacin abierto
System.out.println( flujo.readUTF()
RPC
La Comunicacin: RPC
RPC
El nivel de transparencia en RPC es muy alto
ya que el usuario no tiene que ver con detalles
de conexin.
La simplicidad de toda esta heterogeneidad en
el llamado a un procedimiento remoto es
realizado por los stubs (resguardos) tanto en el
cliente como en el servidor.
RPC
Para la transferencia de datos entre los stubs,
se necesita de un proceso de empacar
desempacar los parmetros y resultados.
Los stubs se comunican con los ncleos de
cada proceso logrando una transparencia muy
alta.
RPC
La secuencia de mensajes RPC es la siguiente:
1. El procedimiento cliente llama al stub del cliente de la
manera usual.
2.El stub del cliente construye un mensaje y hace un
sealamiento al ncleo.
3.El ncleo enva el mensaje al ncleo remoto.
RPC
4. El ncleo remoto proporciona el mensaje al stub del
servidor.
5. El stub del servidor desempaca los parmetros y
llama al servidor.
6. El servidor realiza el trabajo y regresa el resultado al
stub.
7. El stub del servidor empaca el resultado en un
mensaje y hace un sealamiento al ncleo.
RPC
8. El ncleo remoto enva el mensaje al ncleo del
cliente.
9. El ncleo del cliente da el mensaje al stub del
cliente.
10. El stub desempaca el resultado y lo regresa al
cliente.
21/09/16
RPC
La semntica de fallas de RPC es la siguiente:
1. El cliente no puede localizar al servidor.
2. Se pierde el mensaje de solicitud del cliente al servidor
3. Se pierde el mensaje de respuestas del servidor al cliente.
4. El servidor falla antes de recibir una solicitud.
5. El cliente falla despus de enviar una solicitud.
Comunicacin en grupo
Una hiptesis subyacente e intrnseca de RPC es que la
comunicacin solo es entre dos partes: el cliente y el servidor.
A veces existen circunstancias en las que la comunicacin es entre
varios procesos y no solo dos:
21/09/16
21/09/16
34
Comunicacin en Grupo
Se define a un grupo como un conjunto de
procesos que actan entre ellos en cierto sistema.
Los grupos son dinmicos, ya que pueden aceptar
nuevos procesos o estos pueden dejar a su grupo.
Los grupos pueden ser abiertos o cerrados
dependiendo de cmo es el paso de mensajes entre
los elementos del grupo.
Comunicacin en Grupo
En base a su organizacin los grupos pueden ser
de compaeros (cuando todos los procesos son
iguales y para hacer elecciones hacen recuento de
votos) o Jerrquico (donde existe un proceso
coordinador y el resto son trabajadores).
Cuando entran nuevos procesos o se salen del
grupo, se debe garantizar que los mensajes lleguen
a los procesos que actualmente conforman el
grupo.
Comunicacin en grupo
Una de las mayores problemticas con respecto a la
comunicacin en Sistemas Distribuidos es la forma en
como podemos comunicar varios procesos
distribuidos a la vez.
La comunicacin tradicional es del tipo puntual
(unicast) o bien hacia todos con el uso de la difusin
(broadcast).
Comunicacin en Grupo
El problema radica en que al hacer un broadcast los
mensajes llegan hacia todas las mquinas y no hay
forma alguna de discriminar hacia un grupo
determinado de procesos.
Por otra parte, el hacer broadcast est limitado en
muchas redes como Internet donde no existe, por este
motivo suele utilizarse la tcnica de multicast.
Comunicacin en Grupo
El problema del multicast es que se
necesitan de direcciones IP especiales
(Clase D) para poderse llevar acabo. En la
prctica se utiliza muy poco y en lugar se
usa comunicacin con datagramas hacia un
grupo de procesos donde la parte ms
importante es la coordinacin entre
procesos.
Tolerancia a fallos
La difusin de los sistemas distribuidos incrementa la
demanda de sistemas que esencialmente nunca fallen.
Los sistemas tolerantes a fallos requerirn cada vez
ms una considerable redundancia en hardware,
comunicaciones, software, datos, etc. La rplica de
archivos sera un requisito esencial.
Tambin debera contemplarse la posibilidad de que
los sistemas funcionen an con la carencia de parte de
los datos. Los tiempos de fallo aceptables por los
usuarios sern cada vez menores.
21/09/16
21/09/16
21/09/16
Tolerancia a fallos
La tolerancia a fallas es considerada la principal
caracterstica que debe de tener un sistema
distribuido para alcanzar el principio de
transparencia.
Para lograr la tolerancia a fallos se necesita de una
buena comunicacin entre procesos distribuidos y
sobretodo de una correcta coordinacin entre
procesos.
Tolerancia a fallos
Un Sistema Distribuido en base a la coordinacin
de sus procesos puede ser:
Asncrono: no hay coordinacin en el tiempo.
Sncrono: se suponen lmites mximos para el
retraso de mensajes.
El primer factor a tomar en cuenta es que el canal
de comunicacin este libre de errores (canal
confiable).
Tolerancia a Fallos
Para garantizar que el canal sea confiable se debe
de realizar lo siguiente:
Retransmisin de mensajes.
Debe haber redundancia de canales
La entrega de un paquete sea dentro de un
tiempo lmite especificado
En general, se considera que los canales de
comunicacin son fiables y que cuando falla la
comunicacin es debido a la cada del proceso.
Tolerancia a Fallos
Las fallas de particin son las fallas de
comunicacin ms importantes ya que fragmentan
la red en pequeas reas llamadas particiones
haciendo imposible el manejo de la consistencia
de los datos.
Son difciles de detectar ya que no son visibles
para todos los nodos de la red.
Tolerancia a Fallas
Las fallas de particin pueden ser muy
comunes por lo que los sistemas de
archivos deben tener un mecanismo que
permita reintegrar los datos una vez
eliminada la particin.
Esta idea atrado como consecuencia el uso
de sistemas de archivos con soporte a
desconexin, los cuales son tiles en
entornos de cmputo mvil.
Tolerancia a Fallos
Tolerancia a Fallos
Tolerancia a Fallos
Para prevenir errores se utilizan los
Detectores de Fallo, los cuales son procesos
que nos indican la presencia de fallos en un
sistema.
Los detectores de fallos no son
necesariamente exactos y la mayora de ellos
se consideran Detectores de Fallo No
Fiables
Tolerancia a Fallos
Este tipo de detectores se basan en que si en un
tiempo mximo predefinido no reciben mensajes
de los nodos, los consideran sospechosos, aunque
no necesariamente han fallado, esto puede ocurrir
debido a retrasos en la transmisin.
Un Detector de Fallas Fiable detecta los fallos en
un sistema en forma exacta y normalmente
requieren de hardware y software adicional.
Sincronizacin
Sincronizacin es la forma de forzar un orden
parcial o total en cualquier conjunto de evento
Se utilizan algoritmos distribuidos para sincronizar
el trabajo comn entre los procesos-
RELOJES FSICOS
El objetivo de la sincronizacin de relojes es
ordenar los eventos en forma cronolgica para
saber cundo se efectu un evento (fecha,
hora, proceso a realizar y computadora que lo
hizo).
Diferencias de relojes internos en una red
8:06
8:05
8:12
8:13
Sincronizacin de relojes
Hay 2 tipos de sincronizacin del reloj:
Externa: Cuando se toma el reloj de un dispositivo
externo a la computadora.
Interna: Se toman los relojes internos de las
computadoras con cierto margen de atraso/adelanto
de los mismos.
Relojes fsicos.
El algoritmo de Lamport proporciona un orden de eventos sin ambigedades,
pero:
Los valores de tiempo asignados a los eventos no tienen porqu ser
cercanos a los tiempos reales en los que ocurren.
En ciertos sistemas (ej.: sistemas de tiempo real ), es importante la hora
real del reloj:
Se precisan relojes fsicos externos (ms de uno).
Se deben sincronizar:
Con los relojes del mundo real.
Entre s.
La medicin del tiempo real con alta precisin no es sencilla. Desde antiguo el
tiempo se ha medido astronmicamente.
Se considera el da solar al intervalo entre dos trnsitos consecutivos del sol,
donde el trnsito del sol es el evento en que el sol alcanza su punto
aparentemente ms alto en el cielo.
21/09/16
59
RELOJES LGICOS
Casi todas las computadoras tienen un circuito
para el registro del tiempo.
En realidad no son relojes en sentido usual.
Cronmetro sera una mejor palabra.
Un cronmetro de computadora es por lo general
un cristal de cuarzo trabajando con precisin.
Cuando se mantiene sujeto a tensin, un cristal de
cuarzo oscila con frecuencia bien definida, que
depende del tipo de cristal, la forma en que se
corte y la magnitud de la tensin.
Para sincronizar los relojes lgicos, Lamport defini la relacin ocurre antes de
(happens-before):
Si a y b son eventos en el mismo proceso y a ocurre antes de b,
entonces a > b es verdadero.
Ocurre antes de es una relacin transitiva:
Si a > b y b > c, entonces a > c.
Si dos eventos x e y estn en procesos diferentes que no intercambian
mensajes, entonces x > y no es verdadero, pero tampoco lo es y > x:
Se dice que son eventos concurrentes.
Necesitamos una forma de medir el tiempo tal que a cada evento a, le podamos
asociar un valor del tiempo C(a) en el que todos los procesos estn de acuerdo:
Se debe cumplir que:
Si a > b entonces C(a) < C(b).
El tiempo del reloj, C, siempre debe ir hacia adelante (creciente), y nunca
hacia atrs (decreciente).
El algoritmo de Lamport asigna tiempos a los eventos.
21/09/16
21/09/16
21/09/16
21/09/16
Uso de la sincronizacin
Se dispone del hardware y software
necesarios para la sincronizacin de relojes a
gran escala (es decir, en todo Internet). Con
esta nueva tecnologa, es posible mantener
millones de relojes sincronizados con UTC,
con precisin de unos cuantos milisegundos.
Apenas comienzan a aparecer nuevos
algoritmos que utilizan relojes sincronizados.
Resumiremos dos de los ejemplos analizados
por Liskov (1993)
Manejo de cache
La cach es un rea de memoria utilizada
para agilizar los procesos de lecturaescritura.
El ejemplo ms conocido es la cach de los
servidores Proxy Web, los cuales almacenan
las pginas visitadas por los usuarios. As
cuando un cliente pide una pgina, se revisa
si est en la cache agilizando la navegacin
y reduciendo el ancho de banda.
Exclusin mutua
La exclusin mutua garantiza que slo un
proceso est en una regin crtica.
La exclusin mutua en sistemas distribuidos
basa su funcionamiento en variantes de
sistemas centralizados.
Cuando un proceso distribuido desea entrar a
una regin crtica debe de enviar la solicitud a
todos los dems procesos recibiendo
respuestas de todos.
Exclusin Mutua
Cuando un proceso debe leer o
actualizar ciertas estructuras de datos
compartidas: Primero ingresa a una regin
crtica para lograr la exclusin mutua y
garantizar que ningn otro proceso utilizar las
estructuras de datos al mismo tiempo.
En sistemas monoprocesadores las
regiones crticas se protegen con semforos,
monitores y similares. En sistemas distribuidos
la cuestin es ms compleja.
21/09/16
Un Algoritmo Centralizado
La forma ms directa de lograr la exclusin mutua
en un sistema distribuido es simular a la forma en
que se lleva a cabo en un sistema monoprocesador.
Se elige un proceso coordinador. Cuando un
proceso desea ingresar a una regin crtica:
Un Algoritmo Distribuido
El objetivo es no tener un nico punto de fallo (el
coordinador central). Un ej. es el algoritmo de Lamport
mejorado por Ricart y Agrawala. Se requiere un orden total
de todos los eventos en el sistema para saber cul ocurri
primero.
Cuando un proceso desea entrar a una regin crtica:
21/09/16
Algoritmo de Cristian
21/09/16
Algoritmo de Berkeley
En el algoritmo de Cristian el servidor de tiempo
es pasivo. En el algoritmo de Berkeley el
servidor de tiempo:
Es activo.
Realiza un muestreo peridico de todas las
mquinas para preguntarles el tiempo.
Con las respuestas:
Calcula un tiempo promedio.
Indica a las dems mquinas que avancen su reloj o
disminuyan la velocidad del mismo hasta lograr la
disminucin requerida.
Algoritmos de eleccin
Una forma ms sencilla de llevar acabo la
sincronizacin es a travs de la eleccin de un
coordinador encargado de centralizar la decisin de
dar acceso a la regin crtica.
Existen varios algoritmos. Entre ellos el del granduln.
Este algoritmo consiste en que un proceso enva la
solicitud si nadie responde se convierte en
coordinador, si varios responden ser coordinador
aquel que tenga mayor prioridad.
Transacciones Atmicas
Un esquema para garantizar la adecuada
sincronizacin de la informacin en sistemas
centralizados como distribuidos son el uso de
transacciones.
Las transacciones manejan 4 propiedades bsicas:
atmicas, consistentes, aisladas y durables (ACID
por sus siglas en ingls).
Interbloqueo
Surge cuando un proceso busca el recurso
ocupado por otro proceso y a su vez este
proceso busca otro recurso, formado una
cadenita que al final se cierra, por lo cual
ningn proceso puede avanzar.
Se manejan variantes de algoritmos
centralizados para tratar de detectar,
prevenir y eliminar interbloqueos.