ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Introducción A Los Sistemas Distribuidos (resumen)


Enviado por   •  12 de Junio de 2014  •  2.850 Palabras (12 Páginas)  •  408 Visitas

Página 1 de 12

Introducción a los sistemas

Distribuidos (resumen).

1.1.1 Tipos de sistemas

•Sistemas de lotes. Son los primeros sistemas operativos, que permitían procesar en diferido y secuencialmente datos suministrados en paquetes de tarjetas perforadas.

•Sistemas centralizados de tiempo compartido. Fue el siguiente paso, a mediados de los 60. El objetivo es incrementar la eficiencia en el uso de la

CPU, un recurso entonces caro y escaso.

•Sistemas de teleproceso. Se diferencian del modelo anterior en que los terminales más recientemente, sistemas personales son remotos y acceden a un sistema central utilizando una infraestructura de red (telefónica) y un protocolo de comunicaciones normalmente de tipo propietario.

•Sistemas personales. La motivación de este tipo de sistemas estuvo en proporcionar un sistema dedicado para un único usuario, lo que fue posible gracias al abaratamiento del hardware por la irrupción del microprocesador a comienzos de los 80.

•Sistemas en red. En la evolución del teleproceso, los terminales fueron ganando capacidad de cómputo y funcionalidad hasta convertirse en sistemas autónomos.

•Sistemas distribuidos. Los recursos de diferentes máquinas en red se integran de forma que desaparece la dualidad local/remoto. La diferencia fundamental con los sistemas en red es que la ubicación del recurso es transparente a las aplicaciones y usuarios, por lo que, desde este punto de vista, no hay diferencia con un sistema de tiempo compartido.

El modelo de sistema distribuido es el más general, por lo que, aunque no se ha alcanzado a nivel comercial la misma integración para todo tipo de recursos.

1.2 Propiedades de los sistemas distribuidos

Un sistema distribuido que pretenda ofrecer una visión de sistema único deberá cumplir las propiedades que se presentan a continuación.

1.2.1 Transparencia

El objetivo esencial de un sistema distribuido es proporcionar al usuario y a las aplicaciones una visión de los recursos del sistema como gestionados por una sola máquina virtual. La distribución física de los recursos es transparente.

•De la ubicación física de los recursos. Ni los usuarios ni las aplicaciones conocen en qué nodo reside el recurso accedido, o si éste es local o remoto.

•De replicación. Ni los usuarios ni las aplicaciones conocen cuántas unidades hay de cada recurso, ni si se añaden o eliminan copias del recurso.

•De paralelismo. Una aplicación puede ejecutarse en paralelo, sin que la aplicación tenga que especificarlo, y sin consecuencias sobre la ejecución, salvo por cuestiones de rendimiento.

•De compartición. El que un recurso compartido intente ser accedido simultáneamente desde varias aplicaciones no tiene efectos sobre la ejecución de la aplicación.

•De rendimiento. Inevitablemente, implementar las propiedades de los sistemas distribuidos será a costa de una pérdida de rendimiento.

1.2.2 Escalabilidad

Una de las características de los sistemas distribuidos es su modularidad, lo que le permite una gran flexibilidad y posibilita su escalabilidad, definida como la capacidad del sistema para crecer sin aumentar su complejidad ni disminuir su rendimiento.

La escalabilidad presenta dos aspectos. El sistema distribuido debe (1) proporcionar espacios de nombres suficientemente amplios, de forma que no supongan una limitación inherente, y (2) mantener un buen nivel de rendimiento en el acceso a los recursos cuando el sistema crece.

•Espacios de nombres. Los espacios de nombres, al igual que en los sistemas centralizados, pueden identificar objetos de diferente naturaleza, como ficheros, procesos, variables, o incluso direcciones de memoria (en los sistemas de memoria compartida distribuida, DSM).

•Complejidad/rendimiento. El crecimiento de un sistema distribuido puede introducir cuellos de botella y latencias que degradan su rendimiento. Además del incremento de los costes de comunicación por el aumento de la distancia física entre los componentes del sistema, la complejidad estructural de los algoritmos distribuidos es a menudo más que lineal con respecto al tamaño del sistema, como iremos comprobando a lo largo del curso.

1.2.3 Fiabilidad y tolerancia a fallos

La fiabilidad de un sistema puede definirse como su capacidad para realizar correctamente y en todo momento las funciones para las que se ha diseñado.

La fiabilidad se concreta en dos aspectos:

•Disponibilidad. Es la fracción de tiempo que el sistema está operativo.

El principal parámetro para medir la disponibilidad es el tiempo medio entre fallos (MTBF), pero hay que considerar también el tiempo de reparación. La disponibilidad se puede incrementar de dos formas: (a) utilizando componentes de mayor calidad, y/o (b) con un diseño basado en la replicación de componentes que permita al sistema seguir operando aun cuando alguno(s) de ellos falle(n). Ambas alternativas incrementan el coste del sistema; sin embargo, en el estado tecnológico actual, la replicación resulta, en general, menos costosa.

