Documente Academic
Documente Profesional
Documente Cultură
Un sistema distribuido consiste en varios nodos, donde cada uno es un sistema de cómputo con su
propio reloj y memoria que pueden comunicarse entre sí a través de una red. Un sistema
operativo distribuido aprovecha estas características de la siguiente manera:
• Permite que un usuario estructure su aplicación como un cálculo distribuido, que consiste
en varios procesos ubicados en diferentes nodos del sistema distribuido.
• Da servicio a todos los procesos del sistema de forma eficiente, equilibrando las cargas
computacionales en varias computadoras mediante la transferencia de procesos entre
nodos si es necesario.
CARACTERÍSTICAS DESCRIPCIÓN
Compartición de Las aplicaciones pueden usar recursos ubicados en cualquier
recursos sistema de computación.
Confiabilidad Provee la disponibilidad, es decir, la continuidad de los servicios a
pesar de fallas. Esto se logra mediante redundancias en la red y en
los recursos, así como en los servicios del SO.
Aceleración de la Se logra mediante la ejecución de partes de una computación en
computación paralelo en diferentes sistemas de cómputo.
Comunicación Usuarios de sus subcomputaciones ubicados en diferentes nodos
pueden comunicarse en forma confiable usando los servicios del
SO.
Crecimiento incremental Los estándares de sistema abierto permiten que se añadan nuevos
subsistemas a un sistema distribuido sin tener que reemplazar o
actualizar subsistemas existentes. De este modo, el costo para
aumentar las capacidades de un sistema distribuido es
proporcional a la deseada capacidad adicional. 1
• 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 para reducir el tiempo de finalización.
Precisamente, este tipo de esquema de cómputo (computación en cluster) ofrece hoy una
excelente relación rendimiento/coste y se encuentra en expansión frente a los tradicionales
supercomputadores.
• 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. En estos sistemas es crítico conseguir una actualización
consistente de las réplicas.
• 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). La consistencia en la actualización no suele ser un aspecto crítico; en cambio
importa mucho la escalabilidad. Hoy en día están muy extendidos los sistemas peer-to-peer,
caracterizados por su gran escalabilidad al evitar los cuellos de botella del servidor,
ofreciendo disponibilidad de recursos de manera prácticamente indiscriminada. Un ejemplo
son las redes de distribución de contenidos, como BitTorrent.
• Movilidad. La abundancia de dispositivos físicos 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. Por ejemplo, un mensaje de correo borrado desde el
teléfono móvil debería aparecer como borrado cuando posteriormente el usuario acceda a su
correo desde su computadora personal. Se hace imprescindible desligar la información de su
soporte, gestionando convenientemente las actualizaciones. Cada vez más se trabaja sobre
espacios virtuales de información en vez de sobre dispositivos físicos concretos, que se 2
convierten en meras caches del espacio de información del usuario. Así, el usuario se mueve
desde un dispositivo a otro y accede al espacio de su información de forma actualizada y
consistente.
Clase de sistemas distribuidos utilizada para realizar tareas de cómputo de alto rendimiento, entre
los que se encuentran: el cómputo en clúster y el cómputo en malla (grid).
• Sistemas de cómputo en clúster: Los sistemas de cómputo en clúster adquirieron
popularidad cuando mejoró la relación precio-rendimiento de las computadoras
personales y las estaciones de trabajo. Se volvió económico la construcción de una super
computadora usando tecnologías económicas y computadoras simples (homogéneas)
ubicadas dentro de una red de alta velocidad. En virtualmente todos los casos, la
computación el clúster se utiliza para la ejecución de aplicaciones paralelas, donde un solo
programa (de cálculo intensivo) corre paralelamente en múltiples máquinas. Un ejemplo
muy conocido de computadora clúster, es la formada por clústeres basados en distintas
distribuciones de Linux (p.e. Beowulf). Cada clúster consta de una colección de nodos de
cómputo controlados, y se accede a ellos mediante un solo maestro. El nodo maestro
manipula la ubicación de los nodos para el programa paralelo. Mantienen una cola de
procesamiento por lotes de trabajos enviados y proporciona una interface para los
usuarios del sistema. Realmente el nodo maestro ejecuta un middleware necesario para la
ejecución de los programas y la administración del clúster. Una parte importante del
middleware está formada por las bibliotecas necesarias para la ejecución de programas
(bibliotecas de interfaz de paso de mensajes generalmente). También existen otro tipo de
herramientas como MOSIX para intentar proporcionar una imagen de sistema único del
clúster. 3
• Sistemas de cómputo en grid: Una característica de los clústeres es la homogeneidad
(mismo sistema operativo conectadas a la misma red). Por el contrario, los sistemas
basados en grid tienen un alto grado de heterogeneidad (no se establecen características
Son sistemas organizacionales y corporativos, los cuales implican la conjunción de aplicaciones que
inter-operan gracias a una red.
Inicialmente los sistemas constaban de un equipo que ejecutaba un servidor (con frecuencia
servidor de base de datos) y de programas remotos llamados clientes. Dichos clientes son capaces
de enviar peticiones y recibir respuesta de servidor. La integración a nivel más bajo y sencillo se
realizaba registrando en los programas cliente cierto número de peticiones dirigidas a distintos
servidores y dentro de una petición más grande ejecutarla como una transacción distribuida. La 4
idea clave era que todas, o ninguna pudiera ser ejecutada. Mientras más sofisticadas se hicieron
las aplicaciones, se fueron separando de manera gradual en componentes independientes
(distinguiendo entre los componentes de base de datos y los componentes de proceso). La
Los tipos de sistemas distribuidos previos se caracterizan por su estabilidad (nodos fijos, conexión
más o menos permanente y fija a una red). Con los dispositivos de cómputo móviles y embebidos
nos enfrentamos con sistemas distribuidos en los cuales la inestabilidad es el comportamiento
predeterminado.
Este tipo de sistemas entra dentro del tipo de masivos o embebidos. Tal como lo sugiere su
nombre, un sistema móvil distribuido es parte de nuestro entorno (y como tal, está
inherentemente distribuido). Una característica importante es su carencia general de control
administrativo humano. En el mejor de los casos, los dispositivos son configurados por sus
propietarios, ya que de otro modo necesitan descubrir automáticamente su ambiente y
"adaptarse" de la mejor manera posible.
Los equipos móviles deberán de ser capaces de descubrir eficientemente servicios, y de reaccionar
en consecuencia (la transparencia en la distribución en realidad no sucede en los sistemas masivos
pues no es posible mostrar a los usuarios que se trata de una sola computadora). La distribución
de datos, procesos y control es inherente a estos sistemas, razón por la cual se expone en lugar de
ocultarla.
Algunos ejemplos de sistemas masivos son los sistemas caseros, sistemas electrónicos para el
cuidado de la salud y las redes de monitoreo.
• Sistemas caseros: Consisten de una o más computadoras personales e integran aparatos
personales como televisores, equipos de audio y video, teléfonos inteligentes, cámaras de
vigilancia, etc.
• Sistemas electrónicos para el cuidado de la salud: Sistemas pensados para dar
seguimiento al bienestar de las personas con el fin de que se pongan en contacto
automáticamente con los médicos en caso de ser necesario. Frecuentemente se trata de
sistemas organizados en una BAN (body-area network).
• Redes de monitoreo: Se utilizan para procesar información. Colecciones de nodos fijos
que se comunican a través de nodos inalámbricos y generalmente alimentados por 5
baterías. Nodos equipados con algún tipo de sensor y limitados recursos. Sus restringidas
capacidades de comunicación, y su consumo de energía, demandan alta eficiencia. La
relación con los sistemas distribuidos se debe a que se consideran sistemas que modelan
1.4 ARQUITECTURA
ARQUITECTURAS CLIENTE-SERVIDOR
Varios procesos servidores pueden ejecutarse sobre un único procesador servidor, por lo tanto, no
hay necesariamente una correspondencia 1:1 ente procesos y procesadores en el sistema. La
siguiente figura muestra la arquitectura física de un sistema con seis computadoras cliente y dos
computadoras servidor. Estos pueden ejecutar los procesos cliente y servidor mostrados en la
figura anterior. Cuando hacemos referencia a clientes y servidores, nos referimos a los procesos
lógicos en vez de a las computadoras físicas sobre las que se ejecutan.
Esta es una aplicación estructurada en tres capas. La capa de presentación está relacionada con la
presentación de la información al usuario y con toda la interacción con él. La capa de
procesamiento de la aplicación está relacionada con la implementación de la lógica de la
aplicación, y la capa de gestión de datos está relacionada con todas las operaciones sobre la base
de datos. En los sistemas centralizados, estas capas no necesariamente están claramente
separadas. Sin embargo, cuando se está diseñando un sistema distribuido, deberían hacerse una
clara distinción entre ellas, de forma que sea posible distribuir cada capa sobre una computadora
diferente.
La arquitectura cliente-servidor más simple se denomina arquitectura cliente-servidor de dos
capas, en la que una aplicación se organiza como un servidor (o múltiples servidores idénticos) y
8
un conjunto de clientes. Las arquitecturas cliente-servidor de dos capas a su vez pueden ser de dos
tipos:
Una arquitectura de dos capas con clientes ligeros es la aproximación más simple que se utiliza
cuando los sistemas heredados centralizados evolucionan a una arquitectura cliente-servidor. La
interfaz de usuario para estos sistemas se migra a PCs, y la aplicación en sí misma actúa como un
servidor y maneja todo el procesamiento de la aplicación y gestión de datos. Un modelo de cliente
ligero también puede implementarse cuando los clientes son dispositivos de red sencillos en lugar
de PCs o estaciones de trabajo. El dispositivo de red ejecuta un navegador de internet y la interfaz
de usuario es implementada a través de ese sistema.
Una gran desventaja del modelo de cliente ligero es que ubica una elevada carga de
procesamiento tanto en el servidor como en la red. El servidor es responsable de todos los
cálculos, y esto puede implicar la generación de un tráfico significativo en la red entre el cliente y
el servidor. Los dispositivos de computación modernos disponen de una gran cantidad de potencia
de procesamiento, la cual es bastante poco usada en la aproximación de cliente ligero.
El modelo de cliente rico hace uso de esta potencia de procesamiento disponible y distribuye
tanto el procesamiento de la lógica de la aplicación como la representación al cliente. El servidor
es esencialmente un servidor de transacciones que gestiona todas las transacciones de la base de
datos. Un ejemplo de este tipo de arquitectura es la de los sistemas bancarios ATM, en donde
cada ATM es un cliente y el servidor es un mainframe que procesa la cuenta del cliente en la base
de datos. El hardware de los cajeros automáticos realiza una gran cantidad de procesamiento
relacionado con el cliente y asociado a la transacción. 9
Se puede observar que los ATM no se conectan directamente con la base de datos de clientes sino
con un monitor de teleproceso. Un monitor de teleproceso o gestor de transacciones es un
La aparición del código móvil (como los applets de java y los controles Active X), que pueden
descargarse en un cliente desde un servidor, ha permitido el desarrollo de sistemas clientes-
servidor que son algo intermedio entre los modelos de cliente ligero y pesado. Algunas de las
aplicaciones de procesamiento de software pueden descargarse en el cliente como código móvil,
aligerando así la carga en el servidor. La interfaz de usuario se crea usando un navegador web que
incluye utilidades de construcción de programas para ejecutar el código descargado.
El problema con una aproximación cliente-servidor de dos capas es que las tres capas lógicas -
presentación, procesamiento de la aplicación y gestión de datos- deben asociarse con dos
computadoras, el cliente y el servidor. Aquí puede haber problemas con la escalabilidad y
rendimiento si se elige el modelo de cliente ligero, o problemas con la gestión del sistema si se usa
el modelo de cliente pesado. Para evitar estos problemas, una aproximación alternativa es usar la
arquitectura cliente-servidor de tres capas. En esta arquitectura, la presentación, el procesamiento
de la aplicación y la gestión de los datos son procesos lógicamente separados que se ejecutan
sobre procesadores diferentes.
10
Un sistema bancario por internet es un ejemplo de una arquitectura cliente-servidor de tres capas.
La base de datos de clientes del banco (usualmente ubicada sobre una computadora mainframe)
proporciona servicios de gestión de datos; un servidor web proporciona los servicios de aplicación
tales como facilidades para transferir efectivo, generar estados de cuenta, pagar facturas, y así
sucesivamente; y la propia computadora del usuario con un navegador de internet es el cliente. El
sistema es escalable debido a que es relativamente fácil añadir nuevos servidores web a medida
que el número de clientes crece.
El uso de una arquitectura de tres capas en este caso permite optimizar la transferencia de
información entre el servidor web y el servidor de base de datos. Las comunicaciones entre estos
sistemas pueden usar protocolos de comunicación de bajo nivel muy rápidos. Para manejar la
recuperación de información de la base de datos se utiliza un middleware eficiente que soporte
consultas a la base de datos en SQL.
En algunos casos resulta adecuado extender el modelo cliente-servidor de tres capas a una
variante multicapa en la que se añaden al sistema servidores adicionales. Los sistemas multicapa
pueden usarse cuando las aplicaciones necesitan acceder y usar datos de diferentes bases de
datos. En este caso, un servidor de integración se ubica entre el servidor de aplicaciones y los
servidores de la base de datos. El servidor de integración recoge los datos distribuidos y los
presenta a la aplicación como si se obtuviesen desde una única base de datos.
Las arquitecturas cliente-servidor de tres capas y la variante multicapa que distribuyen el
procesamiento de la aplicación entre varios servidores son intrínsecamente más escalables que las 11
arquitecturas de dos capas. El tráfico de la red se reduce al contrario que con las arquitecturas de
dos capas de cliente ligero. El procesamiento de la aplicación es la parte más volátil del sistema, y
puede ser fácilmente actualizada debido a que está localizada centralmente. El procesamiento, en
12