Dra. Sara Elena Garza Villarreal
Materia: Programación Orientada a Objetos
Matricula: 1454810
Hora: M1-M3 (Jueves)
Un
sistema distribuido se define como una colección de computadoras separadas
físicamente y conectadas entre sí por una red de comunicaciones distribuida;
cada máquina posee sus componentes de hardware y software que el usuario
percibe como un solo sistema. El usuario accede a los recursos remotos (RPC) de la misma manera en que accede a recursos
locales, o un grupo de computadores que usan un software para conseguir un
objetivo en común.
Compartición
de Recursos
La idea
de compartición de recursos no es nueva ni aparece en el marco de los sistemas
distribuidos. Los sistemas multiusuario clásicos desde siempre han provisto
compartición de recursos entre sus usuarios. Sin embargo, los recursos de una
computadora multiusuario se comparten de manera natural entre todos sus
usuarios. Por el contrario, los usuarios de estaciones de trabajo monousuario o
computadoras personales dentro de un sistema distribuido no obtienen
automáticamente los beneficios de la compartición de recursos.
Los recursos en un sistema distribuido están físicamente encapsulados en una de
las computadoras y sólo pueden ser accedidos por otras computadoras mediante
las comunicaciones (la red). Para que la compartición de recursos sea efectiva,
ésta debe ser manejada por un programa que ofrezca un interfaz de comunicación
permitiendo que el recurso sea accedido, manipulado y actualizado de una manera
fiable y consistente.
Apertura (opennesss)
Un
sistema informático es abierto si el sistema puede ser extendido de diversas
maneras. Un sistema puede ser abierto o cerrado con respecto a extensiones
hardware (añadir periféricos, memoria o interfaces de comunicación, etc.) o con
respecto a las extensiones software (añadir características al sistema
operativo, protocolos de comunicación y servicios de compartición de recursos,
etc.). La apertura de los sistemas distribuidos se determina primariamente por
el grado hacia el que nuevos servicios de compartición de recursos se pueden
añadir sin perjudicar ni duplicar a los ya existentes.
Básicamente los sistemas distribuidos cumplen una serie de características:
Los interfaces software clave del sistema están claramente especificados y se
ponen a disposición de los desarrolladores. En una palabra, los interfaces se
hacen públicos.
Los sistemas distribuidos abiertos se basan en la provisión de un mecanismo
uniforme de comunicación entre procesos e interfaces publicados para acceder a
recursos compartidos.
Los sistemas distribuidos abiertos pueden construirse a partir de hardware y
software heterogéneo, posiblemente proveniente de vendedores diferentes. Pero
la conformidad de cada componente con el estándar publicado debe ser
cuidadosamente comprobada y certificada si se quiere evitar tener problemas de
integración.
Concurrencia
Cuando
existen varios procesos en una única maquina decimos que se están ejecutando
concurrentemente. Si el ordenador está equipado con un único procesador
central, la concurrencia tiene lugar entrelazando la ejecución de los distintos
procesos. Si la computadora tiene N procesadores, entonces se pueden estar
ejecutando estrictamente a la vez hasta N procesos.
En los sistemas distribuidos hay muchas maquinas, cada una con uno o mas
procesadores centrales. Es decir, si hay M ordenadores en un sistema
distribuido con un procesador central cada una entonces hasta M procesos estar
ejecutándose en paralelo.
En un sistema distribuido que está basado en el modelo de compartición de
recursos, la posibilidad de ejecución paralela ocurre por dos razones:
1.- Muchos usuarios interactúan simultáneamente con programas de aplicación.
2.- Muchos
procesos servidores se ejecutan concurrentemente, cada uno respondiendo a
diferentes peticiones de los procesos clientes.
Escalabilidad
Los
sistemas distribuidos operan de manera efectiva y eficiente a muchas escalas
diferentes. La escala más pequeña consiste en dos estaciones de trabajo y un
servidor de ficheros, mientras que un sistema distribuido construido alrededor
de una red de área local simple podría contener varios cientos de estaciones de
trabajo, varios servidores de ficheros, servidores de impresión y otros
servidores de propósito específico. A menudo se conectan varias redes de área
local para formar internetworks, y éstas podrían contener muchos miles de
ordenadores que forman un único sistema distribuido, permitiendo que los
recursos sean compartidos entre todos ellos.
Tanto el software de sistema como el de aplicación no deberían cambiar cuando
la escala del sistema se incrementa. La necesidad de escalabilidad no es solo
un problema de prestaciones de red o de hardware, sino que está íntimamente
ligada con todos los aspectos del diseño de los sistemas distribuidos. El
diseño del sistema debe reconocer explícitamente la necesidad de escalabilidad
o de lo contrario aparecerán serias limitaciones.
La demanda de escalabilidad en los sistemas distribuidos ha conducido a una
filosofía de diseño en que cualquier recurso simple -hardware o software- puede
extenderse para proporcionar servicio a tantos usuarios como se quiera. Esto
es, si la demanda de un recurso crece, debería ser posible extender el sistema
para darla servicio.
Tolerancia a Fallos
Los
sistemas informáticos a veces fallan. Cuando se producen fallos en el software
o en el hardware, los programas podrían producir resultados incorrectos o
podrían pararse antes de terminar la computación que estaban realizando. El
diseño de sistemas tolerantes a fallos se basa en dos cuestiones,
complementarias entre sí:
1.- Redundancia
hardware (uso de componentes redundantes)
2.- Recuperación
del software (diseño de programas que sean capaces de recuperarse de los
fallos).
En los sistemas distribuidos la redundancia puede plantearse en un grano más
fino que el hardware, pueden replicarse los servidores individuales que son
esenciales para la operación continuada de aplicaciones críticas.
La recuperación del software tiene relación con el diseño de software que sea
capaz de recuperar (roll-back) el estado de los datos permanentes antes de que
se produjera el fallo.
Los sistemas distribuidos también proveen un alto grado de disponibilidad en la
vertiente de fallos hardware. La disponibilidad de un sistema es una medida de
la proporción de tiempo que está disponible para su uso. Un fallo simple en una
maquina multiusuario resulta en la no disponibilidad del sistema para todos los
usuarios. Cuando uno de los componentes de un sistema distribuidos falla, solo
se ve afectado el trabajo que estaba realizando el componente averiado. Un
usuario podría desplazarse a otra estación de trabajo; un proceso servidor
podría ejecutarse en otra máquina.
Transparencia
La
transparencia se define como la ocultación al usuario y al programador de
aplicaciones de la separación de los componentes de un sistema distribuido, de
manera que el sistema se percibe como un todo, en vez de una colección de
componentes independientes. La transparencia ejerce una gran influencia en el
diseño del software de sistema.
El manual de referencia RM-ODP [ISO 1996a] identifica ocho formas de
transparencia. Estas proveen un resumen útil de la motivación y metas de los
sistemas distribuidos. Las transparencias definidas son:
Transparencia de Acceso: Permite el acceso a los objetos de información
remotos de la misma forma que a los objetos de información locales.
Transparencia de Localización: Permite el acceso a los objetos de
información sin conocimiento de su localización.
Transparencia de Concurrencia: Permite que varios procesos operen concurrentemente
utilizando objetos de información compartidos y de forma que no exista
interferencia entre ellos.
Transparencia de Replicación: Permite utilizar múltiples instancias de los
objetos de información para incrementar la fiabilidad y las prestaciones sin
que los usuarios o los programas de aplicación tengan por que conoces la
existencia de las réplicas.
Transparencia de Fallos: Permite a los usuarios y programas de aplicación
completar sus tareas a pesar de la ocurrencia de fallos en el hardware o en el
software.
Transparencia de Migración: Permite el movimiento de objetos de
información dentro de un sistema sin afectar a los usuarios o a los programas
de aplicación.
Transparencia de Prestaciones. Permite que el sistema sea reconfigurado
para mejorar las prestaciones mientras la carga varia.
Transparencia de Escalado: Permite la expansión del sistema y de las
aplicaciones sin cambiar la estructura del sistema o los algoritmos de la
aplicación.
Las dos más importantes son las transparencias de acceso y de localización; su
presencia o ausencia afecta fuertemente a la utilización de los recursos
distribuidos. A menudo se las denomina a ambas transparencias de red. La transparencia
de red provee un grado similar de anonimato en los recursos al que se encuentra
en los sistemas centralizados.
Ventajas
Ø Procesadores
más poderosos y a menos costos
-
Desarrollo de Estaciones con más
capacidades
-
Las estaciones satisfacen las necesidades
de los usuarios.
-
Uso de nuevas interfaces.
Ø Avances
en la Tecnología de Comunicaciones.
-
Disponibilidad de elementos de
Comunicación.
-
Desarrollo de nuevas técnicas.
Ø Compartición
de Recursos.
-
Dispositivos (Hardware).
-
Programas (Software).
Ø Eficiencia
y Flexibilidad.
-
Respuesta Rápida.
-
Ejecución Concurrente de procesos (En
varias computadoras).
-
Empleo de técnicas de procesamiento
distribuido.
Ø Disponibilidad
y Confiabilidad.
-
Sistema poco propenso a fallas (Si un
componente no afecta a la disponibilidad del sistema).
-
Mayores servicios que elevan la
funcionalidad ( Monitoreo, Telecontrol, Correo Eléctrico, Etc.).
Ø Crecimiento
Modular.
-
Es inherente al crecimiento.
-
Inclusión rápida de nuevos recursos.
Desventajas
-
Requerimientos de mayores controles de
procesamiento.
-
Velocidad de propagación de información
(es lenta a veces).
-
Servicios de replicación de datos y
servicios con posibilidades de fallas.
-
Mayores controles de acceso y proceso
(Commit).
-
Administración más compleja.
-
Costos.
REFERENCIAS