•Tolerancia a fallos. Aún con una alta disponibilidad, un fallo en un momento determinado puede tener consecuencias desastrosas. Piénsese en sistemas de tiempo real críticos que controlan dispositivos vitales (por ejemplo en medicina, centrales nucleares...). Es decir, aunque la replicación aumenta la disponibilidad, no garantiza por sí sola la continuidad del servicio de forma transparente. La tolerancia a fallos expresa la capacidad del sistema para seguir operando correctamente ante el fallo de alguno de sus componentes, enmascarando el fallo al usuario o a la aplicación.

1.2.4 Consistencia

La distribución de recursos introduce importantes beneficios. Por una parte, contribuye al incremento del rendimiento a través del paralelismo y promoviendo el acceso a copias locales del recurso (disminuyendo los costes de comunicación).

1.3 Aplicaciones distribuidas

En primer lugar, hay que distinguir entre aplicaciones distribuidas y aplicaciones paralelas. Una aplicación paralela es aquélla que puede dividirse en tareas que se ejecutan concurrentemente en diferentes elementos de proceso, con el objetivo de disminuir el tiempo de finalización. La mayoría de las aplicaciones pueden ejecutarse en paralelo, ateniéndose a determinados esquemas de cómputo (por ejemplo, siguiendo un modelo pipeline) que dependen de la naturaleza de la aplicación y del hardware sobre el que se va a ejecutar.

1.3.1 Objetivos de las aplicaciones distribuidas

•Alto rendimiento. Una aplicación paralela puede ser también distribuida. Por ejemplo, puede utilizarse una red local para distribuir los procesos de la tarea entre los nodos de la red con el fin de aprovechar los recursos de cómputo disponibles (generalmente PCs de bajo coste) para reducir el tiempo de finalización.

•Tolerancia a fallos. En otras aplicaciones la distribución viene dictada por criterios como la integridad de la información. Así, en un sistema bancario es preciso mantener replicada la información acerca del estado de las cuentas de los clientes en diferentes servidores, pues el riesgo de perder información por el fallo de una máquina resulta inaceptable por las consecuencias que acarrearía.

•Alta disponibilidad. Hay aplicaciones donde la distribución se realiza para acercar la información al usuario y disminuir los tiempos de respuesta. En los casos más simples, se utilizan técnicas de replicación que tienen en cuenta la distribución geográfica (caching y mirroring).

•Movilidad. La abundancia de dispositivos físicos (ordenadores personales y portátiles, tabletas, teléfonos móviles, etc) introduce una dificultad adicional para el acceso a la información del usuario, de forma que este no tenga que gestionar la actualización de la información en cada dispositivo.

•Ubicuidad. A veces los recursos están inherentemente distribuidos. El usuario se mueve en un entorno con recursos (ubicuos) no previstos a priori, y la aplicación trata de ofrecer un comportamiento inteligente en función de las necesidades del usuario y la naturaleza y disponibilidad de los recursos.

1.3.2 Entornos para las aplicaciones distribuidas

La disponibilidad de infraestructuras como las citadas anteriormente ofrece diversos escenarios donde pueden desplegarse aplicaciones distribuidas.

1.3.2.1 Internet

Indudablemente, la World-Wide-Web (para abreviar, WWW o Web) es la aplicación estrella de Internet, hasta el punto de que hoy en día es también la forma de acceso común a otras aplicaciones de Internet, como el correo electrónico y la transferencia de ficheros. Se basa en la existencia de una fuerte estructura de comunicaciones, que incluye una infraestructura de enlaces troncales de gran capacidad (backbones) donde se conectan las subredes y los ISP (proveedores de servicios de Internet), que proporcionan el acceso a esta infraestructura a los usuarios particulares utilizando medios diversos (por ejemplo, el ubicuo cableado telefónico tradicional). La Web ha impuesto HTTP como protocolo de acceso común.

1.3.2.2 Intranets

Una intranet es básicamente un entorno Internet restringido. Se utilizan los mismos protocolos y los mismos medios de acceso que en Internet, si bien el acceso se circunscribe a un dominio administrativo concreto o un conjunto de ellos (por ejemplo, en una empresa). Una intranet puede estar compuesta por varias subredes, y estas pueden estar integradas en Internet.

1.3.2.3 Entornos ubicuos

En un sistema ubicuo las aplicaciones no están sujetas a ámbitos administrativos o de red concretos, como las intranets, pero tampoco operan de manera ilimitada en el ámbito de Internet. Así, el dispositivo de un usuario (por ejemplo el teléfono móvil de un futuro cercano) opera en el entorno físico concreto en el que se encuentra (por ejemplo, el domicilio del usuario o un aeropuerto) de acuerdo a los servicios que descubre en ese entorno, y se adapta a la infraestructura disponible de la forma más eficiente posible.

