Cuando hay varios usuarios, cada uno tiende a usar las aplicaciones que mejor se ajustan a sus necesidades y gustos. Esto puede provocar una situación de caos.
La
variedad de aplicaciones plantea dos problemas:
•
Portabilidad
•
Aprendizaje
Estos
problemas desaparecen si todos los usuarios usan los mismos programas. Esto se
puede conseguir poniendo los programas a utilizar en un servidor
Algunos
desafíos en los SD son:
En
cuanto a heterogeneidad debemos tener en cuenta que existen:
Redes:
• Redes
diferentes
•
Protocolos Internet
Computadoras:
•
Diferente representación nativa
•
Empaquetado y desempaquetado
Sistemas
operativos:
•
Diferente API
Lenguajes:
•
Diferente representación de datos
•
Lenguajes de definición de interfaz
Implementaciones:
•
Estándares
• Abstrae
detalles de programación
• Elimina
las diferencias (uniformiza)
•
Ejemplos: CORBA, Java RMI, ODBC,...
•
Problemas en el código del NMC
• Posible
solución: máquina virtual.
•
Ejemplos: Java bytecode, Telescript, ...
En
cuanto a extensibilidad debemos tener en cuenta que existen:
Facilidad de adición y
reimplementación de nuevos servicios.
Implica que el sistema esté
construido y documentado de forma abierta
Interfaces
públicas:
De programación
De comunicación
De acceso a los recursos
Estandarización
del software que garantice la interoperabilidad
Certificación
Pruebas de conformidad
(conformance testing)
Ejemplos:
Internet: RFC (www.ietf.org)
CORBA: (www.omg.org)
POSIX: (www.opengroup.org)
En
cuanto a seguridad debemos tener en cuenta que existen:
Vertientes:
Problemas
actuales:
• Ataques
DoS
•
Seguridad del código móvil
• Confianza en el código móvil.
En cuanto a escalabilidad debemos
tener en cuenta:
Escalable:
conserva su efectividad frente al incremento en recursos y clientes.
El sistema
debe ser capaz de admitir más recursos y clientes sin cambiar su modelo.
Puntos
importantes:
• Control
de coste de recursos físicos y prevención de su desbordamiento
Posibilidad de añadir más servidores en la
cantidad O(clientes)
• Control
de pérdidas de prestaciones y evitar cuellos de botella
Técnicas:
•
Replicación,
• Caché,
•
Múltiples servidores,
• Buen
esquema de nominación y encaminamiento.
En cuanto a tratamiento de fallos
debemos tener en cuenta:
Los fallos
en un S.D. Son parciales.
Técnicas para tratamiento de
fallos:
•
Detección de fallos
•
Ocultación de fallos
•
Tolerancia de fallos
•
Recuperación frente a fallos
•
Redundancia
Un buen tratamiento aumenta la disponibilidad
del sistema.
En cuanto a concurrencia debemos
tener en cuenta:
Los
gestores de los recursos deben permitir la concurrencia.
• La
secuencialidad disminuye el throughput del sistema.
La
concurrencia (vía threads) plantea problemas de acceso concurrente a los
recursos.
• Los
gestores deben preocuparse de la correcta secuenciación de las operaciones, en
caso de acceso concurrente.
En cuanto a transparencia debemos
tener en cuenta:
Transparencia: oculta al usuario y
al programador la naturaleza distribuida del sistema.
RM-ODP define las nociones de
transparencia ...
• De
acceso (locales vs. globales)
• De
ubicación (desconoc. ubicación)
• De
concurrencia
• De
replicación
• Frente a
fallos (ocultación de fallos)
•
Movilidad (reubicación de recursos y clientes)
• De
prestaciones (reconfiguración)
• Al
escalado (sin modificar la estructura)
Transparencia de red:
•
Transparencia de acceso
•
Transparencia de ubicación.
Ejemplos:
• Web :
Presenta transparencia de red, Carece de transparencia de movilidad
•
Telefonía móvil: Presenta transparencia de movilidad
• Correo
electrónico: Presenta transparencia de red
•
Impresora: La transparencia de ubicación puede ser
contraproducente.