Title: Sistemas Operativos Distribuidos
1Sistemas Operativos Distribuidos
Presentación
2Referencias Básicas
- Distributed Operating Systems
- A. S. Tanenbaum
- Prentice-Hall, 1995
- Distributed Systems Concepts and Design
- G. Coulouris, J. Dollimore, T. Kindberg
- Addison-Wesley, 2001
- Pattern-Oriented Software Architecture Patterns
for Concurrent and Networked Objects (Vol 2). - D. Schmidt, M. Stal, H. Rohnert, F. Bruschmann
- Wiley, 2000
3Referencias Básicas
- Distributed Operating Systems Concepts
Practice - D. L. Galli
- Prentice-Hall, 2000
- Distributed Operating Systems Algorithms
- R. Chow, T. Johnson
- Addison-Wesley, 1997
- Traducción al Castellano
- Sistemas Operativos Distribuidos
- A. S. Tanenbaum
- Prentice-Hall, 1996
4Índice del Curso
- Índice de Temas
- Introducción y conceptos
- Comunicación en sistemas distribuidos
- Sistemas de ficheros distribuidos y servicios de
directorio. - Sincronización y coordinación
- Sistemas de memoria distribuida
- Gestión de procesos
- Seguridad en sistemas distribuidos
- Tecnologías
- CORBA
- DCOM
- DCE
- Java
- Jini
- RMI
- EJB
Entornos Distribuidos y Casos de Estudio
5Objetivos
- Conceptos (Objetivo Principal)
- Diseño de sistemas distribuidos (No sólo sistemas
operativos). - Problemática de sistemas distribuidos
- Transacciones y concurrencia.
- Nombrado y organización.
- Seguridad.
- Configuración y optimización.
- Técnicas (Objetivo Secundario)
- Tecnologías y entornos de desarrollo
distribuidos. - Herramientas de desarrollo.
- Guía de referencias.
6Direcciones de Contacto
- Información Actualizada
- Página de la asignatura
- http//laurel.datsi.fi.upm.es/ssoo/SOD/
- Profesores Responsables
- Fernando Pérez Costoya
- ltfperez_at_fi.upm.esgt
- José María Peña Sánchez
- ltjmpena_at_fi.upm.esgt
7Sistemas Operativos Distribuidos
1
Introducción y Conceptos
8Contenidos del Tema
- Evolución de los sistemas operativos
- Definición de sistema centralizado.
- Definición de sistema distribuido.
- Ventajas y desventajas de los sistemas
distribuidos. - Sistemas operativos distribuidos.
- Sistemas operativos de red.
- Middlewares.
- Objetivos de un sistema distribuido.
- Componentes de un sistema distribuido.
- Notación y formalismos.
9Arquitectura de Sistemas Centralizados
- Único computador (caro y de gran potencia) con
terminales alfanuméricos directamente conectados. - Entornos de empresa
- Soporte multiusuario
- Uso de mainframes o minicomputadores
- Entornos científicos
- Ejecución eficiente de aplicaciones
- Uso de supercomputadores
- Uso ocasional de la red
- Transferir ficheros o logins remotos
- Interfaz de usuario poco amigable
- Interfaces gráficas gastan muchos recursos
10Arquitectura de Sistemas Distribuidos
- Conjunto de procesadores conectados por una red
- Cada usuario tiene capacidad de procesamiento
local que permite interfaces de usuario
sofisticadas. - Uso intensivo de la red para compartir recursos
- dispositivos
- datos
- procesadores (migración de procesos)
- Capacidad global de procesamiento disponible
para - Servicio a múltiples usuarios
- Ejecución paralela de una aplicación
11Nacimiento de los Sistemas Distribuidos
- Causas
- Tecnología de microprocesadores relación
potencia/coste. - Tecnologías de comunicaciones
- Protocolos de comunicaciones.
- Redes de área local (LAN) Coste y prestaciones.
- Internet
- Factores comerciales
- Comercio electrónico e-comerce.
- Información distribuida (WWW).
- Reducción de costes.
12Características de un Sistema Distribuido
- Definición Tan95
- Un sistema distribuido es una colección de
computadoras independientes que aparece ante los
usuarios del sistema como una única computadora. - ? Recursos distribuidos para un trabajo común.
- ? N computadoras ? Un servicio único a los
usuarios. - Tradicionalmente (1972)
- Clasificación de Flynn SISD, SIMD, MISD, MIMD
13Características de un Sistema Distribuido
- Un sistema distribuido implica las siguientes
consecuencias - No existe un reloj común Afecta a cualquier
aspecto de coordinación y mensajes. - Concurrencia global Los elementos del sistema se
ejecutan realmente en paralelo. - Fallos independientes Los modos de fallo del
sistema pueden ser locales a un subconjunto de
sus componentes.
14Evolución de los Sistemas Operativos
- Sistemas Operativos Centralizados.
- Sistemas Operativos en Red
- Sistemas Operativos Distribuidos
- Sistemas Cooperativos
Sistema
Objetivos
Sistema Operativo Centralizado
Gestión de recursos, Máquina extendida, (Virtual
idad)
Sistema Operativo en Red
Compartición de recursos, (Interoperabilidad)
Sistema Operativo Distribuido
Vista única de varias computadoras (Transparencia)
Sistema Cooperativa
Trabajo cooperativo, (Autonomía)
15Capas de un Sistema Operativo
- La visión esquemática de un sistema operativo
comprende los siguientes niveles
- Hardware.
- Núcleo (kernel).
- Servicios del sistema.
- Programas de aplicación.
- Usuarios.
Usuarios
Aplicaciones
Servicios
Kernel
Hardware
16Responsabilidades del Kernel
Kernels Monolíticos Muchas funcionalidades
dentro del kernel planificador, gestión de
memoria, drivers,...
Servicios
Kernel
Computadora
m-Kernels Se sacan funcionalidades del kernel.
Sólo quedan (i) comunicación entre procesos,
(ii) administración de memoria, (iii)
administración y planificación de bajo nivel y
(iv) entrada/salida de bajo nivel
Servicios
m-Kernel
Computadora
Servicios Distribuidos Estructura de sistema
distribuido. Dependiendo del nivel se habla de
Sistema Operativo Distribuido, Sistema en Red o
(Cooperativo).
Servicios
m-Kernel
m-Kernel
m-Kernel
17Heterogeneidad de un Sistema Distribuido
- Un sistema distribuido puede estar formado por
multitud de elementos conectados por redes LAN o
WAN - Terminales X y Estaciones Java (Network
Computer). - PCs y estaciones de trabajo.
- Sistemas portátiles (redes móviles GSM, WAP y
...) - Minicomputadores.
- Supercomputadores.
- Multiprocesadores con memoria compartida o no.
- Servidores especializados (de almacenamiento, de
impresión, ...). - Sistemas empotrados.
- Fomentada por los siguientes factores
- Extensibilidad de los sistemas distribuidos.
- Especialización de los servidores.
18Ventajas de los Sistemas Distribuidos
- Economía Buena relación rendimiento/coste
- Ley de Grosch (obsoleta)
- Prestaciones cte x (Precio)2
- Alto rendimiento Procesamiento paralelo.
- Soporte de aplicaciones inherentemente
distribuidas. - Por ejemplo empresa distribuida geográficamente
- Capacidad de crecimiento Escalabilidad.
- Fiabilidad y disponibilidad Tolerancia a
(ciertos) fallos. - Carácter abierto y heterogéneo
- Estándares de interoperabilidad.
- Compartir recursos y datos.
19Desventajas de los Sistemas Distribuidos
- Necesidad de un nuevo tipo de software
- Más complejo.
- No hay todavía un acuerdo sobre cómo debe ser.
- Red de interconexión introduce nuevos problemas
- Pérdida de mensajes y saturación.
- Latencia puede provocar que al recibir un dato ya
esté obsoleto. - La red es un elemento crítico.
- Seguridad y confidencialidad
20Aplicaciones de los Sistemas Distribuidos
- Servicios Internet correo, noticias, Web, ...
nuevos servicios. - Redes corporativas e intranets.
- Procesamiento paralelo
- Procesamiento masivo (solución a la eficiencia).
- Topología distribuida (problemas de naturaleza
distribuida) - Sistemas distribuidos de gestión de bases de
datos y explotación de los mismos e.g. Data
Warehousing. - Aplicaciones multimedia.
- Sistemas industriales distribuidos y aplicaciones
de control. - Sistemas distribuidos de tiempo real.
- ..... lt y muchos más gt
21Distribución de los Sistemas Operativos
- Sistemas operativos para multiprocesadores con
memoria compartida (SMP) - Software fuertemente acoplado
- sobre Hardware fuertemente acoplado
- Sistema operativo distribuido (SOD)
- Software fuertemente acoplado
- sobre Hardware débilmente acoplado
- Sistema operativo en red
- Software débilmente acoplado
- sobre Hardware débilmente acoplado
22Sistemas Operativos para SMPs
- Arquitecturas de varios procesadores (2 a 8) con
memoria compartida de acceso uniforme (SMP
Simetric Multiprocesors) - Características
- Ligeras variaciones sobre versiones
tradicionales. - Sólo hay una copia del sistema operativo.
- Concurrencia se traduce en paralelismo real (?
tiempo compartido). - Comercialmente aceptados (Linux, WinNT, Solaris,
AIX, ...). - Plantea retos para la ejecución del núcleo en
varios procesadores (llamadas al sistema
concurrentes) , los mecanismos de sincronización
(spin-locks), optimización y planificación
(afinidad al procesador), ...
23Sistemas Operativos Distribuidos (SOD)
- Definición Gal00
- Un sistema operativo distribuido es un conjunto
de procesadores interconectados por redes que
ocultan dicha característica mostrando una visión
al usuario de uniprocesador virtual. - Características
- Ejecuta sobre un sistema distribuido haciendo
creer a los usuarios que se trata de un sistema
centralizado. - Trasparencia Debe ocultar factores derivados de
la distribución. - Es fácil de decir pero no de hacer.
- Cada sistema alcanza hasta cierto punto esta
meta. - Los fracasos pueden generar frustraciones en los
usuarios.
24Sistemas Operativos Distribuidos (SOD)
- Problemática
- Cada nodo tiene su copia del sistema operativo
Qué tareas se realizan localmente y cuáles son
globales? - Cómo lograr exclusión mutua sin memoria
compartida? - Cómo tratar los interbloqueos sin un estado
global? - Planificación de procesos Cada copia del sistema
operativo tiene su cola de planificación
(migración de procesos). - Cómo crear un árbol de ficheros único?
- Implicaciones de la falta de reloj único, la
presencia de fallos o la heterogeneidad. - Principal aportación
- Se han desarrollado nuevos conceptos y
planteamientos que se han podido trasladar a los
otros modelos de sistemas distribuidos.
25Evolución de los SOD
- Primeros SO de red
- Incluir servicios de red en SO convencional
- Ejemplo UNIX 4BSD (?1980)
- Paulatina incorporación de más funcionalidad
- ONC de Sun (?1985) incluye NFS, RPC, NIS
- Primeros SOD
- Nuevos SO pero basados en arquitecturas
convencionales (monolíticas) - Ejemplo Sprite de la Universidad de Berkeley
(?1988) - SOD basados en m-kernel. Ejemplos
- Mach de CMU (?1986)
- Amoeba diseñado por Tanenbaum (?1984)
- Chorus de INRIA en Francia (?1988)
26Sistemas Operativos en Red
- Definición Cho97
- Red de computadoras débilmente acopladas en las
que no existe un control externo directo sobre el
hardware/software de cada computadora para la
compartición de recursos. - Características
- No dan la visión de uniprocesador virtual
(máquinas independientes). - Cada una ejecuta una copia de sistema operativo
(distinto). - Sistema operativo convencional utilidades de
red. - Protocolos de comunicación para intercambio de
recursos y acceso a servicios de alto nivel. - Desde rcp/rlogin hasta Open Network Computing
(ONC) de Sun.
27Sistemas Cooperativos
- Definición Cho97
- Sistemas software orientados a servicios de alto
nivel que requieren el soporte de mecanismos de
comunicación en base a los cuales los protocolos
de comunicaciones de alto nivel se construyen. - Características
- Se mantiene el grado de trasparencia sacrificando
la visión de único sistema. Son sistemas
autónomos independientes. - Se construyen en base a middlewares (CORBA, DCE,
DCOM, ...) - Los sistemas resultan de la integración de
múltiples servicios proporcionados por diferentes
elementos de la red.
28Middleware
- Middleware
- Capa de software que ejecuta sobre el sistema
operativo local ofreciendo unos servicios
distribuidos estandarizados. - Sistema abierto independiente del fabricante.
- No depende del hardware y sistema operativo
subyacente. - Ejemplos
- DCE (Open Group).
- CORBA (OMG).
- ...
Middleware
SO
SO
SO
Hardware
Hardware
Hardware
29Objetivos de un Sistema Distribuido
- En general el desarrollo de sistemas distribuidos
intenta poner solución a los siguientes
objetivos - Transparencia.
- Fiabilidad.
- Rendimiento.
- Capacidad de crecimiento.
- Flexibilidad.
- Seguridad.
- Sistemas operativos distribuidos, sistemas en red
y sistemas cooperativos requieren diferentes
facetas de estos objetivos.
30Transparencia
- Existen varios perfiles de trasparencia
- Acceso Manera de acceder a recurso local igual
que a remoto. - Posición Se accede a los recursos sin conocer su
localización. - Migración Recursos pueden migrar sin afectar a
los usuarios. - Concurrencia Acceso concurrente no afecta a los
usuarios. - Replicación La existencia de réplicas no afecta
a los usuarios. - Fallos La ocurrencia de fallos no afecta a los
usuarios. - Crecimiento El crecimiento del sistema no afecta
a los usuarios. - HeterogeneidadCarácter heterogéneo no afecta a
los usuarios. - Es buena tanta transparencia?
- A veces el usuario precisa conocer cómo es el
sistema subyacente
31Fiabilidad
- Fiabilidad como disponibilidad
- Teóricamente OR-lógico de sus componentes.
- En ciertos casos AND-lógico de varios
componentes. - Mecanismos redundancia y evitar componentes
críticos. - Tolerancia a fallos Los componuentes pueden no
caerse pero funcionan de forma errónea. - Fiabilidad como coherencia
- Se dificulta con la redundancia inconsistencias
- La fiabilidad está relacionada con la seguridad
(otro objetivo).
32Rendimiento
- Rendimiento para un servicio multiusuario
- Objetivo Rendimiento no peor que un sistema
centralizado - Rendimiento para la ejecución paralela de
aplicaciones - Objetivo Rendimiento proporcional a procesadores
empleados - Factores
- Mayor número de procesadores
- Elementos críticos
- Especialmente la red Latencia de la
comunicación, uso de caches, ... - Grano de paralelismo (relación proceso/comunicació
n). - Replicación de elementos/tareas.
- Equilibrado de carga.
33Capacidad de Crecimiento
- Diseño de un sistema distribuido debe evitar
cuellos de botella - Componentes centralizados
- Tablas centralizadas
- Algoritmos centralizados
- Problemática agravada por el número de elementos
- Ninguna máquina tiene información completa del
estado del sistema - Las decisiones se basan sólo en información
disponible localmente - El fallo de una máquina no debe invalidar el
algoritmo - No debe asumir la existencia de un reloj global
34Flexibilidad
- Capacidad para ampliarlo o extenderlo con nuevas
funcionalidades de forma sencilla. - Definición de responsabilidades
- Sistemas con m-kernel
- Comunicación entre procesos.
- Cierta administración de memoria.
- Administración y planificación de procesos
(limitada y de bajo nivel). - Entrada/salida de bajo nivel.
- El resto, servicios a nivel de usuario.
35Flexibilidad
- Un elemento fundamental de la flexibilidad son
los sistemas abiertos. - El desarrollo de estos sistemas requiere
- Sus interfaces y protocolos deberían ser
públicos. - Contrario a tecnología propietaria.
- Uso de estándares siempre que sea posible.
- Disponibilidad de su código fuente (libremente o
no). - Regulación por parte de un colectivo (usuarios u
organizaciones) y no por particulares
(fabricantes).
36Componentes de un Sistema Distribuido
- El desarrollo de un sistema distribuido complejo
requiere el uso de las siguientes funciones y
servicios - Servicios de comunicación.
- Sistemas de ficheros y nombrado distribuido.
- Servicios de sincronización y coordinación.
- Memoria compartida distribuida.
- Gestión de procesos.
- Servicio de seguridad.
- Estas funcionalidades se plasman en elementos
concretos del sistema componentes, protocolos,
algoritmos, soporte hardware/software, ...
37Servicios de Comunicación
- Modelos de interacción
- Cliente/servidor (2-niveles, 3-niveles o
n-niveles) - Peer-to-peer Equilibrio de roles.
- Intermediarios Proxy, Dispacher, Caches, ...
- Unicast vs Multicast
- Fiabilidad.
- Síncronos vs Asíncronos
- Tecnologías de comunicación
- Paso de mensajes Berkeley sockets.
- Llamada a procedimientos remotos RPC.
- Tecnologías de objetos distribuidos CORBA, DCOM,
EJB - Código móvil Entornos de agentes.
38Sistemas de Ficheros Distribuidos
- Identificación, localización y acceso a elementos
del entorno distribuido. - Comprende
- Sistemas de ficheros distribuidos (SFD) NFS,
AFS. - Servicios de nombres DNS, COS-Naming (CORBA).
- Servicios de directorio X.500, LDAP, JNDI.
- Cuestiones
- Arquitectura de los servicios.
- Almacenamiento intermedio caching.
- Replicación y coherencia.
39Servicios de Sincronización y Coordinación
- Comprende los conceptos de
- Tiempo en entornos distribuidos Sincronización
de relojes y relojes lógicos. - Concurrencia y Paralelismo Exclusión mutua e
interbloqueos. - Algoritmos distribuidos Elección de líder,
coordinación, ... - Transacciones Propiedades ACID, modelos de
commit/rollback. - Afecta a otros servicios
- Nombrado e identificación.
- Seguridad y fiabilidad.
- Comunicaciones.
- ...
40Memoria Compartida Distribuida (DSM)
- Hardware
- Memoria físicamente compartida.
- Memoria distribuida (lógicamente compartida).
- Acceso uniforme vs acceso no uniforme.
- Distributed Shared Memory
- Basada en páginas.
- Basada en variables compartidas.
- Basada en objetos.
- Modelos de consistencia
41Gestión de Procesos
- Taxonomía de los procesos
- Niveles de granularidad.
- Congelación de procesos (persistencia).
- Migración de procesos (estado/código).
- Planificación de procesos
- Planificación interna Procesos y threads.
- Planificación global.
- Migración y equilibrado de carga.
- Aprovechamiento de máquinas inactivas.
42Servicio de Seguridad
- Tipología de los ataques
- Privacidad y confidencialidad.
- Autenticación (spoofing).
- Denegación de servicio.
- Modelos y herramientas de seguridad
- Cifrado clave pública (RSA) y privada (DES).
- Protocolos de seguridad IPsec, SSL.
- Certificados y firmas digitales X.509.
- Elementos de seguridad Firewalls.
- Entornos seguros e.g. Kerberos.
43Notación
- La asignatura tiene dos partes
- Parte de la asignatura dependiente de ciertas
tecnologías - API de sockets.
- RPCs.
- CORBA.
- DCOM.
- Java RMI, EJB y Jini.
- Parte de la asignatura independiente de
tecnologías - Conceptos.
- Técnicas.
- Algoritmos.
- Estrategias de diseño.
44Notación y Formalismos
- Objetivo de la notación No atar ninguna solución
a una tecnología concreta. - Notaciones y formalismos usados
- Pseudocódigo Algoritmos y ejemplos.
- Objetos Escenarios de interacción, patrones
distribuidos. - Formalismos matemáticos Seguridad,
sincronización. - Metodologías y arquitecturas Nomenclatura y
semántica. - Se optará por el más apropiado en cada caso.
- No debe ser un impedimento para entender el
concepto.
45Wrapper Facade
- Patrón de diseño que encapsula los factores y
características dependientes de las APIs de
desarrollo del sistema operativo o tecnología
usada. SSR00 - Escenario
llamadas
Wrapper Facade
API FunciónA
Datos
llamadas
llamadas
Aplicación
API FunciónB
llamadas
API FunciónC
método1() ... metodoN()
método1() funciónA() funciónB()
métodoN() funciónC()
46Wrapper Facade
- Ejemplo
- Semáforo genérico. Protege un región de exclusión
mútua - acquire() entrada en la región.
- release() salida de la región.
- Implementación Depende del SO.
class Thread_Mutex public Thread_Mutex()
Thread_Mutex() void acquire() void
release()