1.4 Soporte hardware

Distinguiremos aquí entre los dispositivos que soportan el cómputo en un sistema distribuido y la infraestructura de red que permite su interconexión.

1.4.1 Elementos de cómputo

La definición de sistema distribuido que hemos proporcionado antes (conjunto de computadores interconectados que comparten un estado) es lo suficientemente ambigua como para plantear discusiones, por ejemplo (1) qué se entiende por computador, y (2) cómo se definen los estados.

Sobre esta clasificación, cabría matizar que los procesadores actuales (segmentados y superescalares) realizan también de alguna forma proceso paralelo. Pero, de acuerdo a nuestro propósito de concretar qué arquitecturas pueden soportar distribución (de cualquier tipo de recurso), hemos de centrarnos únicamente en la categoría MIMD, máquinas con varias unidades de proceso por generalidad, introduciremos el término nodo para referirnos a cada una de las unidades de proceso.

La categoría MIMD suele subdividirse en subgrupos atendiendo a dos criterios:

El grado de acoplamiento (si cada nodo cuenta con su propio espacio de direcciones de memoria física o no), y cómo se conectan los nodos (bus compartido o red de interconexión). La Tabla 1.2 muestra a qué tipos de sistemas conduce esta clasificación.

Sobre esta clasificación cabe plantear si todos los subgrupos admiten en general distribución de recursos. Para afinar un poco más, identificaremos tres grupos de elementos susceptibles de distribuirse entre los nodos:

•Proceso

•Espacio de memoria

•Espacio de E/S (ficheros y dispositivos)

En los sistemas multiprocesador la memoria y la E/S son recursos por definición centralizados. En estas máquinas sólo tendría sentido hablar de proceso distribuido. Los nodos comparten el estado de la E/S y de la memoria, la distancia física entre procesadores es pequeña y el reloj es único. En los multiprocesadores actuales, cada procesador posee su memoria cache propia, pero la coherencia está garantizada por protocolos hardware. Un sistema operativo multiprocesador no introduce aparentemente grandes novedades.

La memoria, la E/S y los ficheros se gestionan como en los sistemas operativos tradicionales; sólo la gestión de los procesadores y la asignación de procesos plantean nuevas necesidades. Por todo ello, hoy en día los multiprocesadores no se consideran sistemas distribuidos.

Por el contrario, en multicomputadores y redes, todos los recursos, incluido el reloj, son (o pueden ser) distribuidos.

1.4.2 Infraestructura de red

Como se ha comentado más arriba, hoy en día los sistemas distribuidos se basan en la existencia de una red de comunicaciones que conecta dispositivos de cómputo estándares.

En los últimos años han experimentado un gran avance las tecnologías inalámbricas, hasta el punto de que pueden competir (es el caso de WiFi IEEE

802.11) con Ethernet en las redes locales. También hay soluciones para ámbitos geográficos de mayor rango. Finalmente, en sistemas ubicuos adquieren importancia las redes inalámbricas de corto alcance (redes de ámbito personal, PAN). La Tabla 1.3 ilustra algunas características de las tecnologías de red actuales.

1.5 Soporte del sistema operativo

Hemos acotado el concepto de sistema distribuido como aplicable a aquellos sistemas compuestos por nodos con espacios propios de memoria y E/S. Cada nodo posee su propio sistema operativo y los servicios de red básicos. Esta descripción concuerda con la de las redes de computadores, pero también puede incluir los multicomputadores.

1.6 Soporte para la comunicación

Hay que diferenciar entre distribución física de la memoria17 y modelo de comunicación. El grado de acoplamiento determinará el soporte necesario para implementar el modelo de comunicación, pero éste puede estar basado tanto en memoria compartida como en paso de mensajes. El modelo elegido determina parte de las características del sistema distribuido, pero la distribución física de la memoria queda ocultada, salvo a efectos del rendimiento.

1.6.1Modelos de comunicación

Sobre memoria compartida, los mecanismos de variables compartidas cuyo acceso se sincroniza mediante cerrojos de exclusión mutua u otras primitivas (variables condición, cerrojos de lectores-escritores), han sido estudiados desde hace mucho tiempo y están perfectamente establecidos. Lo mismo cabe decir sobre el paso de mensajes, que implementa colas FIFO sobre buffers en memoria, a menudo integrados en el sistema de ficheros (pipes de UNIX).

Sobre sistemas débilmente acoplados (habitualmente redes), el paso de mensajes parece el mecanismo de comunicación natural. En un sistema distribuido, las necesidades de comunicación conducen a utilizar esquemas específicos de gestión de los recursos para los que el paso de mensajes resulta adecuado.

