miércoles, 13 de julio de 2011

Unidad II Comunicación en los sistemas operativos distribuidos

2.1 Comunicación Sod
Llamada a procedimiento remoto (RPC)

En el anterior epígrafe hemos estudiado un modelo de interacción entre los procesos de un sistema distribuido que es el modelo cliente-servidor. Para implementarlo, el sistema dispone de dos llamadas al sistema, send y receive, que las aplicaciones utilizan de forma conveniente. Estas primitivas, a pesar de constituir la base de la construcción de los sistemas distribuidos, pertenecen a un nivel demasiado bajo como para programar de forma eficiente aplicaciones distribuidas.

2.1.1 Comunicacion Cliente Servidor Sockets

Cliente-Servidor es el modelo que actualmente domina el ámbito de comunicación, ya que descentraliza los procesos y los recursos. Es un Sistema donde el cliente es una aplicación, en un equipo, que solicita un determinado servicio y existe un software, en otro equipo, que lo proporciona.

Los servicios pueden ser;

a)      Ejecución de un programa. b)Acceso a una Base de Datos. c)Acceso a un dispositivo de hardware.

Solo se requiere un medio físico de comunicación entre las maquinas y dependerá de ala naturaleza de este medio la vialidad del sistema.

Definición de 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.

Los sockets proporcionan una comunicación de dos vías, punto a punto entre dos procesos. Los sockets son muy versátiles y son un componente básico de comunicación entre interprocesos e intersistemas. Un socket es un punto final de comunicación al cual se puede asociar un nombre.

Para lograr tener un socket es necesario que se cumplan ciertos requisitos

1.Que un programa sea capaz de localizar al otro.
 2.Que ambos programas sean capaces de intercambiarse información.

Por lo que son necesarios tres recursos que originan el concepto de socket

a) Un protocolo de comunicaciones, que permite el intercambio de octetos.

b) Una dirección del Protocolo de Red (Dirección IP, si se utiliza el Protocolo TCP/IP), que identifica una computadora.

c) Un número de puerto, que identifica a un programa dentro de una computadora. Con un socket se logra implementar una arquitectura cliente-servidor. la comunicación es iniciada por uno de los programas (cliente). Mientras el segundo programa espera a que el otro inicie la comunicación (servidor). Un Socket es un archivo existente en el cliente y en el servidor.

Si un socket es un punto final de un puente de comunicaron de dos vías entre dos programas que se comunican a través de la red, ¿Cómo funciona?. Normalmente, un servidor funciona en una computadora específica usando un socket con un número de puerto específico. El cliente conoce el nombre de la maquina (hostname) o el IP, en la cual el servidor está funcionando y el número del puerto con el servidor está conectado.

Si el cliente lanza una demanda de conexión y el servidor acepta la conexión, este abre un socket en un puerto diferente, para que pueda continuar escuchando en el puerto original nuevas peticiones de conexión, mientras que atiende a las peticiones del cliente conectado. El cliente y el servidor pu8eden ahora comunicarse escribiendo o leyendo en sus respectivos sockets.


Los tipos de socket definen las propiedades de comunicación visibles para la aplicación. Los procesos se comunican solamente entre los sockets del mismo tipo. Existen cinco tipos de sockets.

El Cliente actúa de la siguiente forma.

1)      Establece una conexión con el servidor (Crea un socket con el servidor).

2)      Mandar mensajes al servidor o Esperar un mensaje de él. 

3)      Esperar su respuesta o contestarle (existen casos en que este paso no es necesario).

4)      Repetir los pasos 2 y 3 mientras sea necesario.

5)      Cerrar la conexión con el servidor.
2.1.2 Comunicacion con Rpc

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

El stub cliente reúne luego los parámetros y los empaqueta en un mensaje. Esta operación se conoce como reunión de argumentos (parameter marshalling). Después que se ha construido el mensaje, se lo pasa a la capa de transporte para su transmisión (paso 2). En un sistema LAN con un servicio sin conexiones, la entidad de transporte probablemente sólo le agrega al mensaje un encabezamiento y lo coloca en la subred sin mayor trabajo (paso 3). En una WAN, la transmisión real puede ser más complicada.
2.1.3 Comunicacion en Grupo

La comunicación se clasifica deacuerdo al numero de usuarios alos que se le a enviado el mensaje.

