Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
INTRODUCCION
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 más
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:
Muchos usuarios interactúan simultáneamente con programas de aplicación.
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.
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í:
Redundancia hardware (uso de componentes redundantes) y recuperación del
software (diseño de programas que sean capaces de recuperarse de los fallos).
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.
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.
Ventajas
• Una de las ventajas de los sistemas distribuidos es la economía, pues es
mucho más barato, añadir servidores y clientes cuando se requiere
aumentar la potencia de procesamiento.
Desventajas
• El principal problema es el software, es el diseño, implantación y uso del
software distribuido, pues presenta numerosos inconvenientes. Los
principales interrogantes son los siguientes:
3. Los sistemas distribuidos son más complejos, esto provoca que sea más
difícil comprender sus propiedades.
En general se considera que las ventajas superan a las desventajas, si estas últimas
se administran seriamente.
Aplicaciones Comerciales
Son aplicaciones típicas históricamente construidas con hadware dedicado y
alrededor de sistemas centralizados. Parece que por si inherente distribución y
alrededor de sistemas centralizados, estas aplicaciones se prestan a implementarse
dentro de sistemas distribuidos. Si nos damos cuenta, estas aplicaciones requieren
ciertas características de seguridad y protección.
• Correo Electrónico.
• Servicio de noticias (News).
• Servicio de Tranferencia de Ficheros (FTP).
• Búsqueda de Ficheros(Archie).
• Servicio de Consulta Textual (Gopher).
• World Wide Web (WWW).
Aplicaciones Multimedia
Las aplicaciones multimedia y videoconferencia son las últimas en incorporarse a
los sistemas distribuidos, pues por ser isócronas imponen ciertas necesidades del
hadware, especialmente en lo referente a la velocidad y regularidad de transmisión
de una gran cantidad de datos. Estas aplicaciones incluyen también los conocidos
juegos multiusuario, los cuales son muy exigentes en sus requisitos para una
adecuada ejecución.
• Videoconferencia.
• Televigilancia.
• Juegos multiusuario.
• Enseñanza asistida por ordenador.
Heterogeneidad
La heterogeneidad se aplica en los siguientes elementos:
Redes
Hardware de computadores
Sistemas operativos
Lenguajes de programación
Implementaciones de diferentes
Desarrolladores
Middleware: es el estrato de software que provee una abstracción de programación,
así como un enmascaramiento de la heterogeneidad subyacente de las redes,
hardware, sistemas operativos y lenguajes de programación. Ejem: Corba, Java
RMI
Heterogeneidad y código móvil. Código que puede enviarse desde un computador
a otro y ejecutarse en este último. El concepto de máquina virtual ofrece un modo
de crear código ejecutable sobre cualquier hardware.
Extensibilidad
Es la característica que determina si el sistema puede extenderse de varias
maneras. Un sistema puede ser abierto o cerrado con respecto a extensiones de
hardware o de software. Para lograr la extensibilidad es imprescindible que las
interfaces clave sean publicadas.
Los Sistemas Distribuidos Abiertos pueden extenderse a nivel de hardware
mediante la inclusión de computadoras a la red y a nivel de software por la
introducción de nuevos servicios y el re implementación de los antiguos. Otro
beneficio de los sistemas abiertos es su independencia de proveedores concretos.
Seguridad
La seguridad tiene tres componentes: Confidencialidad: protección contra individuos
no autorizados,
Integridad: protección contra la alteración o corrupción, Disponibilidad: protección
contra la interferencia que impide el acceso a los recursos
Escalabilidad
Se dice que un sistema es escalable si conserva su efectividad cuando ocurre un
incremento significativo en el número de recursos y en el número de usuarios.
Tratamiento de Fallos
Detección de fallos: Ejem. Se pueden utilizar sumas de comprobación (checksums)
para detectar datos corruptos en un mensaje.
Enmarascamiento de fallos: Ejem: Los mensajes pueden retransmitirse, Replicar los
datos.
Tolerancia de fallos: los programas clientes de los servicios pueden diseñarse para
tolerar ciertos fallos. Esto implica que los usuarios tendrán también que tolerarlos.
Recuperación de fallos: implica el diseño de software en el que, tras una caída del
servidor, el estado de los datos puede reponerse o retractarse (rollback) a una
situación anterior.
Redundancia: emplear componentes redundantes.
Concurrencia
Existe la posibilidad de acceso concurrente a un mismo recurso. La concurrencia en
los servidores se puede lograr a través de threads. Cada objeto que represente un
recurso compartido debe responsabilizarse de garantizar que opera correctamente
en un entorno concurrente. Para que un objeto sea seguro en un entorno
concurrente, sus operaciones deben sincronizarse de forma que sus datos
permanezcan consistentes.
Transparencia
Transparencia de acceso: permite acceder a los recursos locales y remotos
empleando operaciones idénticas.
Transparencia de ubicación: permite acceder a los recursos sin conocer su
localización.
Transparencia de concurrencia: permite que varios procesos operen
concurrentemente sobre recursos compartidos sin interferencia mutua.
Transparencia de replicación: permite replicar los recursos sin que los usuarios y
los programadores necesiten su conocimiento.
Transparencia frente a fallos: permite ocultar fallos.
Transparencia de movilidad: permite la reubicación de recursos y clientes en un
sistema sin afectar la operación de los usuarios y los programas.
Transparencia de rendimiento: permite reconfigurar el sistema para mejorar el
desempeño según varíe su carga.
Transparencia al escalado: permite al sistema y a las aplicaciones expandirse en
tamaño sin cambiar la estructura del sistema o los algoritmos de aplicación.
http://www.sc.ehu.es/acwlaroa/SDI/Apuntes/Cap1.pdf
http://sistemas-distribuidos-unerg.blogspot.com/2008/10/caractersticas-principales-
de-los.html
https://sistemasdistribuidosetitc.weebly.com/ventajas-y-desventajas.html
http://sistemasdistribuidos.foroactivo.com/t103-usos-y-tendencias-de-los-sistemas-
distribuidos
http://puraslineas.com/2011/01/31/%C2%BFcuales-son-los-desafios-de-los-
sistemas-distribuidos/
https://sdistribuidos.blogspot.com/
http://exa.unne.edu.ar/informatica/SO/Blasco-
Comunicacion_en_los_Sist_Distrib.pdf
https://ederluisdsd.files.wordpress.com/2013/04/sistema-distribuido.png