El modelo cliente - servidor se puede implementar mediante un mecanismo de paso de mensajes específico, como por ejemplo la interfaz de sockets de UNIX, que se apoya en los protocolos TCP/IP o UDP/IP para comunicar procesos en un sistema en red.

1.6.2 Comunicación basada en paso de mensajes

El paso de mensajes comprende un conjunto de mecanismos que permiten comunicar procesos mediante un enlace o canal de comunicación, bien directamente, identificando el proceso origen o destino respectivamente en las primitivas de recibir o enviar, bien a través de un buzón, que identifica explícitamente el canal de comunicación. En sistemas tipo UNIX, el mecanismo básico de paso de mensajes dentro de un nodo es el de pipes, con o sin nombre. Para comunicar procesos entre nodos surge el problema del direccionamiento. A este respecto, los sockets de UNIX soportan dos formas de comunicación alternativas: identificando un socket dentro del sistema de ficheros (entorno UNIX) asociando un puerto de comunicación en un nodo concreto (entorno Internet).

Las características principales asociadas a un canal de comunicación son las siguientes:

•Modo de sincronización. Por una parte, si el canal de comunicación está ocupado, la primitiva de enviar puede bloquear al proceso hasta que se libere el canal (lo que depende también de si permite buffering o no) y pueda depositar el mensaje (modo bloqueante o síncrono). La alternativa (modo no bloqueante) permite que el proceso continúe aunque el mensaje no se haya podido enviar, transfiriendo a la aplicación la responsabilidad de gestionar la sincronización en el uso del buffer de usuario donde se ubica el mensaje enviado.

•Fiabilidad. En lo referente a la fiabilidad de la comunicación, el mecanismo de paso de mensajes depende del soporte que le proporcione la red. Si se implementa sobre un protocolo de transporte seguro, la comunicación se considera fiable, en el sentido de que el emisor puede confiar en que el receptor acabe por recibir el mensaje correctamente o sea informado de lo contrario.

•Modo de comunicación. En sistemas distribuidos es de gran interés el soporte de primitivas de paso de mensajes de 1:N. El broadcast o difusión permite enviar un mensaje a todas las direcciones accesibles por el emisor, y se usa en redes locales. Un caso particular de broadcast, el multicast, permite seleccionar un subconjunto de direcciones a las que enviar el mensaje.

1.7 Sistemas abiertos

Un problema fundamental de la integración de los recursos en un sistema distribuido es la heterogeneidad de los sistemas que lo componen, que afecta a la comunicación de datos y a la compatibilidad de aplicaciones y usuarios. Una base esencial para la construcción de sistemas distribuidos sobre sistemas heterogéneos es la concepción de los componentes como sistemas abiertos. Un sistema abierto es aquél que ofrece una especificación pública de su interfaz, que además debe ser asumida por los fabricantes. La difusión del sistema, normalmente sujeta a las leyes del mercado, determina en gran medida que el sistema abierto se considere efectivamente como tal o no.

Los sistemas abiertos poseen las siguientes propiedades [QUA93]:

•Interoperabilidad. Capacidad de mover información entre máquinas a través de la red. Proporcionada por los protocolos de comunicación (p.ej. TCP/IP) y lenguajes de especificación (p. ej. XML) estándares.

•Transportabilidad de aplicaciones. Capacidad de mover programas de aplicación entre máquinas del sistema. Los sistemas operativos abiertos proporcionan una interfaz común basada en estándares oficiales (por ejemplo, POSIX) o de hecho, de forma que las aplicaciones son transportables a nivel de código fuente.

•Transportabilidad de usuarios. Capacidad de permitir que un usuario pueda acceder al sistema desde diferentes máquinas sin necesidad de conocer características particulares de cada máquina.

Así pues, los protocolos de red y el sistema operativo determinan fundamentalmente la característica de sistema abierto.

También se ha afrontado el problema de comunicar componentes software escritos en diferentes lenguajes, mediante la definición de interfaces en cada extremo y proporcionando un formato común. Los lenguajes de definición de interfaces (IDL) ofrecen una notación para definir interfaces mediante la especificación del formato de entrada y salida de cada argumento.

Internet está imponiendo nuevos estándares y estilos de comunicación. De este modo, se aprecia una tendencia general a la utilización de HTTP como protocolo de acceso a servicios, como evolución del esquema RPC clásico. Por otra parte, la distribución de servicios ha provocado una evolución del esquema cliente-servidor clásico hacia estructuras peer-to-peer, donde los roles de cliente y servidor son intercambiables. En tales sistemas, habitualmente dinámicos, los nodos indistintamente ofrecen y solicitan servicios, y eventualmente cooperan en la búsqueda de servicios y en el encaminamiento de peticiones.

...

Descargar como  txt (19.8 Kb)  
Leer 11 páginas más »
txt