-broadcast o difusion forzada un nodo emite todos los escuchan y solo contesta a quien va dirigido el mensaje

-multicast se entrega el msj a todos los anfitriones host que están compuestos de ciertas características.

-unicast o pointcast un nodo emite y otro recibe, solo escucha aquel a quien se dirigió el msj.

una clasificación adicional es la realizada en base a grupos

-listas de destinarios se tiene una lista de aquellos alos que se les enviara el mensaje.

-identificador de grupo se forman grupos y el msj es dirigido solo a los miembros de ese grupo.

-predicador de pertenencia se envía y otro recibe, solo escucha aquel a quien se dirigió el mensaje.

2.1.4 Tolerancia a Fallos
  1. Una caracteristica de los sistemas distribuidos, quelos difiere de los sistemas singulares, es la nocion para errores parciales. Un error parcial puede ocurrir cuando algun componente del sistema distrbuido falla, el fallo puede afectar el correcto funcionamiento de algunos componentes, pero a la vez dejar otros componentes sin afectarlos. A contrario de un sistema monousuario , el cual puede afectar a todo el sistema, apagandolo. Un punto importante en los sistemas distrbuidos , es contruirlos de tal forma que puede recupersarse automaticamente de fallos sin afectar el rendimiento Cuando un error ocurre el sistema deberia seguir operando de forma aceptable mientras se hacen las reparaciones.
  2. Para que un sistema distribuido pueda ser tolerante a fallos, se ocupan las siguientes caracteristicas: Disponibilidad Confiabilidad Seguridad Mantenimiento.
  3. Es definida por la propiedad de que el sistema esta listo para ser usado, en otras palabras se endiende que el sistema esta operando correctamente. Un sistema con alta disponibilidad es quel que puede trabajar en cualquier tiempo Se refiere a la propiedad de que el sistema puede trabajar continuamente sin fallos, en contraste a la disponibilidad, la confiabilidad se refiere en lapsos de tiempo, en vez de momentos instantaneos. Un sistema con alta confiabilidad, es quel que funciona por largos periodos de tiempo sin fallo algiuno.
  4. Se refiere a la situacion en la que un sistema falla temporalmente, no pasa nada grave, ejemplo son algunos sistemas que controlan plantas nucleares, si algunos de esos sitemas fallan, pueden traer consecuencias catastroficas. Se refiere a que tan rapido puede ser repadao un sitema . Un sistema con alto grado de mantenimiento es quel, que puede evitar o reparar fallas automaticamente.
  5. Transientales Intermitentes Permantes
  6. Son aquellos fallos que aparecen una vez y despues desaperecen aun cuando la misma operacion se repite. Son aquellos fallos que aparecen una vez y despues desaperecen y despues vuelven a aparecer y continua el siclo. Son aquellos fallos que aparecen y no desaparecen hasta que el componente erroneo es reemplazado o es arreglado el problema.
  7. TIPO DE FALLO DESCRIPCION FALLO CRASH El servidor se detiene, pero estaba operando correctamente. Fallo por Omision Omision de recibido Omision de envio Un servidor falla en responder a las peticiones El servidor falla en recibir mensajes El servidor falla en mandar mensajes Fallo de tiempo La respuesta del servidor no esta en el intervalo de tiempo especificado. Fallo de respuesta Fallo de valor Fallo de estado de transicion La respuesta del servidor es incorrecta El valor de la respuesta es incorrecto El servidor se desvia del flujo de control Fallo arbitriario El servidor produce fallos arbitrarios en tiempo indefinidos.
  8. Ocurre cuando el servidor se detiene prematuramente aun cuando instantes antes estaba funcionando correctamente, un aspecto importante de estos errores es que una vez que ocurren ya no responde el servidor. Ocurre cuando el servidor no responde y se puede deber a varias razones, una de las principales es que no se establecio correctamente la conexion con el servidor.
  9. Ocurren cuando se da la respuesta fuera del intervalo de tiempo Cuando ocurren este tipo de fallos, usualmente el servidor lanza respuestas incorrectas y que son dificiles de detectar
  10. Si un sistema debe ser tolerante a fallos, lo mejor que puede hacer es esconder esos errores de otros procesos. La tecnicla clave es usando la Redundancia. Los tipos de redundancia a usar: Redundancia de tiempo Redundancia de Informacion Redundancia fisica
