2.1 Comunicación.
2.1.1 Comunicación con cliente servidor (sockets).
2.1.2 Comunicación con RPC.
2.1.3 Comunicación en grupo.
2.1.4 Tolerancia a fallos.
2.1.1 Comunicación con cliente servidor (sockets).
2.1.2 Comunicación con RPC.
2.1.3 Comunicación en grupo.
2.1.4 Tolerancia a fallos.
2.2 Sincronización.
2.2.1 Relojes físicos.
2.2.2 Relojes lógicos.
2.2.3 Usos de la sincronización (manejo de caché, comunicación en grupo, exclusión mutua, elección, transacciones atómicas e interbloqueo).
2.3 Nominación.
2.3.1 Características y estructuras.
2.3.2 Tipos de nombres (usuario y de sistema).
2.3.3 Resolución y distribución.
2.3.4 Servidores y agentes de nombres.
2.3.5 Mapeo de direcciones.
2.3.6 Mapeo de rutas.
2.3.7 Modelo de Terry.
2.1. Comunicación
La diferencia más importante
entre un sistema distribuido y un sistema de un único procesador es la
comunicación entre procesos. En un sistema de un solo procesador la
comunicación supone implícitamente la existencia de la memoria compartida:
Ejemplo .: problema de los
productores y los consumidores, donde un proceso escribe en un buffer
compartido y otro proceso lee de él.
En un sistema distribuido no existe
la memoria compartida y por ello toda la naturaleza de la comunicación entre
procesos debe replantearse. Los
procesos, para comunicarse, deben apegarse a reglas conocidas como protocolos. Para los sistemas distribuidos en un área
amplia, estos protocolos toman frecuentemente la forma de varias capas y cada
capa tiene sus propias metas y reglas.
2.1.1 Comunicación con cliente servidor (sockets).
El “modelo cliente - servidor” tiene como idea fundamental
la estructuración del S. O. como:
- Un grupo de procesos en cooperación, llamados servidores, que ofrecen servicios a los usuarios.
- Un grupo de procesos usuarios llamados clientes.
- El “modelo cliente - servidor” se basa en un “protocolo solicitud / respuesta”:
- Es sencillo y sin conexión.
- No es complejo y orientado a la conexión como OSI o TCP / IP.
- El cliente envía un mensaje de solicitud al servidor pidiendo cierto servicio.
El servidor:
- Ejecuta el requerimiento.
- Regresa los datos solicitados o un código de error si no pudo ejecutarlo correctamente.
- No se tiene que establecer una conexión sino hasta que ésta se utilice.
- La pila del protocolo es más corta y por lo tanto más eficiente.
2.1.2
Comunicación Con RPC (Remote Procedure
Call)
El mecanismo general para las
aplicaciones cliente-servidor se proporciona por el paquete Remote Procedure
Call (RPC). RPC fue desarrollado por Sun Microsystems y es una colección de
herramientas y funciones de biblioteca. Aplicaciones importantes construidas
sobre RPC son NIS, Sistema de Información de Red y NFS, Sistema de Ficheros de
Red. Un servidor RPC consiste en una colección de procedimientos que un cliente
puede solicitar por el envío de una petición RPC al servidor junto con los
parámetros del procedimiento. El servidor invocará el procedimiento indicado en
nombre del cliente, entregando el valor de retorno, si hay alguno. Para ser
independiente de la máquina, todos los datos intercambiados entre el cliente y
el servidor se convierten al formato External Data Representation (XDR) por el
emisor, y son reconvertidos a la representación local por el receptor. RPC
confía en sockets estandard UDP y TCP para transportar los datos en formato XDR
hacia el host remoto. Sun amablemente a puesto RPC en el dominio público; se
describe en una serie de RFCs.
La comunicación entre servidores
RPC y clientes es un tanto peculiar. Un servidor RPC ofrece una o más
colecciones de procedimientos; cada conjunto se llama un programa y es
idenficado de forma única por un número de programa. Una lista que relaciona
nombres de servicio con números de programa se mantiene usualmente en /etc/rpc.
2.1.3 Comunicación en Grupo
Conceptualizamos la comunicación
como el medio que permite acciones mutuas entre las personas. Existe
comunicación cuando una persona influye sobre el comportamiento de otra,
incluso sin hablar. Mientras más sentidos intervengan, mejor será la
comunicación.
Comunicar es poner en común. Uno
comunica sentimientos, ideas, datos…. En general el
término se refiere a cosas inmateriales, o mejor dicho “inasibles”. Cuando son bienes en tres dimensiones se utiliza mejor el
término “intercambio”. Esto no
quita que algunos especialistas generalicen y se refieran a “comunicación” para nombrar cualquier clase de interacción. Pero me parece
complicar las cosas. Así que, si no hay objeciones, dejemos esta palabra para
significar cualquier clase de intercambio de bienes no-materiales,
preferentemente información.
En la teoría de la información se
designan convencionalmente a un Emisor y a un Receptor que se representan
gráficamente unidos por una doble flecha. Ésta indica que sólo se puede hablar
de comunicación, en el estricto sentido de la palabra, cuando el R tiene la
ocasión de poder reaccionar al mensaje del emisor.
- BROADCAST O DIFUSION FORZADA: Transmisión de un paquete que será recibido por todos los dispositivos en una red.
- MULTICAST: Consiste en la entrega de paquetes a través de una red a varios destinos de forma simultánea evitando al máximo el duplicar los paquetes, esto es, se duplican paquetes exclusivamente cuando se bifurca el camino a los diferentes destinos finales.
- UNICAST o POINTCAST: Un nodo emite y otro recibe, solo escucha aquel a quien se dirigió el mensaje. Una clasificación adicional es la realizada en base a grupos
2.1.4 Tolerancia a Fallos
La tolerancia a fallas es
considerada la principal característica que debe de tener un sistema
distribuido para alcanzar el principio de transparencia. Para lograr la
tolerancia a fallos se necesita de una buena comunicación entre procesos
distribuidos y sobretodo de una correcta coordinación entre procesos. Un
Sistema Distribuido en base a la coordinación de sus procesos puede ser:
- Asíncrono: no hay coordinación en el tiempo.
- Síncrono: se suponen límites máximos para el retraso de mensajes.
El primer factor a tomar en cuenta es que el canal de
comunicación este libre de errores (canal confiable). Para garantizar que el
canal sea confiable se debe de realizar lo siguiente:
- Retransmisión de mensajes.
- Debe haber redundancia de canales
- La entrega de un paquete sea dentro de un tiempo límite especificado
En general, se considera que los
canales de comunicación son fiables y que cuando falla la comunicación es
debido a la caída del proceso.
Algunos fallos en el funcionamiento de un sistema pueden originarse
por:
- Especificaciones impropias o con errores.
- Diseño deficiente de la creación del software o el hardware.
- Deterioros o averías en al hardware.
Prevención y Tolerancia a Fallos
Existen dos formas de aumentar la
fiabilidad de un sistema.
1. Prevención de fallos: Se trata
de evitar que se implementen sistemas que pueden introducir fallos.
2. Tolerancia a fallos: Se trata
de conseguir que el sistema continué funcionando correctamente aunque se
presenten algunos fallos.
2.2 Sincronización
La sincronización de procesos en
los sistemas distribuidos resulta más compleja que en los centralizados, debido
a que la información y el procesamiento se mantiene en diferentes nodos. Un
sistema distribuido debe mantener vistas parciales y consistentes de todos los
procesos cooperativos.
2.2.1
Relojes Físicos
- Los relojes físicos son relojes que: Deben ser iguales (estar sincronizados).
- No deben desviarse del tiempo real más allá de cierta magnitud.
- En ciertos sistemas 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.
2.2.2
Relojes lógicos
El software del reloj lógico
El software para el reloj toma
generalmente la forma de un manejador de dispositivo, aunque no es un
dispositivo de bloque. Las principales
funciones del software manejador del reloj son:
- Mantener la hora del día o tiempo real
- Evitar que los procesos se ejecuten durante más tiempo del permitido.
- Mantener un registro del uso del CPU.
§ Controlar
llamadas al sistema tipo "alarm" por parte de los procesos del
usuario.
§ Proporcionar
cronómetros guardianes de partes del propio sistema
§ Realizar
resúmenes, monitoreo y recolección de estadísticas.
2.2.3 Usos de la sincronización manejo de
cache, comunicación en grupo exclusión mutua elección transacciones atómicas e
interbloqueo
Sincronización: La sincronización
es la coordinación de procesos que se ejecutan simultáneamente para completar
una tarea, con el fin de obtener un orden de ejecución correcto y evitar así
estados inesperados.
Memoria Caché: En los sistemas de
archivos convencionales, el fundamento para la memoria caché es la reducción de
la E/S de disco (lo que aumenta el rendimiento), en un SAD el objetivo es
reducir el tráfico en la red.
La copia de memoria caché: Conservar
allí los bloques de disco de acceso más reciente, para así manejar localmente
los accesos repetidos a la misma información y no aumentar el tráfico de la
red. La caché es un área de memoria utilizada para agilizar los procesos de
lectura-escritura.
Exclusión mutua: La condición de
exclusión mutua se aplica a los os que no pueden ser compartidos. Por ejemplo,
varios procesos no pueden compartir simultáneamente una impresora. Los archivos
de sólo lectura son un buen ejemplo de recurso que puede compartirse. Si varios
procesos intentan abrir un archivo de sólo lectura al mismo tiempo, puede
concedérseles acceso al archivo de forma simultánea. Un proceso no necesita
esperar nunca para acceder a un recurso compartible
Algoritmos de Elección: Son los
algoritmos para la elección de un proceso coordinador, iniciador, secuenciador.
El objetivo de un algoritmo de elección es garantizar que iniciada una elección
ésta concluya con el acuerdo de todos los procesos con respecto a la identidad
del nuevo coordinador.
Transacción atómica, transacción
o acción atómica: La principal propiedad de la transacción atómica es el “todo
o nada”: O se hace todo lo que se tenía que hacer como una unidad o no se hace
nada.
Un esquema para garantizar la
adecuada sincronización de la información en sistemas centralizados como
distribuidos es el uso de transacciones.
Las transacciones manejan 4
propiedades básicas: atómicas, consistentes, aisladas y durables (ACID por sus
siglas en inglés).
Las primitivas de las
transacciones son:
- BEGIN_TRANSACTION (inicio de transacción)
- END_TRANSACTION (fin de transacción)
- ABORT_TRANSACTION (deshacer operación)
- READ (leer datos de un archivo u objeto)
- WRITE (escribir datos a un archivo u objeto)
Interbloqueo: Una situación de interbloqueo
tiene lugar cuando ninguno de los procesos que compiten. Por los recursos del
sistema o interactúan entre sí puede avanzar por carecer de algún recurso o
esperar a que se produzca algún tipo de evento.
2.3 Nominación
En los sistemas distribuidos los nombres hacen
referencia a cualquier entidad, ya sea un archivo, un periférico, un proceso,
etc. que se pueden encontrar en máquinas remotas. Los servidores de nombres
ayudan a localizar fácilmente y hacer transparente el acceso a los recursos
(transparencia de localización).
2.3.1 Características y estructuras
Un nombre es más que una cadena de caracteres.
Representa un punto de acceso hacia un objeto. La característica principal de
un sistema de nombre es que no debe de presentar ambigüedades, para un momento
dado, un nombre refiere a uno y sólo un recurso en el sistema.
2.3.2 Tipos de nombres usuario y de sistema
En el contexto de la informática,
un usuario es aquel que utiliza un sistema informático. Para que los usuarios
puedan obtener seguridad, acceso al sistema, administración de recursos, etc,
dichos usuarios deberán identificarse. Para que uno pueda identificarse, el
usuario necesita una cuenta (una cuenta de usuario) y un usuario, en la mayoría
de los casos asociados a una contraseña. Los usuarios utilizan una interfaz de
usuario para acceder a los sistemas, el proceso de identificación es conocido
como identificación de usuario o acceso del usuario al sistema (del inglés:
"log in").
Los usuarios se caracterizan por
ser el tipo de personas que utilizan un sistema sin la amplia experiencia
necesaria que se requiere para entender al sistema (en oposición al técnico,
hacker u otro perfil que sí se presupone conoce dicho sistema). En el contexto
hacker, se les denomina usuarios reales.
Los usuarios de informática son
muy similares a los usuarios en telecomunicaciones, pero con algunas pequeñas
diferencias semánticas. La diferencia es comparable a la diferencia que existe
entre un usuario final y los consumidores en la economía.
Por ejemplo, uno puede ser un
usuario (y tener una cuenta) de un sistema informático, una red de computadoras
ó tener una cuenta de correo electrónico.
2.3.3
Resolución y distribución
RESOLUCIÓN DE NOMBRES DE DOMINIO
El mecanismo que consiste en
encontrar la dirección IP relacionada al nombre de un ordenador se conoce como
"resolución del nombre de dominio". La aplicación que permite
realizar esta operación (por lo general, integrada en el sistema operativo se
llama "resolución".
Cuando una aplicación desea
conectarse con un host conocido a través de su nombre de dominio (por ejemplo,
"es.kioskea.net"), ésta interroga al servidor de nombre de dominio
definido en la configuración de su red. De hecho, todos los equipos conectados
a la red tienen en su configuración las direcciones IP de ambos servidores de
nombre de dominio del proveedor de servicios.
Entonces se envía una solicitud
al primer servidor de nombre de dominio (llamado el "servidor de nombre de
dominio principal"). Si este servidor de nombre de dominio tiene el
registro en su caché, lo envía a la aplicación; de lo contrario, interroga a un
servidor de nivel superior (en nuestro caso un servidor relacionado con el TLD
".net"). El servidor de nombre de nivel superior envía una lista de
servidores de nombres de dominio con autoridad sobre el dominio (en este caso,
las direcciones IP de los servidores de nombres de dominio principal y
secundario para cómofunciona.net).
Entonces el servidor de nombres
de dominio principal con autoridad sobre el dominio será interrogado y
devolverá el registro correspondiente al dominio del servidor (en nuestro caso
www).
DISTRIBUCIÓN
Una distribución de software incluye
determinados paquetes de software para satisfacer las necesidades de un grupo
específico de usuarios, dando así origen a ediciones domésticas, empresariales
y para servidores. Por lo general están compuestas, total o mayoritariamente,
de software libre, aunque a menudo incorporan aplicaciones o controladores propietarios.
2.3.4 Servidores y agentes de nombres
Un agente de usuario es una aplicación
informática que funciona como cliente en un protocolo de red; el nombre se
aplica generalmente para referirse a aquellas aplicaciones que acceden a la World
Wide Web. Los agentes de usuario que se conectan a la Web pueden ser desde navegadores
web hasta los web crawler de los buscadores, pasando por teléfonos móviles, lectores
de pantalla y navegadores en Braille usados por personas con discapacidades.
Cuando un usuario accede a una página
web, la aplicación generalmente envía una cadena de texto que identifica al
agente de usuario ante el servidor. Este texto forma parte del pedido a través
de HTTP, llevando como prefijo User-agent: o User-Agent: y generalmente incluye
información como el nombre de la aplicación, la versión, el sistema operativo,
y el idioma. Los bots, como los web crawlers, a veces incluyen también una URL
o una dirección de correo electrónico para que el administrador del sitio web
pueda contactarse con el operador del mismo. La identificación de agente de
usuario es uno de los criterios de exclusión utilizado por el Estándar de
exclusión de robots para impedir el acceso a ciertas secciones de un sitio web.
VERIFICACIÓN DEL AGENTE DE
USUARIO
La verificación del agente de
usuario —técnica más conocida por su nombre en inglés, user
agent sniffing— se refiere a la costumbre de ciertos
sitios web de mostrar contenidos diferentes según el agente de usuario; en
Internet, esto implica mostrar diferentes contenidos según el navegador web. Un
triste ejemplo de esta práctica es Outlook 2003 Web Access, de Microsoft;
Internet Explorer tiene acceso a funcionalidades no disponibles si se accede
con otro navegador web. La verificación y consecuente discriminación según el
agente de usuario es considerada generalmente una mala costumbre, porque
implica un diseño diferente para cada situación. Generalmente se les recomienda
a los responsables de sitios web que utilizan código HTML respetar tanto como
sea posible los estándares para lograr un resultado similar con navegadores
diferentes.
2.3.5 Mapeo de direcciones
El mapeo de direcciones corresponde en la relación de
equivalencia entre un tipo de nombre a otro tipo de nombre; por ejemplo, de un
nombre de usuario a un nombre de sistema.
2.3.6 Mapeo de rutas
- El mapeo de rutas consiste en la relación de equivalencia entre un tipo de ruta u otro tipo.
- Recordar que las rutas consiste en la serie de ubicaciones para poder acceder a un recurso.
- Otro nombre que recibe el mapeo de rutas es el de encaminamiento.
2.3.7 Modelo de Terry
El problema principal de
cualquier sistema de nombre reside en encontrar de manera fácil, sencilla y
rápida cualquier recurso a través del identificador (nombre) dado. Para solucionar
este problema, Terry y otros propusieron un modelo de facilidades que debe de
poseer todo sistema de nombres, dichas características son las siguientes:
- Facilidad centralizada de nombramiento
- Facilidad replegada de nombramiento
- Facilidad descentralizada de nombramiento
- Facilidad distribuida de nombramiento
- Facilidad jerárquica de nombramiento
No hay comentarios:
Publicar un comentario