Sunteți pe pagina 1din 12

SISTEMAS OPERATIVOS II 2018

UNIDAD 1. INTRODUCCIÓN A LOS SISTEMAS DISTRIBUIDOS

1.1 DEFINICIÓN DE SISTEMAS DISTRIBUIDOS

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.

• Proporciona una aceleración de cálculo dentro de la aplicación y un mejor desempeño del


sistema, al permitir a los procesos de una aplicación competir por los CPU en diferentes
nodos.
• Usa la redundancia de recursos y ligas de la red en el sistema a fin de proporcionar alta
confiabilidad.
Estas características se resumen en la siguiente tabla:

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

ME. LETICIA DE J. CERVERA RODRÍGUEZ |


SISTEMAS OPERATIVOS II 2018
Estas características se realizan usando los siguientes componentes de hardware y software:

• Componentes de hardware: Sistemas de cómputo individuales y hardware de realización


de redes tales como cables, ligas y amplificadores.
• Componentes de software: Componentes de sistemas operativos que manejan la creación
y planeación de cálculos distribuidos y recursos distantes, herramientas de SO y lenguajes
de programación que admiten la escritura de cálculos distribuidos, así como software de
realización de redes que aseguran la comunicación confiable.

1.2 OBJETIVOS DEL SISTEMA DISTRIBUIDO

Si en las aplicaciones paralelas el rendimiento es el objetivo fundamental, una aplicación


distribuida puede presentar muy diversas motivaciones:

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

ME. LETICIA DE J. CERVERA RODRÍGUEZ |


SISTEMAS OPERATIVOS II 2018
• 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. Es el caso de las aplicaciones de Inteligencia Ambiental
(AmI), un campo que está creando enormes expectativas.

1.3 TIPOS DE SISTEMAS DISTRIBUIDOS

Una clasificación altamente reconocida para los sistemas distribuidos es:

• Sistemas distribuidos de cómputo


• Sistemas distribuidos de información
• Sistemas distribuidos masivos o embebidos

SISTEMAS DISTRIBUIDOS DE CÓMPUTO

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

ME. LETICIA DE J. CERVERA RODRÍGUEZ |


SISTEMAS OPERATIVOS II 2018
específicas de hardware, sistemas operativos, redes, dominios administrativos, políticas de
seguridad, etc.). El propósito de un sistema de cómputo en grid es reunir los recursos de
diferentes organizaciones para permitir la colaboración de un grupo de personas o
instituciones. Tal colaboración se realiza de en la forma de una organización virtual. La
gente que pertenece a la misma organización virtual tiene derechos de acceso a los
recursos que proporciona la organización. Los recursos generalmente constan de
servidores (incluso supercomputadoras). Este tipo de sistema utiliza una arquitectura en
capas:
- Capa de fabricación: Proporciona interfaces para recursos locales ubicados en un
sitio especifico. (Consultar estado y capacidades de un recurso).
- Capa de conectividad: Consiste en protocolos de comunicación para dar soporte a
las transacciones del grid que abarca el uso de múltiples recursos. (Protocolos
necesarios para transferir datos entre los recursos o acceder a un recurso
remotamente).
- Capa de recursos: Es responsable de la administración de un solo recurso. (Control
de acceso, autentificación creación de procesos de lectura y escritura).
- Capa de colectiva: Se encarga de manipular el acceso a múltiples recursos y, por lo
general consta de servicios para descubrir recursos, ubicación y calendarización de
tareas dentro de múltiples recursos y replicación de datos. (Protocolos para la
organización virtual de los recursos).
- Capa de aplicaciones: Consta de aplicaciones que operan dentro de una
organización virtual y hacen uso del ambiente de cómputo en grid.
Por lo general, las capas colectiva, de conectividad, y de recursos forman el núcleo de
lo que podríamos llamar una capa grid middleware. Juntas, estas capas proporcionan
acceso y administración de los recursos que están potencialmente dispersos a través
de muchos sitios. (Idea de un solo sitio o unidad de administración común).

SISTEMAS DISTRIBUIDOS DE INFORMACIÓN

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

ME. LETICIA DE J. CERVERA RODRÍGUEZ |


SISTEMAS OPERATIVOS II 2018
integración de los componentes de bases de datos y de procesos implica que, no obstante que se
encuentran separados, existe comunicación entre los componentes. Lo anterior ha generado una
industria de sistemas que se concentra en la integración de sistemas empresariales, entre los que
podemos encontrar los sistemas de procesamiento de transacciones, puesto que la mayor parte
de los sistemas distribuidos de información se caracterizan por la necesidad de realizar
operaciones transaccionales.

SISTEMAS OPERATIVOS MASIVOS (EMBEBIDOS)

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

ME. LETICIA DE J. CERVERA RODRÍGUEZ |


SISTEMAS OPERATIVOS II 2018
bases de datos distribuidas. (Es necesario almacenar y comunicar datos de medición y
vigilancia).