2.2 Sincronizacion Sistemas Distribuidos

En sistemas con una única CPU las regiones críticas, la exclusión mutua y otros problemas de sincronización son resueltos generalmente utilizando métodos como semáforos y monitores. Estos métodos no se ajustan para ser usados en sistemas distribuidos ya que invariablemente se basan en la existencia de una memoria compartida.

No es posible reunir toda la información sobre el sistema en un punto y que luego algún proceso la examine y tome las decisiones.

En general los algoritmos distribuidos tienen las siguientes propiedades:

1)- la información relevante está repartida entre muchas máquinas

2)- los procesos toman decisiones basadas solamente en la información local disponible

3) - debería poder evitarse un solo punto que falle en el sistema

4)- no existe un reloj común u otro tiempo global exacto

Si para asignar un recurso de E/S un proceso debe recolectar información de todos los procesos para tomar la decisión esto implica una gran carga para este proceso y su caída afectaría en mucho al sistema.

2.2.1 Relojes Fisicos

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. 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.2.2 Relojes Logicos

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:

ü  Al 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. 
2.3 Nominacion caracteristicas y Estructuras

La nominación es una 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.

En un SAD transparente se agrega una nueva dimensión de abstracción ..: la ocultación de la ubicación de los archivos de la red. En un sistema de archivos convencionales la función de nominación produce como resultado un intervalo de direcciones en disco, en un SAD este intervalo crece para incluir la máquina especifica en cuyo disco se almacena el archivo. 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.

Estructuras de Nominación ..:

Existen dos conceptos que hay que distinguir en relación con al correspondencia de nombres en un SAD.

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.

Esquema de Nominación ..:

Hay tres enfoques principales para los esquemas de nominación en un SAD. En el enfoque mas 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. Por ejemplo, en Ibis, un archivo se identifica de manera única con el Nombre Anfitrión Local, donde nombre local es una ruta semejante a las de UNIX.


Para poder ejecutar instrucciones, si no sabemos en qué parte de la memoria estarán cargadas, debemos tener un mecanismo de traducción de direcciones virtuales a reales. Para ello, se necesitan dos cosas. Primero, el compilador manejará una dirección base más un desplazamiento al referirse a las instrucciones. Segundo, el sistema operativo asignará como dirección base el número de página, al paginar al proceso. De esta manera, puede buscarse el inicio de una página en memoria, sumarle el desplazamiento y así obtener la dirección real de una instrucción.

Nótese que en el diagrama se tiene una tabla de proceso y ahí mismo se maneja la dirección inicial de la tabla de páginas. En algunos sistemas operativos, estas dos tablas se manejan por separado.

La traducción de direcciones virtuales para segmentos se maneja de manera similar.

Existe un esquema adicional, paginación/segmentación, que es la combinación de ambos. La memoria se divide en marcos de página, idealmente más pequeños que el tamaño del marco de página en un sistema de paginación tradicional. Cada segmento está compuesto por cierto número de páginas. Es decir, el tamaño del segmento es un múltiplo del tamaño de página. Este esquema pretende sacar ventaja de los beneficios de los otros dos. Este mismo mecanismo de traducción de direcciones virtuales puede aplicarse en paginación/segmentación.

Recordemos que este mapeo debe efectuarse siempre, instrucción por instrucción ejecutada. Por ello, entre más rápido sea el mecanismo, mejor. Existe una manera de mejorar dicho mecanismo mediante hardware.

Una memoria asociativa es muy cara, pero permite buscar en toda la memoria en un mismo pulso de reloj. Implementando memoria asociativa, podemos traducir direcciones para páginas o segmentos.

Sin embargo, el utilizar memoria asociativa implica que el número de marcos de página y/o el número de segmentos, se ve limitado por el tamaño de la memoria asociativa. Es decir, no puede haber más marcos de página que número de celdas en la memoria asociativa. Por ello, hay sistemas operativos que manejan una combinación de ambos. Se cargan a memoria las páginas/segmentos más utilizados, y la traducción se utiliza de manera normal. Solamente en aquellos casos en los que no encontrara la página/segmento en la memoria asociativa, efectuaría la traducción directa. Para esa instrucción, haría un doble mapeo. Sin embargo, el principio de localidad nos asegura que esto no sucederá con frecuencia.

No hay comentarios:

Publicar un comentario