Sistemas Distribuidos UNIDAD II
2.1 COMUNICACIÓN
La
comunicación entre procesos en sistemas con un único procesador se lleva a cabo
mediante el uso de memoria compartida entre los procesos. En los sistemas
distribuidos, al no haber conexión física entre las distintas memorias de los
equipos, la comunicación se realiza mediante la transferencia de mensajes.
2.1.1 Comunicación
Cliente-Servidor
Sockets
Es
un mecanismo de comunicación, Permite a los sistemas cliente/servidor ser
desarrollados Localmente en una sola máquina A través de redes. Funciones tales
como impresión, utilerías de red, tales como rlogin y ftp, usualmente usan
sockets para comunicarse.
Socket designa un concepto abstracto por el
cual dos programas (posiblemente situados en computadoras distintas) pueden
intercambiarse cualquier flujo de datos, generalmente de manera fiable y
ordenada.
Un
socket queda definido por una dirección IP, un protocolo y un número de puerto.
Explicación
detallada
Para
que dos programas puedan comunicarse entre sí es necesario que se cumplan
ciertos requisitos:
- Que
un programa sea capaz de localizar al otro.
- Que
ambos programas sean capaces de intercambiarse cualquier secuencia de
octetos, es decir, datos relevantes a su finalidad.
- Para
ello son necesarios los tres recursos que originan el concepto de socket:
- Un
protocolo de comunicaciones, que permite el intercambio de octetos.
- Una
dirección del Protocolo de Red (Dirección IP, si se utiliza el Protocolo
TCP/IP), que identifica una computadora.
Un
número de puerto, que identifica a un programa dentro de una computadora.
Los
sockets permiten implementar
una arquitectura cliente-servidor. La comunicación ha de ser iniciada por uno
de los programas que se denomina programa cliente. El segundo programa espera a que otro inicie la
comunicación, por este motivo se denomina programa servidor.
Un
socket es un fichero existente en la máquina cliente y en la máquina servidora,
que sirve en última instancia para que el programa servidor y el cliente lean y
escriban la información. Esta información será la transmitida por las
diferentes capas de red.
2.1.2 Comunicación RPC
Otro paso en el diseño de un sistema operativo
distribuido plantea las llamadas a procedimientos remotos o RPCs. Los RPC
amplían la llamada local a procedimientos, y los generalizan a una llamada a un
procedimiento localizado en cualquier lugar de todo el sistema distribuido. En
un sistema distribuido no se debería distinguir entre llamadas locales y RPCs,
lo que favorece en gran medida la transparencia del sistema.Una de las dificultades más evidentes a las que
se enfrenta el RPC es el formato de los parámetros de los procedimientos. Un
ejemplo es la posibilidad de que en un sistema distribuido formado por
diferentes tipos de ordenadores, un ordenador con formato little endian llamara
a un procedimiento de otro ordenador con formato big endian, etc. Este problema
se podría solucionar si tenemos en cuenta que ambos programas conocen el tipo
de datos de los parámetros, o estableciendo un estándar en el formato de los
parámetros, de forma que sea usado de forma única.
2.1.3 Comunicación en grupo
La
comunicación en grupo tiene que permitir la definición de grupos, así como
características propias de los grupos, como la distinción entre grupos abiertos
o que permiten el acceso y cerrados que lo limitan, o como la distinción del
tipo de jerarquía dentro del grupo. Igualmente, los grupos han de tener
operaciones relacionadas con su manejo, como la creación o modificación.
2.1.4 Tolerancia a fallos
Que el
sistema de archivos sea tolerante a fallos implica que el sistema debe guardar
varias copias del mismo archivo en distintos ordenadores para garantizar la
disponibilidad en caso de fallo del servidor original. Además, se ha de aplicar
un algoritmo que nos permita mantener todas las copias actualizadas de forma
consistente, o un método alternativo que sólo nos permita acceder al archivo
actualizado, como invalidar el resto de copias cuando en cualquiera de ellas se
vaya a realizar una operación de escritura. El uso de memorias cache para
agilizar el acceso a los archivos también es recomendable, pero este caso
requiere analizar con especial atención la consistencia del sistema.
2.2 SINCRONIZACIÓN
El modelo
cliente-servidor basa la comunicación en una simplificación del modelo OSI. Las
siete capas que proporciona producen un desaprovechamiento de la velocidad de
transferencia de la red, con lo que sólo se usarán tres capas: física (1),
enlace de datos (2) y solicitud/respuesta (5). Las transferencias se basan en
el protocolo solicitud/respuesta y se elimina la necesidad de conexión.
2.2.1 Relojes físicos
El algoritmo de
Lamport proporciona un orden de eventos sin ambigüedades, 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
físicos externos (más de uno).
Se deben sincronizar:
Con los relojes del mundo real.
Entre sí.
La medición del
tiempo real con alta precisión no es sencilla.
Desde antiguo el tiempo se ha medido astronómicamente.
Se considera el día
solar al intervalo entre dos tránsitos consecutivos del sol, donde el
tránsito del sol es el evento en que el sol alcanza su punto aparentemente más
alto en el cielo.
El segundo solar
se define como 1 / 86.400 de un día
solar.
Como el período de
rotación de la tierra no es constante, se considera el segundo solar promedio de un gran
número de días.
Los físicos definieron al segundo como el tiempo que tarda el átomo de cesio 133 para
hacer 9.192.631.770 transiciones:
Se tomó este número para que el segundo atómico coincida con el segundo solar promedio de 1958.
2.2.2 Relojes Lógicos
Las computadoras poseen un circuito para el registro del
tiempo conocido como dispositivo reloj.
Es un cronómetro
consistente en un cristal de cuarzo de precisión sometido a una tensión
eléctrica que:
- Oscila
con una frecuencia bien definida que depende de:
- La
forma en que se corte el cristal.
- El
tipo de cristal.
- La
magnitud de la tensión.
- A
cada cristal se le asocian dos registros:
- Registro
contador.
- Registro
mantenedor.
- Cada
oscilación del cristal decrementa en “1” al contador.
- Cuando
el contador llega a “0”:
- Se
genera una interrupción.
- El
contador se vuelve a cargar mediante el registro mantenedor.
- Se
puede programar un cronómetro para que genere una interrupción
“x” veces por segundo.
- Cada
interrupción se denomina marca de reloj.
Para una computadora y un reloj:
- No
interesan pequeños desfasajes del reloj porque:
- Todos
los procesos de la máquina usan el mismo reloj y tendrán consistencia
interna.
- Importan
los tiempos relativos.
Para varias computadoras con sus respectivos relojes:
- Es
imposible garantizar que los cristales de computadoras distintas oscilen
con la misma frecuencia.
- Habrá
una pérdida de sincronía en los relojes (de software), es decir que
tendrán valores distintos al ser leídos.
2.2.3 Uso de la sincronización
La
Oficina Internacional de la Hora en París (BIH)
recibe las indicaciones de cerca de 50 relojes atómicos en el mundo y calcula
el tiempo atómico internacional (TAI).
Como consecuencia de que el día solar promedio (DSP) es cada vez mayor, un día TAI es
3 mseg menor que un DSP:
La BIH
introduce segundos de salto para hacer las correcciones necesarias para
que permanezcan en fase:
El sistema de tiempo basado en los segundos TAI.
El movimiento aparente del sol.
Surge el tiempo coordenado universal (UTC).
El Instituto
Nacional del Tiempo Estándar (NIST)
de EE. UU. y de otros países:
Operan estaciones de radio de onda corta o satélites de
comunicaciones.
Transmiten pulsos UTC con cierta regularidad establecida
(cada segundo, cada 0,5 mseg, etc.).
Se deben conocer con precisión la posición relativa del emisor
y del receptor:
Se debe compensar el retraso de propagación de la señal.
Si la señal se recibe por módem también se debe compensar
por la ruta de la señal y la velocidad del módem.
Se dificulta la obtención del tiempo con una precisión
extremadamente alta.
2.3 NOMINACIÓN
Correspondencia entre objetos de datos lógicos y físicos.
Por ejemplo, los usuarios tratan con objetos de datos lógicos
representados por nombre de archivos, mientras que el sistema manipula bloques
de datos físicos almacenados en las pistas de los discos.
Generalmente un usuario se refiere a un archivo utilizando un nombre, el
cual se transforma en un
identificador numérico de bajo nivel, que a su vez se corresponde con bloques
en disco. Esta correspondencia multinivel ofrece a los usuarios la abstracción
de un archivo, que oculta los detalles de cómo y donde se almacena el archivo
en disco.
Si se extiende un poco mas el
tratamiento de los archivos como abstracciones, llegamos a la posibilidad de
replicas de archivos. Dado un nombre de archivo, la correspondencia devuelve un
conjunto de posiciones de las replicas de este archivo. En esta abstracción se
ocultan tanto la experiencia de copias como su ubicación.
2.3.1 Características y su estructura
Los usuarios tratan con objetos de datos lógicos
representados por nombre de archivos, mientras que el sistema manipula bloques
de datos físicos almacenados en las pistas de los discos.
} Generalmente
un usuario se refiere a un archivo utilizando un nombre, el cual se transforma
en un identificador numérico de bajo nivel, que a su vez se corresponde con
bloques en disco. Esta correspondencia multinivel ofrece a los usuarios la
abstracción de un archivo, que oculta los detalles de cómo y donde se almacena
el archivo en disco.
} Si se extiende un poco mas el tratamiento de
los archivos como abstracciones, llegamos a la posibilidad de replicas de
archivos. Dado un nombre de archivo, la correspondencia devuelve un conjunto de
posiciones de las replicas de este archivo. En esta abstracción se ocultan
tanto la experiencia de copias como su ubicación.
2.3.2 Tipos de Nombres
}
Hay
tres enfoques principales para los esquemas de nominación.
}
En el enfoque más sencillo, los archivos se
nombran con una combinación del nombre de su anfitrión y su nombre local, lo
que garantiza un nombre único dentro de todo el sistema.
} El segundo enfoque popularizado por
el sistema de archivos de red (NFS, Network File System) de sun, ofrece una
forma de unir directorios remotos a directorios locales, lo que da la
apariencia a un árbol de directorios coherentes.
}
El
tercer enfoque es la estructura mas compleja y difícil de mantener en la NFS, ya que cualquier
directorio se puede unir a cualquier árbol de direcciones locales y la
jerarquía resultante puede estar poco estructurada.
2.3.3 Resolución y
distribución
}
Existen
dos conceptos que hay que distinguir en relación con al correspondencia de
nombres en un SD:
}
Transparencia de Nominación: El nombre de archivo no revela ningún indicio
sobre de la ubicación del almacenamiento físico del archivo.
} Independencia de Ubicación: No es necesario modificar el nombre
de un archivo cuando cambia su ubicación en el almacenamiento físico.
2.3.4 Servidores y agentes de
nombre
Para
implantar una nominación transparente se requiere un mecanismo para
correspondencia entre un nombre de archivo y la ubicación asociada. Para que
esta correspondencia sea manejable, hay que agrupar conjuntos de archivos en
unidades componentes y proporcionar la correspondencia según las unidades
componentes, no por archivos.
2.3.5 Mapas de direcciones
}
Existe
una coherencia directa entre los accesos y el tráfico que va y viene del
servidor. De notar que se presenta una analogía directa entre los métodos de
acceso a disco en los sistemas de archivos convencionales y el método de
servicio remoto en un SD. El método de servicio análogo efectúa un acceso al
disco para cada solicitud de acceso.
} Una manera de lograr esta
transferencia es a través del método de servicio remoto, con el cual se
entregan al servidor las solicitudes de acceso, la maquina servidora lleva a
cabo dichos accesos y los usuarios se devuelven al usuario
2.3.6 Mapas de rutas
En un
sistema distribuido, el usar un nombre para los propósitos de la comunicación
no es bastante. Porque los procesos en ejecución se comunican desde diferentes
computadoras. El conocimiento de su localización actual es necesario. Esto
conduce a los términos básicos en esta área: un nombre, una dirección, y una
ruta. El significado de estos términos se puede explicar usando las
definiciones intuitivas siguientes (Shoch 1978):
1. El
nombre de un objeto (por ejemplo, recursos, servidor) específico que el proceso
busca (al qué desea tener acceso)
2. Una
dirección especifica donde ésta
3. Una ruta
especifica cómo esta ahí
Cada uno de
estos identificadores representa un atascamiento más apretado de la
información:
1. Los nombres son mapeados en direcciones.
Este mapeo es necesario para la aplicación en ejecución, puesto que la sintaxis
y la semántica de nombres dependen enteramente de qué tipos de entidades se
están nombrando y también qué uso se está haciendo de ellas; y 2. Las
direcciones son mapeadas en los routeadores.