martes, 17 de abril de 2012

UNIDAD 2: COMUNICACIÓN EN LOS SISTEMAS OPERATIVOS DISTRIBUIDOS


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.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