Professional Documents
Culture Documents
distribuidos Los sistemas distribuidos suponen un paso más en la evolución de los sistemas
informáticos, entendidos desde el punto de vista de las necesidades que las
aplicaciones plantean y las posibilidades que la tecnología ofrece. Antes de
proporcionar una definición de sistema distribuido resultará interesante
presentar, a través de la evolución histórica, los conceptos que han
desembocado en los sistemas distribuidos actuales, caracterizados por la
distribución física de los recursos en máquinas interconectadas.
Contenido Utilizaremos aquí el término recurso con carácter general para referirnos a
cualquier dispositivo o servicio, hardware o software, susceptible de ser
1.1 Motivación
compartido.
1.1.1 Tipos de sistemas
1.1.2 Una definición de sistema distribuido
1.1.1 Tipos de sistemas
1.1.3 Perspectivas
1.2 Propiedades de los sistemas distribuidos
Desde una perspectiva histórica se puede hablar de diferentes modelos que
1.2.1 Transparencia
determinan la funcionalidad y la estructura de un sistema de cómputo, las
1.2.2 Escalabilidad
características del sistema operativo como gestor de los recursos, y su campo de
1.2.3 Fiabilidad y tolerancia a fallos
aplicación y uso:
1.2.4 Consistencia
1.3 Aplicaciones distribuidas • Sistemas de lotes. Son los primeros sistemas operativos, que permitían
1.3.1 Objetivos de las aplicaciones distribuidas procesar en diferido y secuencialmente datos suministrados en paquetes
1.3.2 Entornos para las aplicaciones distribuidas de tarjetas perforadas. Hoy en día, sobre sistemas multiprogramados con
1.4 Soporte hardware interfaces de usuario interactivas, el proceso por lotes tiene sentido en
1.4.1 Elementos de cómputo aplicaciones de cálculo intensivo, por ejemplo en supercomputación.
1.4.2 Infraestructura de red
1.5 Soporte para la distribución de recursos • Sistemas centralizados de tiempo compartido. Fue el siguiente paso, a
1.5.1 Sistemas abiertos mediados de los 60. El objetivo es incrementar la eficiencia en el uso de la
1.5.2 Soporte para la comunicación CPU, un recurso entonces caro y escaso, disminuyendo los tiempos de
1.5.3 Soporte del sistema operativo respuesta de los usuarios, que operan interactivamente. Los recursos
1.6 Estructura de un sistema distribuido están centralizados y se accede al sistema desde terminales.
1.7 Apéndice A: Llamadas a procedimientos remotos
1.8 Apéndice B: Invocación de métodos remotos • Sistemas de teleproceso. Se diferencian del modelo anterior en que los
1.8.1 El modelo de objetos terminales —más recientemente, sistemas personales— son remotos y
1.8.2 El modelo de objetos distribuidos acceden a un sistema central utilizando una infraestructura de red (por
1.8.3 Java RMI ejemplo la telefónica) y un protocolo de comunicaciones normalmente de
tipo propietario. El sistema central monopoliza la gestión de los recursos.
Ejemplos de aplicaciones que resolvía este modelo son los sistemas de
reservas y de transacciones bancarias.
• Sistemas personales. La motivación de este tipo de sistemas estuvo en • Sistemas distribuidos. Los recursos de diferentes máquinas en red se
proporcionar un sistema dedicado para un único usuario, lo que fue integran de forma que desaparece la dualidad local/remoto. La diferencia
posible gracias al abaratamiento del hardware por la irrupción del fundamental con los sistemas en red es que la ubicación del recurso es
microprocesador a comienzos de los 80. Precisamente, el coste reducido transparente a las aplicaciones y usuarios, por lo que, desde este punto de
es su característica fundamental. El sistema operativo de un ordenador vista, no hay diferencia con un sistema de tiempo compartido. El usuario
personal (PC) es, en un principio, monousuario: carece de mecanismos de accede a los recursos del sistema distribuido a través de una interfaz
protección. Aunque, por simplicidad, los primeros sistemas operativos gráfica de usuario desde un terminal, despreocupándose de su
eran monoprogramados (MS-DOS), la mejora del hardware pronto localización. Las aplicaciones ejecutan una interfaz de llamadas al
permitió soportar sistemas multitarea (Macintosh, OS/2, Windows 95/98), sistema como si de un sistema centralizado se tratase, por ejemplo
e incluso sistemas operativos diseñados para tiempo compartido, como POSIX. Un servicio de invocación remota (por ejemplo a procedimientos,
UNIX y Windows NT1. Un sistema personal posee sus propios recursos RPC, o a objetos, RMI) resuelve los accesos a los recursos no locales
locales. Inicialmente, éstos eran los únicos recursos accesibles, pero hoy utilizando para ello la interfaz de red. Los sistemas distribuidos
en día la situación ha cambiado. Por otra parte, la evolución hardware ha proporcionan de forma transparente la compartición de recursos,
llevado a los ordenadores personales hacia versiones móviles (PC facilitando el acceso y la gestión, e incrementando la eficiencia y la
portátiles y otros dispositivos como PDAs y teléfonos móviles). disponibilidad.
Alberto Lafuente, Departamento de Arquitectura y Tecnología de Computadores, UPV/EHU Alberto Lafuente, Departamento de Arquitectura y Tecnología de Computadores, UPV/EHU
Introducción a los Sistemas Distribuidos 1.5 Introducción a los Sistemas Distribuidos 1.6
sistema único2, que muestra los recursos de manera homogénea, ocultando su es por naturaleza cambiante. Los recursos y servicios se descubren y configuran
distribución: el usuario y las aplicaciones no ven una red, sino un sistema dinámicamente, y las aplicaciones e interfaces de usuario se adaptan al entorno.
indistinguible de uno centralizado. Mientras que un sistema en red puede definirse
como un conjunto de sistemas con estados independientes, en un sistema Además de los problemas planteados por los sistemas distribuidos y la
distribuido se define un estado global. informática móvil, la ubicua ofrece nuevos retos que involucran a numerosos
campos tecnológicos: hardware; redes y protocolos de comunicación (en
La topología y los atributos físicos de la red están ocultados por los protocolos particular para descubrimiento de dispositivos, como Jini3 y UPnP4; interfaces
de red, mientras que la arquitectura de cada máquina está ocultada por el de usuario (con nuevos dispositivos y formas de interacción), y seguridad. Los
sistema operativo. Como los componentes de un sistema distribuido pueden ser sistemas ubicuos tienen un amplio rango de aplicación en entornos muy
heterogéneos, se requiere una capa de software (a menudo llamado middleware) diversos: hogar (domótica), comercio e industria, servicios asistenciales,
para proporcionar la visión de sistema único. Volveremos sobre este punto al educación, automoción, robótica…
hablar de la estructura del sistema distribuido.
1.2 Propiedades de los sistemas distribuidos
1.1.3 Perspectivas
Un sistema distribuido que pretenda ofrecer una visión de sistema único deberá
El desarrollo tecnológico en un conjunto de áreas –procesadores, cumplir las propiedades que se presentan a continuación5.
almacenamiento de información, redes (en particular inalámbricas),
almacenamiento de energía, pantallas– está introduciendo nuevos dispositivos 1.2.1 Transparencia
que abren perspectivas para nuevas aplicaciones en el mundo de los sistemas
distribuidos. Una evolución, iniciada en los años noventa a partir de la El objetivo esencial de un sistema distribuido es proporcionar al usuario y a las
introducción de equipos portátiles, nos lleva a lo que denominamos informática aplicaciones una visión de los recursos del sistema como gestionados por una
móvil. El equipo móvil sale de la red local para descubrir nuevos recursos. Ha sola máquina virtual. La distribución física de los recursos es transparente.
de adaptarse a condiciones cambiantes de red y eventualmente funcionar en Pueden describirse diferentes aspectos de la transparencia:
modo desconectado. Pueden constituirse espontáneamente redes ad-hoc que
requieren protocolos específicos, como Mobile IP [PER98]. Se hacen patentes las • De identificación. Los espacios de nombres de los recursos son
ventajas de las comunicaciones inalámbricas. independientes de la topología de la red y de la propia distribución de
los recursos.
Un paso más allá lo constituyen los sistemas ubicuos (pervasive systems)
[COU05 §16]. El vertiginoso desarrollo de la tecnología hardware está llevando • De la ubicación física de los recursos. Ni los usuarios ni las aplicaciones
la miniaturización de los dispositivos de cómputo a nuevos productos. Los conocen en qué nodo reside el recurso accedido, o si éste es local o
computadores portátiles (que se pueden transportar) se convierten en ubicuos remoto. Esto implica también que los recursos pueden migrar entre
cuando deja de percibirse su presencia (tecnología que desaparece [WEI91]). Desde nodos sin que las aplicaciones se vean afectadas. La diferencia entre
otro punto de vista, cualquier dispositivo adquiere la capacidad, de cómputo y transparencia de ubicación e identificación se resume en la Figura 1.
de comunicaciones, de un computador. Ejemplos actuales o de un futuro
cercano de este tipo de dispositivos son las agendas electrónicas (PDAs), los
teléfonos móviles, los sistemas de navegación de los automóviles, las tarjetas
inteligentes, y otros muchos dispositivos (llaves, relojes, etc). Un entorno ubicuo 3
www.jini.org
4
www.upnp.org
Alberto Lafuente, Departamento de Arquitectura y Tecnología de Computadores, UPV/EHU Alberto Lafuente, Departamento de Arquitectura y Tecnología de Computadores, UPV/EHU
Introducción a los Sistemas Distribuidos 1.7 Introducción a los Sistemas Distribuidos 1.8
1.2.2 Escalabilidad
Transparencia de identificación
Alberto Lafuente, Departamento de Arquitectura y Tecnología de Computadores, UPV/EHU Alberto Lafuente, Departamento de Arquitectura y Tecnología de Computadores, UPV/EHU
Introducción a los Sistemas Distribuidos 1.9 Introducción a los Sistemas Distribuidos 1.10
Alberto Lafuente, Departamento de Arquitectura y Tecnología de Computadores, UPV/EHU Alberto Lafuente, Departamento de Arquitectura y Tecnología de Computadores, UPV/EHU
Introducción a los Sistemas Distribuidos 1.11 Introducción a los Sistemas Distribuidos 1.12
ejecutar. Las tareas de una aplicación paralela se distribuyen entre los elementos • Alta disponibilidad. Hay aplicaciones donde la distribución se realiza
de proceso siguiendo criterios como la carga de cada elemento y los costes de para acercar la información al usuario y disminuir los tiempos de
comunicación. Puede decirse que la ejecución simultánea de tareas es el objetivo respuesta. En los casos más simples, se utilizan técnicas de replicación
esencial de una aplicación paralela. Las aplicaciones distribuidas presentan que tienen en cuenta la distribución geográfica (caching y mirroring). La
motivaciones más diversas y se aplican en entornos más variados. consistencia en la actualización es importante, aunque generalmente no
es crítica. En cambio, estos sistemas deben ser muy escalables.
1.3.1 Objetivos de las aplicaciones distribuidas
• Movilidad y ubicuidad. A veces los recursos están inherentemente
Si en las aplicaciones paralelas el rendimiento es el objetivo fundamental, una distribuidos. El usuario se mueve en un entorno con recursos (ubicuos)
aplicación distribuida puede presentar muy diversas motivaciones: 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
• Alto rendimiento. Una aplicación paralela puede ser también disponibilidad de los recursos. Es el caso de las aplicaciones de
distribuida. Por ejemplo, puede utilizarse una red local para distribuir los Inteligencia Ambiental (AmI), un campo que está creando enormes
procesos de la tarea entre los nodos de la red con el fin de aprovechar los expectativas.
recursos de cómputo disponibles (generalmente PCs de bajo coste) para
reducir el tiempo de finalización. Precisamente, este tipo de esquema de 1.3.2 Entornos para las aplicaciones distribuidas
cómputo (computación en cluster) ofrece hoy una excelente relación
rendimiento/coste y se encuentra en expansión frente a los tradicionales La disponibilidad de infraestructuras como las citadas anteriormente ofrece
supercomputadores. Aunque hoy en día se siguen utilizando sistemas diversos escenarios donde pueden desplegarse aplicaciones distribuidas. Puede
basados en paso de mensajes (por ejemplo, MPI) con mecanismos de decirse que, en la actualidad, Internet proporciona el entorno más general, pero
distribución no transparentes, la tendencia es clara hacia la integración hay aplicaciones que tienen sentido en entornos más específicos.
transparente de los recursos de cómputo, y en ese sentido están
apareciendo nuevos productos (por ejemplo, MOSIX7). La memoria 1.3.2.1 Internet
compartida distribuida (DSM) es uno de los retos para proporcionar la
integración completa. 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
• Tolerancia a fallos. En otras aplicaciones la distribución viene dictada forma de acceso común a otras aplicaciones de Internet, como el correo
por criterios como la integridad de la información. Así, en un sistema electrónico y la transferencia de ficheros. Se basa en la existencia de una fuerte
bancario es preciso mantener replicada la información acerca del estado estructura de comunicaciones, que incluye una infraestructura de enlaces
de las cuentas de los clientes en diferentes servidores, pues el riesgo de troncales de gran capacidad (backbones) donde se conectan las subredes y los ISP
perder información por el fallo de una máquina resulta inaceptable por (proveedores de servicios de Internet), que proporcionan el acceso a esta
las consecuencias que acarrearía. En estos sistemas es crítico conseguir infraestructura a los usuarios particulares utilizando medios diversos (por
una actualización consistente de las réplicas. Hoy en día, ejemplo, el ubicuo cableado telefónico tradicional). La Web ha impuesto HTTP
fundamentalmente por motivos de rendimiento, los sistemas comerciales como protocolo de acceso común.
utilizan técnicas muy conservadoras y poco transparentes, pero, como
veremos, las bases teóricas para una gestión transparente de la Las aplicaciones distribuidas que se pueden desplegar en Internet son muy
replicación están bien establecidas. variadas, aunque limitadas en la práctica por aspectos de rendimiento y
seguridad. Las llamadas aplicaciones peer-to-peer (P2P) son un ejemplo claro de
aplicaciones de alta disponibilidad en Internet. Un esquema más elaborado lo
constituyen los sistemas en Grid, que tratan de proporcionar, sobre la base de
una estructura P2P, una gestión transparente del conjunto de recursos
7
http://www.mosix.cs.huji.ac.il/
Alberto Lafuente, Departamento de Arquitectura y Tecnología de Computadores, UPV/EHU Alberto Lafuente, Departamento de Arquitectura y Tecnología de Computadores, UPV/EHU
Introducción a los Sistemas Distribuidos 1.13 Introducción a los Sistemas Distribuidos 1.14
distribuidos disponibles en la red. Un ejemplo de este tipo de infraestructura es comunicación inalámbrica entre él y la infraestructura ofrecida por el entorno
Globus8. físico (p. ej., WiFi y GSM).
1.3.2.2 Intranets Por supuesto, un entorno ubicuo también puede proporcionar acceso a servicios
de Internet o de intranet, por lo que este tipo de entornos puede considerarse el
Una intranet es básicamente un entorno Internet restringido. Se utilizan los más general, y, como se ha comentado más arriba, plantean grandes retos en
mismos protocolos y los mismos medios de acceso que en Internet, si bien el cuanto a infraestructuras, dispositivos hardware (miniaturización,
acceso se circunscribe a un dominio administrativo concreto o un conjunto de autonomía…) y estandarización, y ofrecen grandes expectativas (aplicaciones
ellos (por ejemplo, en una empresa). Una intranet puede estar compuesta por AmI).
varias subredes, y estas pueden estar integradas en Internet, si bien el acceso
desde el exterior o la salida desde la intranet pueden estar restringidos por 1.4 Soporte hardware
servidores específicos (firewalls), que actúan como filtros aplicando criterios a
diferentes niveles de la pila de protocolos. Distinguiremos aquí entre los dispositivos que soportan el cómputo en un
sistema distribuido y la infraestructura de red que permite su interconexión.
Una intranet admite en principio el mismo tipo de aplicaciones que las que se
puedan desplegar en Internet. Además, las aplicaciones de alto rendimiento, 1.4.1 Elementos de cómputo
como es el caso del la computación en cluster, o las de tolerancia a fallos, suelen
tener más sentido sobre una intranet, (o sobre una LAN de la intranet), ya que, La definición de sistema distribuido que hemos proporcionado antes (conjunto
en general, los costes de comunicación pueden acotarse. de computadores interconectados que comparten un estado) es lo
suficientemente ambigua como para plantear discusiones, por ejemplo (1) qué
1.3.2.3 Entornos ubicuos
se entiende por computador, y (2) cómo se definen los estados. Para responder a
estas preguntas necesitamos conocer las alternativas en materia de arquitecturas
En un sistema ubicuo las aplicaciones no están sujetas a ámbitos administrativos
de computadores. Atendiendo a los criterios clásicos de Flynn, las arquitecturas
o de red concretos, como las intranets, pero tampoco operan de manera
se pueden clasificar según permitan paralelismo de datos y/o instrucciones,
ilimitada en el ámbito de Internet. Así, el dispositivo móvil de un usuario (un
obteniéndose los cuatro grupos de la Tabla 1.
PDA o un teléfono) 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
un dato múltiples datos
disponible de la forma más eficiente posible. Por ejemplo, una misma llamada simultáneamente simultáneamente
telefónica de un usuario que sale desde su domicilio al aeropuerto podría
una instrucción SISD SIMD
utilizar infraestructuras diferentes: la línea telefónica fija en el domicilio,
simultáneamente
telefonía móvil durante el trayecto, o un servicio de telefonía VoIP, ofrecido por arquitecturas Von procesadores
Neumann clásicas vectoriales
algún operador, una vez que llega al aeropuerto. Los modos de comunicación
conmutarían dinámicamente, optimizando la calidad y el coste de la múltiples instrucciones MISD MIMD
comunicación. Obsérvese que para conseguir este tipo de transparencia9 un simultáneamente
no hay multiprocesadores,
prerrequisito es que el dispositivo del usuario soporte varios modos de implementaciones multicomputadores,
redes
Alberto Lafuente, Departamento de Arquitectura y Tecnología de Computadores, UPV/EHU Alberto Lafuente, Departamento de Arquitectura y Tecnología de Computadores, UPV/EHU
Introducción a los Sistemas Distribuidos 1.15 Introducción a los Sistemas Distribuidos 1.16
paralelo. Pero, de acuerdo a nuestro propósito de concretar qué arquitecturas operativo multiprocesador no introduce aparentemente grandes novedades11.
pueden soportar distribución (de cualquier tipo de recurso), hemos de La memoria, la E/S y los ficheros se gestionan como en los sistemas operativos
centrarnos únicamente en la categoría MIMD, máquinas con varias unidades de tradicionales; sólo la gestión de los procesadores y la asignación de procesos
proceso10. Por generalidad, introduciremos el término nodo para referirnos a plantean nuevas necesidades. Por todo ello, hoy en día los multiprocesadores
cada una de las unidades de proceso. no se consideran sistemas distribuidos.
La categoría MIMD suele subdividirse en subgrupos atendiendo a dos criterios: Por el contrario, en multicomputadores y redes, todos los recursos, incluido el
el grado de acoplamiento (si cada nodo cuenta con su propio espacio de reloj, son (o pueden ser) distribuidos12. Es necesario implementar mecanismos y
direcciones de memoria física o no), y cómo se conectan los nodos (bus servicios que aseguren estados globales consistentes y proporcionen la visión de
compartido o red de interconexión). La Tabla 2 muestra a qué tipos de sistemas sistema único en un grado aceptable. En la práctica, la mayoría de los sistemas
conduce esta clasificación. distribuidos de hoy en día se basan en elementos de cómputo de consumo,
fundamentalmente PCs, y la tendencia es, como hemos visto, que los elementos
Grado de acoplamiento de cómputo se integren en todo tipo de dispositivos, como teléfonos o cámaras
(o, desde otro punto de vista, que todo tipo de dispositivo adquiera capacidad
espacio de memoria espacios de memoria
física compartido física independientes para servir de nodo en un sistema distribuido), y que estos elementos se
integren en el sistema mediante algún tipo de infraestructura de red estándar.
bus compartido servidores multicomputadores,
multiprocesador típicos redes LAN
1.4.2 Infraestructura de red
red de interconexión multiprocesadores multicomputadores,
UMA y NUMA redes WAN 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
Tabla 2. Tipos de arquitecturas MIMD cómputo estándares. Actualmente, el mundo industrializado cuenta con
amplias infraestructuras troncales (backbones), normalmente de fibra óptica, lo
De nuevo, sobre esta clasificación cabe plantear si todos los subgrupos admiten que ha permitido el despliegue de Internet. También se utilizan enlaces por
en general distribución de recursos. Para afinar un poco más, identificaremos satélite para el acceso a lugares recónditos. El problema de acceso a los puntos
tres grupos de elementos susceptibles de distribuirse entre los nodos: de usuario (redes de área metropolitana, MAN) se ha estado solucionando
• Proceso mediante la utilización eficiente del viejo cableado telefónico. Para redes locales
específicas se ha venido utilizando Ethernet, que permite velocidades muy altas
• Espacio de memoria
(hasta 1 Gbps).
• Espacio de E/S (ficheros y dispositivos)
En los últimos años han experimentado un gran avance las tecnologías
En los sistemas multiprocesador la memoria y la E/S son recursos por definición inalámbricas, hasta el punto de que pueden competir (es el caso de WiFi IEEE
centralizados. En estas máquinas sólo tendría sentido hablar de proceso 802.11) con Ethernet en las redes locales. También hay soluciones para ámbitos
distribuido. Los nodos comparten el estado de la E/S y de la memoria, la geográficos de mayor rango. Finalmente, en sistemas ubicuos adquieren
distancia física entre procesadores es pequeña y el reloj es único. En los importancia las redes inalámbricas de corto alcance (redes de ámbito personal,
multiprocesadores actuales, cada procesador posee su memoria cache propia,
pero la coherencia está garantizada por protocolos hardware. Un sistema
11
Esto es sólo en apariencia. Un soporte eficiente para el multiproceso tiene implicaciones
importantes en la estructura del sistema operativo.
10
Entenderemos como unidad de proceso el elemento que es capaz de ejecutar instrucciones 12
En multicomputadores, el espacio de E/S puede ser tanto único como distribuido, pero por
máquina, es decir, el procesador en terminología clásica. generalidad asumiremos lo último.
Alberto Lafuente, Departamento de Arquitectura y Tecnología de Computadores, UPV/EHU Alberto Lafuente, Departamento de Arquitectura y Tecnología de Computadores, UPV/EHU
Introducción a los Sistemas Distribuidos 1.17 Introducción a los Sistemas Distribuidos 1.18
PAN). La Tabla 3 ilustra algunas características de las tecnologías de red fracasado propuestas de sistemas abiertos oficiales, definidos por instituciones y
actuales. grandes consorcios, y, en cambio, otros sistemas de concepción más modesta
han llegado a convertirse en estándares de hecho, como por ejemplo es el caso
Tipo Ejemplo Rango típico Ancho de banda del protocolo TCP/IP. Por el contrario, para los sistemas cerrados, el fabricante
no proporciona la especificación de sus interfaces, por lo que están limitados a
PAN USB 1m 12 – 480 Mbps
configuraciones propietarias.
Redes LAN Ethernet 1 Km 10 – 1000 Mbps
cableadas MAN ATM 10 Km 1 – 150 Mbps Los sistemas abiertos poseen las siguientes propiedades [QUA93]:
WAN Internet Todo el mundo 0,5 – 600 Mbps • Interoperabilidad. Capacidad de mover información entre máquinas a
PAN Bluetooth 10 m 0,5 – 2 Mbps través de la red. Proporcionada por los protocolos de comunicación
estándares (por ejemplo, TCP/IP).
Redes LAN WiFi 100 m 2 – 54 Mbps
inalámbricas MAN WiMAX 10 Km 1,5 – 20 Mbps • Transportabilidad de aplicaciones. Capacidad de mover programas de
WAN UMTS Todo el mundo hasta 2 Mbps aplicación entre máquinas del sistema. Los sistemas operativos abiertos
proporcionan una interfaz común basada en estándares oficiales (por
Tabla 3. Ejemplos de tecnologías de red ejemplo, POSIX) o de hecho, de forma que las aplicaciones son
transportables a nivel de código fuente13.
1.5 Soporte para la distribución de recursos • Transportabilidad de usuarios. Capacidad de permitir que un usuario
pueda acceder al sistema desde diferentes máquinas sin necesidad de
Hemos acotado el concepto de sistema distribuido como aplicable a aquellos
conocer características particulares de cada máquina. Las interfaces
sistemas compuestos por nodos con espacios propios de memoria y E/S. Cada
gráficas de usuario, por su propia naturaleza, proporcionan en gran
nodo posee su propio sistema operativo y los servicios de red básicos. Esta
medida esta propiedad, aun pudiendo ser diferentes en diferentes
descripción concuerda con la de las redes de computadores, pero también
máquinas.
puede incluir los multicomputadores.
Así pues, los protocolos de red y el sistema operativo determinan
En general, los nodos serán heterogéneos en cuanto al hardware y al sistema
fundamentalmente la característica de sistema abierto. Gracias a que las
operativo. Un primer paso es proporcionar un conjunto de especificaciones que
especificaciones son públicas, sobre sistemas de componentes heterogéneos los
permitan definir interfaces comunes para construir sobre ellas los servicios del
desarrolladores pueden implementar una o más capas de software (a menudo
sistema distribuido y proporcionar la visión de sistema único.
llamado middleware) que proporcione la visión de sistema único. Como vamos a
ver, se han diseñado esquemas de comunicación y estructuras de sistemas
1.5.1 Sistemas abiertos
operativos adecuadas para definir sistemas abiertos y soportar eficientente la
distribución de recursos.
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 Según hemos definido, los sistemas abiertos no garantizan la transportabilidad
la comunicación de datos y a la compatibilidad de aplicaciones y usuarios. Una de aplicaciones a nivel de código ejecutable. El código fuente debe compilarse
base esencial para la construcción de sistemas distribuidos sobre sistemas para cada arquitectura particular. Existe, sin embargo, la alternativa de la
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,
13 Obsérvese que las aplicaciones Java son transportables con independencia del sistema
normalmente sujeta a las leyes del mercado, determina en gran medida que el
operativo, gracias a que una capa de middleware sobre el sistema operativo (la JVM)
sistema abierto se considere efectivamente como tal o no. En este sentido, han
proporciona la interfaz estándar a las aplicaciones.
Alberto Lafuente, Departamento de Arquitectura y Tecnología de Computadores, UPV/EHU Alberto Lafuente, Departamento de Arquitectura y Tecnología de Computadores, UPV/EHU
Introducción a los Sistemas Distribuidos 1.19 Introducción a los Sistemas Distribuidos 1.20
interpretación directa del código fuente, a costa de una notable pérdida de distribuido, las necesidades de comunicación conducen a utilizar esquemas
rendimiento. En este sentido, el lenguaje Java se ha convertido en un estándar específicos de gestión de los recursos para los que el paso de mensajes resulta
de hecho. adecuado. Un recurso estará a cargo de un proceso gestor del recurso, con quien
deberá comunicarse cualquier proceso que pretenda acceder al recurso
También se ha afrontado el problema de comunicar componentes software siguiendo un esquema cliente-servidor, que permite expresar el acceso a
escritos en diferentes lenguajes, mediante la definición de interfaces en cada servicios mediante un protocolo de petición-respuesta. El modelo cliente-
extremo y proporcionando un formato común. Los lenguajes de definición de servidor se puede implementar mediante un mecanismo de paso de mensajes
interfaces (IDL) ofrecen una notación para definir interfaces mediante la específico, como por ejemplo la interfaz de sockets de UNIX, que se apoya en los
especificación del formato de entrada y salida de cada argumento. Ejemplos de protocolos TCP/IP o UDP/IP para comunicar procesos en un sistema en red.
este tipo de lenguajes son XDR de Sun para llamadas a procedimientos remotos
y CORBA IDL para invocación de métodos remotos. Pero para espacios de memoria físicos independientes también se han diseñado
interfaces que permiten manejar un espacio de direcciones común sobre un
Finalmente, se están imponiendo como estándares de hecho lenguajes como sistema de memoria física distribuida: sistemas de memoria compartida
HTML y XML para la descripción de dispositivos y servicios y la especificación distribuida (DSM). La idea es ofrecer a las aplicaciones diseñadas según un
de interfaces. modelo de memoria compartida un soporte para su ejecución en un entorno
distribuido.
1.5.2 Soporte para la comunicación
Con el objetivo de disminuir la diferencia semántica entre programas que usan
Hay que diferenciar entre distribución física de la memoria14 y modelo de servicios locales (mediante llamadas al sistema) y programas que usan servicios
comunicación. El grado de acoplamiento determinará el soporte necesario para remotos, se han desarrollado mecanismos que encapsulan los detalles de
implementar el modelo de comunicación, pero éste puede estar basado tanto en direccionamiento y sincronización del envío/recepción de la petición/respuesta.
memoria compartida como en paso de mensajes. El modelo elegido determina Así, en los lenguajes procedimentales, las llamadas a procedimientos remotos,
parte de las características del sistema distribuido, pero la distribución física de RPCs, proporcionan una sintaxis de llamada a función como interfaz para el
la memoria queda ocultada, salvo a efectos del rendimiento. acceso a servicios. Se incluye como Apéndice una breve descripción del
mecanismo de RPCs. En los lenguajes orientados a objetos, cada recurso es un
1.5.2.1 Modelos de comunicación objeto identificado unívocamente en el sistema distribuido, al que se accede
invocando los métodos de acceso definidos para esa clase de objeto. El acceso a
Sobre memoria compartida, los mecanismos de variables compartidas cuyo los objetos se realiza mediante una interfaz de invocación de métodos remotos
acceso se sincroniza mediante cerrojos de exclusión mutua u otras primitivas (por ejemplo, RMI de Java). A RMI se le dedica también un Apéndice.
(variables condición, cerrojos de lectores-escritores), han sido estudiados desde
hace mucho tiempo y están perfectamente establecidos. Lo mismo cabe decir
Grado de acoplamiento
sobre el paso de mensajes, que implementa colas FIFO sobre buffers en
Modelo de Espacio de memoria Espacios de memoria
memoria, a menudo integrados en el sistema de ficheros (pipes de UNIX).
comunicación física compartido física independientes
Llamadas a funciones o
Semánticas de procedimientos,
RPC, RMI
14La generalización de las memorias cache locales a cada procesador hace que, hoy en día, todas lenguajes de alto nivel invocación de métodos
las máquinas MIMD presenten alguna forma de distribución física de la memoria, si bien los sobre objetos
multiprocesadores, donde la coherencia cache está garantizada por el hardware, los estamos
considerando como de memoria compartida.
Alberto Lafuente, Departamento de Arquitectura y Tecnología de Computadores, UPV/EHU Alberto Lafuente, Departamento de Arquitectura y Tecnología de Computadores, UPV/EHU
Introducción a los Sistemas Distribuidos 1.21 Introducción a los Sistemas Distribuidos 1.22
Tabla 4. Mecanismos de comunicació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
La Tabla 4 resume los mecanismos que implementan los modelos de de si permite buffering o no) y pueda depositar el mensaje (modo bloqueante o
comunicación sobre una u otra arquitectura. síncrono). La alternativa (modo no bloqueante) permite que el proceso
continúe aunque el mensaje no se haya podido enviar, transfiriendo a la
La Figura 2 resume la estructura de la comunicación en un sistema distribuido.
aplicación la responsabilidad de gestionar la sincronización en el uso del buffer
Los diferentes esquemas de programación se soportan por la interfaz de paso de
de usuario donde se ubica el mensaje enviado. Estos modos se aplican también
mensajes característica de los sistemas en red. A continuación repasaremos
a la primitiva de recibir. Los sockets de UNIX son en principio bloqueantes,
brevemente los conceptos básicos relacionados con la comunicación basada en
pero pueden configurarse como no bloqueantes.
paso de mensajes.
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
RPC RMI DSM
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. Esto es a costa de una
Paso de mensajes (sockets) cierta sobrecarga por la necesidad que tiene el protocolo de confirmar las
recepciones. En cambio, un mecanismo no fiable permitirá una comunicación
menos costosa, pero delega en la aplicación la responsabilidad de verificar la
Protocolos de red
corrección de la comunicación. UNIX ofrece dos formas de comunicación con
sockets: comunicación orientada a conexión, basada en TCP/IP, fiable, y
Figura 2: Estructura de la comunicación en un sistema distribuido.
comunicación por datagramas, basada en UDP/IP, no fiable.
1.5.2.2 Comunicación basada en paso de mensajes 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
El paso de mensajes comprende un conjunto de mecanismos que permiten
direcciones accesibles por el emisor, y se usa en redes locales. Un caso particular
comunicar procesos mediante un enlace o canal de comunicación, bien
de broadcast, el multicast, permite seleccionar un subconjunto de direcciones a
directamente, identificando el proceso origen o destino respectivamente en las
las que enviar el mensaje. El soporte para multicast es muy útil en sistemas
primitivas de recibir o enviar, bien a través de un buzón, que identifica
replicados, como se verá más adelante. Como ejemplo, el protocolo IP reserva
explícitamente el canal de comunicación. En sistemas tipo UNIX, el mecanismo
un conjunto de direcciones para multicast.
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. El desarrollo de Internet está forzando la evolución de los protocolos de nivel
A este respecto, los sockets de UNIX soportan dos formas de comunicación de red. Así, el protocolo IPv4, cuyas direcciones de 32 bits suponen ya un
alternativas: identificando un socket dentro del sistema de ficheros (entorno problema de escalabilidad, está dejando paso al IPv6, que especifica direcciones
UNIX) o asociando un puerto de comunicación en un nodo concreto (entorno de 128 bits.
Internet). En este último caso se hace precisa la gestión explícita del
direccionamiento. Internet está imponiendo nuevos estilos de comunicación. De este modo, se
aprecia una tendencia general a la utilización de HTTP como protocolo de
Aunque el modelo de programación del paso de mensajes para comunicación acceso a servicios, como evolución del esquema RPC clásico. Por otra parte, la
entre nodos no difiere del de paso de mensajes para comunicación dentro de un distribución de servicios ha provocado una evolución del esquema cliente-
nodo, el hecho de tener que confiar en los protocolos de red introduce servidor clásico hacia estructuras peer-to-peer, donde los roles de cliente y
dependencias derivadas del rendimiento y de la fiabilidad del canal de servidor son intercambiables. En tales sistemas, habitualmente dinámicos, los
comunicación entre nodos.
Alberto Lafuente, Departamento de Arquitectura y Tecnología de Computadores, UPV/EHU Alberto Lafuente, Departamento de Arquitectura y Tecnología de Computadores, UPV/EHU
Introducción a los Sistemas Distribuidos 1.23 Introducción a los Sistemas Distribuidos 1.24
nodos indistintamente ofrecen y solicitan servicios, y eventualmente cooperan almacenar y cargar varios sistemas operativos completos, demasiado oneroso.
en la búsqueda de servicios y en el encaminamiento de peticiones. Todo ello condujo hace unos 25 años a una revisión de la estructura del sistema
operativo. La premisa era sacar del espacio del sistema operativo los servicios
1.5.3 Soporte del sistema operativo susceptibles de ser distribuidos, junto con sus políticas de gestión, dejando
dentro, para su ejecución en modo protegido, únicamente las funciones básicas
En lo que se refiere a la distribución de recursos, cabe pedir del sistema de control del hardware (gestión básica de memoria e interrupciones) y el
operativo (1) que sea abierto, para permitir el desarrollo de los servicios soporte para los cambios de contexto y la comunicación. Este núcleo de sistema
distribuidos, y (2) que proporcione la flexibilidad adecuada para ubicar y operativo se denomina micronúcleo, y proporciona la base adecuada para la
gestionar los servicios eficientemente. Sin embargo, los sistemas clásicos, como distribución de servicios, al permitir la implementación selectiva sobre él, en el
UNIX, monolíticos, no están diseñados de acuerdo a estos objetivos. Ofrecen espacio de usuario y de acuerdo al modelo cliente-servidor, de los servicios
una interfaz de llamadas al sistema única, integran en el núcleo todo tipo de específicos que ofrece el sistema, como módulos independientes. La interfaz de
servicios y proporcionan políticas de gestión predeterminadas. llamadas al sistema se implementa como un subsistema en espacio de usuario,
lo que permite, de manera natural y con escaso overhead, ofrecer personalidad
El enfoque clásico para construir un sistema distribuido en una red es instalar múltiple y soportar concurrentemente aplicaciones y servicios de diferentes
sobre el sistema operativo de cada máquina los mecanismos necesarios para sistemas operativos. El ejemplo más extendido de micronúcleo es el Mach 3.0,
proporcionar el acceso a recursos remotos según el esquema cliente-servidor. base de algunos sistemas comerciales tipo UNIX, como OSF/1, o el actual OS X
Este enfoque proporciona escasa flexibilidad, ya que el servidor de un recurso de Apple para Macintosh.
requiere habitualmente ejecutar un sistema operativo determinado. Por otra
parte, en el lado del cliente, habitualmente se requiere la ejecución de Algunos dispositivos móviles actuales (PDAs y teléfonos móviles) soportan hoy
aplicaciones que deben ser soportadas por plataformas específicas. Un esquema en día versiones reducidas de los sistemas operativos comerciales, e incluso
así de rígido conduce a asociar máquinas concretas a servicios y aplicaciones tienen capacidad para soportar una máquina virtual Java y un navegador Web.
específicos, en detrimento de la flexibilidad y la transparencia en la ubicación. Pero, pese al constante aumento en las prestaciones, sigue siendo necesario
proporcionar un soporte eficiente para los servicios del sistema operativo y la
Una solución para permitir que cualquier nodo de una red soporte red, por la tendencia a la miniaturización de los dispositivos móviles y a la
indistintamente cualquier servicio o aplicación es la emulación de un sistema progresiva introducción de nuevas funcionalidades en los existentes (por
huésped sobre un sistema operativo anfitrión. Esto proporciona personalidad ejemplo, reproductores de música o cámaras fotográficas, y en el futuro relojes o
múltiple a cada nodo15, permitiendo la coexistencia de aplicaciones y servicios, tarjetas).
bien en modo nativo, bien emulados. Existen productos para Windows 2000/XP
y Linux, como VMware, VirtualPC y win4lin, que proporcionan la emulación de 1.6 Estructura de un sistema distribuido
un entorno hardware sobre el que se instala el sistema operativo huésped. El
éxito de estos productos reside en que utilizan una técnica, la virtualización, que El objetivo de un sistema distribuido es integrar los recursos y servicios
permite ejecutar la mayor parte del código en modo nativo, emulando conectados por una red de comunicación. Desde el punto de vista del usuario y
únicamente las llamadas al sistema operativo huésped, por lo que la fuerte de las aplicaciones, un sistema distribuido proporciona una visión de máquina
pérdida de rendimiento inherente a la emulación puede ser asumida por las única y no difiere de uno centralizado (Figura 3). En cambio, el punto de vista
máquinas de hoy en día. del diseñador (el sistema como gestor de los recursos) la estructura interna está
condicionada por la distribución física de los recursos (Figura 4).
Sin embargo, en los primeros años de los sistemas distribuidos la emulación
hardware era prácticamente inasumible, y el propio hecho de tener que
15
En la práctica esto implica que se pueden abrir varias ventanas con diferentes sistemas
operativos en un mismo terminal.
Alberto Lafuente, Departamento de Arquitectura y Tecnología de Computadores, UPV/EHU Alberto Lafuente, Departamento de Arquitectura y Tecnología de Computadores, UPV/EHU
Introducción a los Sistemas Distribuidos 1.25 Introducción a los Sistemas Distribuidos 1.26
Aplicaciones
1.7 Apéndice A: Llamadas a procedimientos
Servicios del sistema
remotos
Hardware (distribuido)
El paso de mensajes permite expresar el modelo cliente-servidor explicitando
Figura 3: Un sistema distribuido desde el punto de vista del usuario. un protocolo de petición-respuesta sobre el servicio al que se desea acceder.
Nótese que este protocolo se basa en una semántica orientada a la entrada-
Lo habitual es que el sistema operativo integre los servicios de red, que ofrecen salida. En cambio, el acceso a recursos en los sistemas operativos tradicionales,
protocolos abiertos de comunicación, como es el caso de TCP y UDP. Sobre mediante la interfaz de llamadas al sistema, se basa en una semántica de
estos se disponen los soportes adicionales para la comunicación distribuida, llamada-retorno a funciones. Siendo la transparencia en la ubicación de los
como es el caso de RPC, RMI o DSM, y los servicios específicos que recursos un objetivo fundamental en los sistemas distribuidos, resulta evidente
proporcionan las propiedades del sistema distribuido (servicios middleware), que el paso de mensajes no proporciona la base semántica adecuada para el
como es el caso de la gestión de tiempos, eventos y estado global, sobre los que acceso a los recursos remotos.
se asientan las aplicaciones.
El mecanismo de llamada a procedimiento remoto (RPC), desarrollado en 1984
por Sun Microsystems, trata de eliminar ese salto semántico. Un proceso cliente
Aplicaciones Aplicaciones Aplicaciones especifica el acceso a un servicio mediante una sintaxis de llamada a función,
por ejemplo:
Servicios Servicios Servicios
Middleware Middleware ... Middleware resultado= servicio_rpc (parámetros)
Sistema operativo Sistema operativo Sistema operativo
y protocolos de y protocolos de y protocolos de El nombre de la función puede identificar el servicio o ser genérico, en cuyo
red red red caso la interfaz de RPCs reconocerá el servicio por alguno de los parámetros.
Hardware distribuido y red de interconexión Análogamente, el servidor que detenta el servicio utiliza el mecanismo de RPCs
para servir las peticiones mediante una función que le permite bloquearse a la
Figura 4: Estructura de un sistema distribuido. espera de peticiones. El procedimiento completo para la ejecución de una RPC
es el siguiente (Figura A1):
16
Se le denomina stub. Viene a ser la función sustituta o representante en el cliente del
procedimiento remoto.
17
EXternal Data Representation. Se ha convertido en un estándar de hecho.
Alberto Lafuente, Departamento de Arquitectura y Tecnología de Computadores, UPV/EHU Alberto Lafuente, Departamento de Arquitectura y Tecnología de Computadores, UPV/EHU
Introducción a los Sistemas Distribuidos 1.27 Introducción a los Sistemas Distribuidos 1.28
(3) Se utiliza la interfaz de red del sistema operativo para enviar un mensaje (12) El mecanismo de RPCs del cliente ejecuta la deserialización del
al servidor que contiene la petición del servicio (por ejemplo, mediante resultado.
UDP/IP).
(13) Devuelve el valor al programa.
(4) El proceso cliente queda bloqueado en la recepción de la respuesta.
Nótese que el servidor estará bloqueado en la ejecución de un procedimiento de
Nodo del Cliente Nodo del Servidor espera. La interfaz de RPCs suministra una función específica para ello. En la
fase de inicialización, el servidor habrá instalado la(s) función(es) asociadas al (a
Cliente Servidor los) servicio(s).
res=servicio_rpc(parám) (7) Función asociada
Mecanismo Mecanismo El nivel semántico de una librería de RPCs puede ser más o menos alto. RPC de
al servicio
RPC cliente RPC servidor
(1) Sun distingue tres niveles de acceso. En el nivel superior se suministran una
(13) param=
serial(param) deserial() serie de funciones y programas normales. A nivel intermedio se suministra una
res=deserial() (2) (6) serial(res) función genérica de llamada para el cliente, callrpc(), y dos para el desarrollo de
(12) (9)
Recibir (4) Enviar Recibir Enviar
(8) servidores. En el nivel de acceso inferior se pueden encontrar funciones
específicas que permiten configurar aspectos básicos de la comunicación, como
(3) (10)
Desbloquear (11) (5) Desbloquear Llamada al llamadas asíncronas (no bloqueantes), y conexión permanente entre cliente y
SO Sistema
servidor (persistent binding).
Recibir Enviar Recibir Enviar
datos datos datos datos
Red
Alberto Lafuente, Departamento de Arquitectura y Tecnología de Computadores, UPV/EHU Alberto Lafuente, Departamento de Arquitectura y Tecnología de Computadores, UPV/EHU
Introducción a los Sistemas Distribuidos 1.29 Introducción a los Sistemas Distribuidos 1.30
18
Este concepto de referencia no debe confundirse con el de puntero a memoria de C. Figura A2. Invocación de métodos remotos (tomado de [TAN02]).
Alberto Lafuente, Departamento de Arquitectura y Tecnología de Computadores, UPV/EHU Alberto Lafuente, Departamento de Arquitectura y Tecnología de Computadores, UPV/EHU
Introducción a los Sistemas Distribuidos 1.31
En una aplicación distribuida en Java RMI, hay que definir las interfaces
remotas e implementar los objetos remotos y los clientes. Una vez compilados
los ficheros fuente, la aplicación se monta de la siguiente forma: