Weitere ähnliche Inhalte Ähnlich wie Sistemas distribuidos (20) Sistemas distribuidos2. Contenido
• Sistemas distribuidos
• Sistemas operativos distribuidos
• Comunicación de procesos
• Sincronización de procesos
• Gestión de procesos
• Sistemas de archivos
• Gestión de memoria
Sistemas operativos: una visión
aplicada
2 © J.
Carretero, F. García, P. de
3. Conceptos
previos
• Un programa es un conjunto de instrucciones.
• Un proceso es un programa en ejecución.
• Una red de computadores es un conjunto de
computadores conectados por una red de
interconexión.
• Un sistema distribuido (SD)
– Modelo físico: conjunto de nodos (procesadores sin
memoria ni reloj común) conectados por una red.
– Modelo lógico: conjunto de procesos que ejecutan
concurrentemente en uno o más computadores que
colaboran y comunican intercambiando mensajes.
• Un protocolo es un conjunto de reglas e instrucciones
que gobiernan la comunicación en un sistema
distribuido, es decir, el intercambio de mensajes.
Sistemas operativos: una visión
aplicada
3 © J.
Carretero, F. García, P. de
4. Características
• Compartir recursos (HW, SW, datos).
– Acceso a recursos remotos.
• Modelo cliente-servidor
• Modelo basado en objetos
• Ofrecen una buena relación coste/rendimiento
• Capacidad de crecimiento
• Tolerancia a fallos, disponibilidad
– Replicación
• Concurrencia
• Velocidad
– Paralelismo
Sistemas operativos: una visión
aplicada
4 © J.
Carretero, F. García, P. de
5. Desventajas
• Necesidad de software más complejo
• Problemas de fiabilidad
• Problemas de seguridad y confidencialidad
Sistemas operativos: una visión
aplicada
5 © J.
Carretero, F. García, P. de
6. Arquitectura de un sistema
distribuido
Red de interconexión
Sistemas operativos: una visión
aplicada
6 © J.
Carretero, F. García, P. de
7. Redes e
interconexión
• Paquete: tipo de mensaje que se intercambia entre dos
dispositivos de comunicación.
– Tamaño limitado por el hardware
• Mensaje: objeto lógico que se intercambian entre dos
o más procesos.
– Su tamaño puede ser bastante grande.
– Un mensaje se descompone en paquetes.
• Subsistema de comunicación: conjunto de
componentes
HW y SW que proporcionan servicios de comunicación
en un sistema distribuido.
• Protocolo: conjunto de reglas e instrucciones que
gobiernan el intercambio de paquetes y mensajes
Sistemas operativos: una visión
aplicada
7 © J.
Carretero, F. García, P. de
8. Propiedades de un subsistema de
comunicación
• Tasa de transferencia: velocidad de transferencia
• Latencia: tiempo necesario para transferir un mensaje
vacío
• Tiempo de transferencia = latencia + tamaño/tasa de
trasferencia
• Paquetes/segundo
• Capacidad de crecimiento. Aumento en el nº de nodos
• Calidad de servicio
– Importante en aplicaciones multimedia y de tiempo real
• Fiabilidad del subsistema
– Mecanismos de detección de errores
• Seguridad: protección de los paquetes
• Confidencialidad: proteger la identidad de los emisores
Sistemas operativos: una visión
aplicada
8 © J.
Carretero, F. García, P. de
9. Tipos de redes de
computadores
• Redes de área local (LAN, Local Area Network)
– Redes que enlazan sistemas cercanos
– Posibilidad de difusión de mensajes (broadcast)
• Redes de área extensa (WAN, Wide Area Network)
– Poco ancho de banda (20-500 Kbps)
– Bajas latencias
– Redes telefónicas, redes públicas de datos, fiabra óptica
RDSI, B-RDSI, ATM
• Nuevos desarrollos en telecomunicaciones (ATM y
RDSI)
– Diferencias entre LAN y WAN cada vez más borrosas
Sistemas operativos: una visión
aplicada
9 © J.
Carretero, F. García, P. de
10. Protocolos de
comunicación
• Protocolo: conjunto de reglas y formatos que
permiten la comunicación entre procesos.
• La definición de un protocolo tiene dos parte:
– Especificación de la secuencia de mensajes que
deben intercambiarse.
– Especificación del formato de mensajes.
• El software de red se organiza en niveles
Sistemas operativos: una visión
aplicada
10 © J.
Carretero, F. García, P. de
11. Funciones de una pila de
protocolos
• Segmentación y ensamblado de mensajes
• Encapsulado: incorporación de información de control
a los datos
– Dirección del emisor y receptor
– Código de detección de errores
• Control de conexión
– Protocolos orientados a conexión
– Protocolos no orientados a conexión:
• No se asegura el orden secuencial de los datos transmitidos
• Entrega ordenada en protocolos orientados a conexión
– Números de secuencia
Sistemas operativos: una visión
aplicada
11 © J.
Carretero, F. García, P. de
12. Funciones de una pila de
protocolos II
• Control de flujo: función realizada en el receptor para
limitar la cantidad o tasa de datos que envía el emisor.
• Control de errores: se basan en el uso de una
secuencia de comprobación y reenvío.
• Direccionamiento, conseguir que los mensajes
alcancen al receptor
• Multiplexación: necesario para un uso más eficiente de
los servicios
• Servicios de transmisión:
– Prioridad
– Calidad de servicio
– Seguridad
Sistemas operativos: una visión
aplicada
12 © J.
Carretero, F. García, P. de
13. Ejemplos de
protocolos
• Protocolos internet:
– Originados por el trabajo de DARPA en los 70
– Muy utilizados en la actualidad
– Gran crecimiento durante los 90 debido al uso del
Web
• Protocolos OSI (open system interconection)
– Estándar desarrollado por ISO
• Estándares propietarios
– SNA de IBM (años 70)
– DECnet desarrollado por DEC
– NetWare: red de Novell para redes de PC
Sistemas operativos: una visión
aplicada
13 © J.
Carretero, F. García, P. de
14. Protocolos
TCP/IP
• Resultado de la investigación y desarrollo llevados
a cabo en la red ARPANET (financiada por DARPA)
en los años 70
• Familia de protocolos utilizados en Internet
• En los 90 se ha establecido como la arquitectura
comercial dominante:
– Se especificaron y utilizaron antes de OSI
– Independiente de la tecnología de red utilizada
– Internet está construida sobre un conjunto de
protocolos TCP/IP.
– Espectacular desarrollo de World Wide Web
Sistemas operativos: una visión
aplicada
14 © J.
Carretero, F. García, P. de
15. Protocolos
TCP/IP
Emisor Receptor
Sistemas operativos: una visión
aplicada
15 © J.
Carretero, F. García, P. de
16. Protocolo Internet
(nivel IP)
• La transmisión no es fiable (no se asegura la
recepción de los paquetes IP). Los paquetes se
pueden descartar por:
– Expiración del tiempo de vida
– Congestión
– Error en la suma de comprobación
• Control de flujo muy limitado
• Calidad de servicio muy limitado
– Seguridad: normal o alto
– Retardo: normal o bajo
– Rendimiento: normal o alto
Sistemas operativos: una visión
aplicada
16 © J.
Carretero, F. García, P. de
17. Protocolos de
transporte
• Protocolo TCP
– Orientado a conexión
– Garantiza que los datos se entregan en el orden en el que
se envían
– Las conexiones TCP se ven como un flujo de bytes
– La transmisión se considera “fiable”. Pueden perderse
mensajes (sobrecarga en la red, fallos en encaminadores,
etc.)
– Cuando los mensajes son muy pequeños, TCP los retrasa
hasta conseguir uno más grande
• Esta opción debe desactivarse si es necesario
– Escrituras concurrentes sobre una misma conexión TCP
pueden provocar que los datos se entremezclen.
Sistemas operativos: una visión
aplicada
17 © J.
Carretero, F. García, P. de
18. Protocolos de
transporte
• Protocolo UDP
– Protocolo de datagramas no orientado a conexión.
– Protocolo no fiable
• Los paquetes se pueden perder, duplicar, recibir en
orden distinto al enviado
– Tamaño máximo del mensaje: 64 KB
Sistemas operativos: una visión
aplicada
18 © J.
Carretero, F. García, P. de
19. Encaminamiento
• Permite que los paquetes viajen del proceso emisor al
receptor.
• Algoritmo:
– Un programa de aplicación genera un paquete, o bien se
lee un paquete de la interfaz de red.
– Si el paquete es para la máquina, se acepta.
– En caso contrario, se incrementa el contador de saltos, si
se excede el máximo, el paquete se descarta.
– Si el paquete no es para la máquina se busca en la tabla de
encaminamiento y se retransmite a la interfaz adecuada.
• Tablas estáticas, las más utilizadas
• Tablas dinámicas
Sistemas operativos: una visión
aplicada
19 © J.
Carretero, F. García, P. de
20. Papel del sistema
operativo
• El SW de comunicación de un sistema operativo se
organiza como un conjunto de componentes con tareas
concretas
– Subsistema de almacenamiento: buffers donde almacenar
los paquetes que llegan y se envían (limitado)
• En implementaciones UNIX típicas
– TCP reserva para cada puerto (socket) un buffer de 8 KB y
UDP 2 buffers de 8KB. El tamaño se puede incrementar
hasta 64 KB.
– Los mensajes a enviar se copian a estos buffers
– El contenido de estos buffers se fragmenta y se copian a
nuevos bloques de memoria a utilizar por IP
– IP envía finalmente los paquetes por la interfaz de red
correspondiente
21. Papel del sistema
operativo
• Un sistema operativo puede perder paquetes cuando la
tasa de envíos y de recepción es muy grande.
• En sistemas operativos multiusuario la pérdida de
paquetes suele producirse a ráfagas debido a los
algoritmos de planificación.
• La latencia del SO
40
ha crecido en términos 35
relativos 30
25
20
15
10
5
0
1985-1990 1990-1995 1995-2000 2000-20005
22. ¿Dónde se pierde el
tiempo?
• Códigos de corrección (Checksum)
– Sobre datos TCP y UDP
– Sobre cabeceras IP
• Copias de datos
– Entre usuario y kernel
• Estructura de datos
– Gestión de los buffers, colas de defragmentación de
paquetes IP,
• Sistema Operativo
– Sobrecarga impuesta por las operaciones del SO
Sistemas operativos: una visión
aplicada
22 © J.
Carretero, F. García, P. de
23. Contenido
• Sistemas distribuidos
• Sistemas operativos distribuidos
• Comunicación de procesos
• Sincronización de procesos
• Gestión de procesos
• Sistemas de archivos
• Gestión de memoria
Sistemas operativos: una visión
aplicada
23 © J.
Carretero, F. García, P. de
24. Sistema operativo en red
(SOR)
Aplicaciones Aplicaciones
Lenguajes de programación Lenguajes de programación
Sistema operativo Sistema operativo
Hardware Hardware
Red de interconexión
• El usuario ve un conjunto de máquinas independientes
– No hay transparencia
• Se debe acceder de forma explícita a los recursos de
otras máquinas
• Difíciles de utilizar para desarrollar aplicaciones
distribuidas
Sistemas operativos: una visión
aplicada
24 © J.
Carretero, F. García, P. de
25. Sistema operativo
distribuido (SOD)
Aplicaciones
Lenguajes de programación
Sistema operativo distribuido
Hardware Hardware
Red de interconexión
• Se comporta como un SO único (visión única)
– Distribución. Transparencia
• Se construyen normalmente como micronúcleos que
ofrecen servicios básicos de comunicación
– Mach, Amoeba, Chorus.
• Todos los computadores deben ejecutar el mismo SOD
Sistemas operativos: una visión
aplicada
25 © J.
Carretero, F. García, P. de
26. Transparencia
• Acceso: acceso a recursos remotos y locales de igual forma
• Posición: acceso a los recursos sin necesidad de conocer su
situación
• Concurrencia: acceso concurrente a recursos compartidos
sin interferencias
• Replicación: Acceso a recursos replicados sin conocimiento
de que lo son
• Fallos: mantenimiento del servicio en presencia de fallos.
• Migración: permite que los recursos y objetos se muevan
sin afectar a la operación de los programas.
• Capacidad de crecimiento: facilidad para crecer sin afectar
a la estructura del sistema
Sistemas operativos: una visión
aplicada
26 © J.
Carretero, F. García, P. de
27. Middleware y entornos
distribuidos
Aplicaciones
Lenguajes de programación
Middleware
Sistema operativo Sistema operativo
Hardware Hardware
Red de interconexión
• Servicios y protocolos estándarizados: Sistemas abiertos
• Ofrecen servicios no incluidos en el SO (servicios de
ficheros distribuidos, servicios de nombres, ...)
• Facilitan el desarrollo de aplicaciones distribuidas
• Independientes del HW y del SO subyacente.
• DCE, CORBA, DCOM, Legion, Globe, Globus
Sistemas operativos: una visión
aplicada
27 © J.
Carretero, F. García, P. de
28. Servicios de un sistema operativo
distribuido
• Servicios de comunicación
• Servicios de sincronización
• Gestión distribuida de procesos
• Sistemas de archivos distribuidos
• Memoria compartida distribuida
Sistemas operativos: una visión
aplicada
28 © J.
Carretero, F. García, P. de
29. Contenido
• Sistemas distribuidos
• Sistemas operativos distribuidos
• Comunicación de procesos
• Sincronización de procesos
• Gestión de procesos
• Sistemas de archivos
• Gestión de memoria
Sistemas operativos: una visión
aplicada
29 © J.
Carretero, F. García, P. de
30. Comunicación en sistemas
distribuidos
• La comunicación de procesos es fundamental en
cualquier sistema distribuido
• Existen diferentes posibilidades todas ellas basadas en
el paso de mensajes
– Mecanismos de bajo nivel, el programador debe
preocuparse de establecer los protocolos de
comunicación, representación de datos, etc.
• Colas de mensajes
• Sockets
– Mecanismo de alto nivel, ofrecen abstracciones donde el
programador no debe preocuparse de establecer
protocolos
• Llamadas a procedimientos remotos
• Invocación de métodos remotos (entornos orientados a objetos)
Sistemas operativos: una visión
aplicada
30 © J.
Carretero, F. García, P. de
31. Comunicación cliente-sevidor
Muy utilizada en entornos distribuidos (más del 90% de los sistemas distribuidos
utilizan la arquitectura cliente-servidor)
Máquina A petcición Máquina B
cliente servidor
respuesta
NÚCLEO NÚCLEO
RED
Protocolo típico: petición-respuesta
Sistemas operativos: una visión
aplicada
31 © J.
Carretero, F. García, P. de
32. Comunicación de
grupos
• Utiliza mensajes multicast
• Útil para:
– Ofrecer tolerancia a fallos basado en servicios
replicados
– Localizar objetos en sistemas distribuidos
– Mejor rendimiento mediante datos replicados
– Actualizaciones múltiples
– Operaciones colectivas en cálculo paralelo
Sistemas operativos: una visión
aplicada
32 © J.
Carretero, F. García, P. de
33. Sockets
• Aparecieron en 1981 en UNIX BSD 4.2
– Intento de incluir TCP/IP en UNIX
– Diseño independiente del protocolo de comunicación
• Un socket es punto final de comunicación
(dirección IP y puerto)
• Abstracción que:
– Ofrece interfaz de acceso a los servicios de red en el
nivel de transporte
• Protocolo TCP
• Protocolo UDP
– Representa un extremo de una comunicación
bidireccional con una dirección asociada
Sistemas operativos: una visión
aplicada
33 © J.
Carretero, F. García, P. de
34. Sockets:
introducción
• Sujetos a proceso de estandarización dentro
de POSIX (POSIX 1003.1g)
• Actualmente
– Disponibles en casi todos los sistemas UNIX
– En prácticamente todos los sistemas operativos
• WinSock: API de sockets de Windows
– En Java como clase nativa
Sistemas operativos: una visión
aplicada
34 © J.
Carretero, F. García, P. de
35. Sockets
UNIX
• Dominios de comunicación
• Tipos de sockets
• Direcciones de sockets
• Creación de un socket
• Asignación de direcciones
• Solicitud de conexión
• Preparar para aceptar conexiones
• Aceptar una conexión
• Transferencia de datos
Sistemas operativos: una visión
aplicada
35 © J.
Carretero, F. García, P. de
36. Dominios de
comunicación
• Un dominio representa una familia de protocolos
• Un socket está asociado a un dominio desde su
creación
• Sólo se pueden comunicar sockets del mismo
dominio
• Algunos ejemplos:
– PF_UNIX (o PF_LOCAL): comunicación dentro de una
máquina
– PF_INET: comunicación usando protocolos TCP/IP
• Los servicios de sockets son independientes del
dominio
Sistemas operativos: una visión
aplicada
36 © J.
Carretero, F. García, P. de
37. Tipos de
sockets
• Stream (SOCK_STREAM)
– Orientado a conexión
– Fiable, se asegura el orden de entrega de mensajes
– No mantiene separación entre mensajes
– Si PF_INET se corresponde con el protocolo TCP
• Datagrama (SOCK_DGRAM)
– Sin conexión
– No fiable, no se asegura el orden en la entrega
– Mantiene la separación entre mensajes
– Si PF_INET se corresponde con el protocolo UDP
• Raw (SOCK_RAW)
– Permite el acceso a los protocolos internos como IP
Sistemas operativos: una visión
aplicada
37 © J.
Carretero, F. García, P. de
38. Direcciones de
sockets
• Cada socket debe tener asignada una dirección única
• Las direcciones se usan para:
– Asignar una dirección local a un socket (bind)
– Especificar una dirección remota (connect o sendto)
• Dependientes del dominio
• Se utiliza la estructura genérica struct sockaddr
• Cada dominio usa una estructura específica
– Direcciones en PF_UNIX (struct sockaddr_un)
• Nombre de fichero
– Direcciones en PF_UNIX (struct sockaddr_in)
– Uso de conversión de tipos (casting) en las llamadas
Sistemas operativos: una visión
aplicada
38 © J.
Carretero, F. García, P. de
39. Direcciones de sockets en
PF_INET
• Host (32 bits) + puerto (16 bits)
• Una dirección IP se almacena en una estructura de
tipo:
– struct in_addr
• Estructura struct sockaddr_in
– Debe iniciarse a 0
– sin_family: dominio (AF_INET)
– sin_port: puerto
– sin_addr: dirección del host
• Función que facilita el nombre de la máquina en la que
se ejecuta:
int gethostname(char *name, int namelen);
Sistemas operativos: una visión
aplicada
39 © J.
Carretero, F. García, P. de
40. Obtención de la dirección
de host
• Usuarios manejan direcciones en forma de texto:
– decimal-punto: 138.100.8.100
– dominio-punto: laurel.datsi.fi.upm.es
• Algunas funciones para trabajar con direcciones:
– char *inet_ntoa(struct in_addr in);
• Devuelve una dirección en notación decimal-punto.
– struct hostent *gethostbyname(char *str);
• Convierte una dirección en notación dominio-punto a una
estructura que describe máquina.
• Algunos campos de la estructura struct hostent:
– char *name nombre oficial de la máquina
– char **h_addr_list lista de direcciones
Sistemas operativos: una visión
aplicada
40 © J.
Carretero, F. García, P. de