1.4 ARQUITECTURA

El modelo más simple de un sistema distribuido es un sistema multiprocesador en el que el


software está formado por varios procesos que pueden (aunque no necesariamente) ejecutarse
sobre procesadores diferentes. Este modelo es común en sistemas grandes de tiempo real. Estos
sistemas recogen información, toman decisiones usando esta información y envían señales a los
actuadores que modifican el entorno del sistema.
Lógicamente, los procesos relacionados con la recopilación de información, toma de decisión y
control de actuadores podrían ejecutarse todos ellos sobre un único procesador bajo el control de
un planificador (scheduler). El uso de múltiples procesadores mejora el rendimiento y
adaptabilidad del sistema. La distribución de procesos ente los procesadores puede ser
predeterminada (esto es común en sistemas críticos) o puede estar bajo el control de un
despachado (dispatcher) que decide que procesos se asignan a cada procesador.
Un ejemplo de este tipo de sistemas se muestra se muestra a continuación:

Este es un módulo simplificado de sistema de control de tráfico. Unos conjuntos de sensores


distribuidos recogen información sobre el flujo de tráfico y la procesan localmente antes de
enviarla a una sala de control. Los operadores toman decisiones usando información y dan
instrucciones a un proceso de control de diversas luces de tráfico. En este ejemplo, hay varios 6
procesos lógicos para gestionar los sensores, la sala de control y los semáforos. Estos procesos
lógicos pueden ser procesos individuales o un grupo de procesos.

ME. LETICIA DE J. CERVERA RODRÍGUEZ |


SISTEMAS OPERATIVOS II 2018
Los sistemas de software compuestos de múltiples procesos no son necesariamente sistema
distribuidos. Si se dispone de más de un procesador, entonces se puede implementar la
distribución, pero los diseñadores del sistema no siempre consideran forzosamente cuestiones de
distribución durante el proceso de diseño. La aproximación de diseño para este tipo de sistemas es
esencialmente la misma para sistema de tiempo real.

ARQUITECTURAS CLIENTE-SERVIDOR

En una arquitectura cliente-servidor, una aplicación se modela como un conjunto de servicios


proporcionado por los servidores y un conjunto de clientes que usan estos servicios. Los clientes
necesitan conocer que servidores están disponibles, pero normalmente no conocen la existencia
de otros clientes. Clientes y servidores son procesos diferentes que representan un modelo lógico
de una arquitectura distribuida 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.

ME. LETICIA DE J. CERVERA RODRÍGUEZ |


SISTEMAS OPERATIVOS II 2018

El diseño de sistemas clientes-servidor debería reflejar la estructura lógica de la aplicación que se


está desarrollando. Una forma de ver una aplicación se muestra a continuación:

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:

ME. LETICIA DE J. CERVERA RODRÍGUEZ |


SISTEMAS OPERATIVOS II 2018
1. Modelo de cliente ligero (thin-client): En un modelo de cliente ligero, todo el
procesamiento de las aplicaciones y la gestión de los datos se llevan a cabo en el servidor.
El cliente simplemente es responsable de la capa de presentación del software.
2. Modelo de cliente pesado (fat-client): En este modelo, el servidor solamente es
responsable de la gestión de los datos. El software del cliente implementa la lógica de la
aplicación y las interacciones con el usuario del sistema.

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

ME. LETICIA DE J. CERVERA RODRÍGUEZ |


SISTEMAS OPERATIVOS II 2018
sistema middleware que organiza las comunicaciones con los clientes remotos y serializa las
transacciones de los clientes para su procesamiento en la base de datos. El uso de transacciones
serializadas significa que el sistema puede recuperarse de los defectos sin corromper los datos del
sistema.
Aunque el modelo de cliente pesado distribuye el procesamiento de forma más efectiva que un
modelo de cliente ligero, la gestión del sistema es más compleja. La funcionalidad de la aplicación
se expande ente varias computadoras. Cuando la aplicación software tiene que ser modificada,
esto implica la reinstalación en cada computador cliente. Esto puede significar un coste
importante si hay cientos de clientes en el sistema.

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

ME. LETICIA DE J. CERVERA RODRÍGUEZ |


SISTEMAS OPERATIVOS II 2018

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

ME. LETICIA DE J. CERVERA RODRÍGUEZ |


SISTEMAS OPERATIVOS II 2018
algunos casos, puede distribuirse entre la lógica de la aplicación y los servidores de gestión de
datos, en cuyo caso permite una respuesta más rápida a las peticiones de los clientes.
Los diseñadores de las arquitecturas cliente-servidor deben tener en cuenta una serie de factores
cuando eligen la arquitectura más adecuada. A continuación, se muestran las situaciones en las
cuales las arquitecturas cliente-servidor son probablemente las más adecuadas.

12

ME. LETICIA DE J. CERVERA RODRÍGUEZ |

S-ar putea să vă placă și