Procesos en Sistemas Distribuidos

Anuncio
Sistemas de Operación II
Procesos en Sistemas Distribuidos
Prof. Yudith Cardinale
Abril-Julio 2012
Contenido
●
Hilos en Sistemas Distribuidos
●
Clientes
●
Servidores
●
Anexo: Virtualización
2
Procesos e hilos
●
Un proceso es una entidad que posee 2
características importantes:
●
●
Recursos: Básicamente: un espacio de direcciones
(programas, datos y pila y un PCB), archivos,
memoria, etc. El SOP realiza la función de
protección para evitar interferencias no deseadas
entre procesos en relación con los recursos.
Planificación/Ejecución: El proceso sigue una ruta
de ejecución. Tiene un PC, un Estado de ejecución
(Listo, bloqueado, ejecutándose, etc.) y una
prioridad.
3
Procesos e hilos
●
●
Estas dos características son independientes y
pueden ser tratadas como tales por los
sistemas de operación.
En algunos sistemas de operación se le
denomina a la unidad activa hilo (thread) y a la
unidad propietaria de recursos se le suele
denominar proceso o tarea.
4
Procesos e hilos
●
En un entorno multihilo se le asocia a los procesos:
●
●
●
Un espacio de direcciones virtuales que soporta la
imagen del proceso.
Acceso protegido a procesadores, otros procesos,
archivos y recursos de E/S
En un entorno multihilo se asocian a cada hilo:
●
●
un estado de ejecución.
Un PC, un contexto (conjunto de registros) que se
almacena cuando no está en ejecución.
●
Una pila.
●
Un espacio de almacenamiento para variables locales.
●
Acceso a la memoria y recursos del proceso.
5
Procesos e hilos
●
●
●
Para que la comunicación entre procesos sea
posible es necesario usar las llamadas al sistema.
Los threads comparten el mismo espacio de
direcciones. Por lo tanto el cambio de contexto
entre un thread y otro que pertenecen al mismo
proceso pudiera hacerse de forma totalmente
independiente del sistema de operación.
Los cambios de contexto de procesos son más
costosos. Implican salvar el contexto del proceso,
cambio de modo (trap al sistema de operación,
etc), otro cambio de modo, restaurar contexto del
6
nuevo proceso
Procesos e hilos
●
Implementaciones de hilos:
●
Threads a nivel de usuario.
●
Threads a nivel de kernel
●
Enfoque combinado, procesos Livianos
7
Hilos en Sistemas Distribuidos
●
●
Usando hilos, se puede permitir el uso de
llamadas al sistema bloqueantes sin necesidad
de “bloquear” todo el proceso. Esta propiedad
vuelve a los hilos particularmente atractivos
para su uso dentro de sistemas distribuidos.
Concentrémonos en la arquitectura ClienteServidor.
8
Clientes Multihilos
●
●
Sirven para esconder la latencia de
comunicación a través de la red.
Ejemplo 1: Navegadores WEB
●
●
En muchos casos una página WEB consiste de un
texto plano con múltiples figuras.
Con frecuencia el navegador, establece la conexión
con el servidor, recupera y comienza a desplegar la
página HTML (incluso se permite al usuario el
desplazamiento dentro de la página) mientras el
navegador continua recuperando otros archivos que
conforman la página.
9
Clientes Multihilos
●
Ejemplo 1: Navegadores WEB
●
●
Desarrollar navegadores multihilos simplifica este
hecho de forma considerable. Tan pronto como
llega la página principal se pueden activar hilos que
se encarguen de recuperar las demás partes. Cada
hilo establece su propia conexión con el servidor.
Mientras tanto el usuario advierte el retardo en las
imágenes pero puede ir explorando el documento
10
Clientes Multihilos
●
●
Si el servidor está saturado o es lento no se
observarán mejoras notables en el rendimiento.
Ejemplo 2: Servidores WEB Replicados
●
En muchos casos los servidores se replican en
distintas máquinas y cada servidor proporciona el
mismo conjunto de documentos WEB. Están
localizados en el mismo sitio y se conocen por el
mismo nombre.
11
Clientes Multihilos
●
Ejemplo 2: Servidores WEB Replicados
●
●
Cuando entra una petición para una página WEB
es re-enviada a uno de los servidores (usando
round-robin u otra técnica de balanceo de carga)
Cuando se usan clientes multihilos cada conexión
puede ir a una réplica diferente del mismo servidor.
En este caso los distintos archivos se transmiten en
paralelo asegurando que la página WEB completa
se despliega en un tiempo más corto
12
Servidores Multihilos
●
●
●
El principal uso de la tecnología multihilos está
del lado del servidor.
Básicamente buscan mejorar el desempeño
(aún en servidores monoprocesador) y la forma
cómo se estructura el servidor.
Ejm: por lo general un servidor de archivos
espera una petición de entrada para una
operación de archivo, posteriormente ejecuta la
petición (operación bloqueante al disco) y luego
envía la respuesta de regreso.
13
Servidores Multihilos
●
Alternativas:
●
Modelo Servidor/Trabajador: Las peticiones son
enviadas por los clientes hasta el servidor. Después
de examinar la petición el hilo servidor elige un hilo
trabajador sin utilizar y le encarga la petición.
Hilo servidor
peticiones
Petición del cliente
Hilos trabajadores
14
Servidores Multihilos
●
●
El hilo trabajador realiza la lectura, lo cual puede provocar que se
suspenda hasta que los datos sean recuperados. Si el hilo se suspende,
el procesador, selecciona otro para su ejecución.
Cómo se programa un servidor de archivos en la ausencia de hilos?
●
●
El servidor recibe a peticiones, las examina y las trata de resolver antes de recibir
la siguiente petición. Mientras espera por el disco el servidor está ocioso y no
procesa otra petición. Se procesan menos peticiones por segundo (throughput).
Con los hilos se gana un rendimiento considerable. Cada hilo se programa
secuencialmente en forma tradicional
15
Servidores Multihilos
●
●
●
●
Supongamos que los hilos no están disponibles, pero los diseñadores del
sistema consideran inaceptable el rendimiento debido al uso de un solo hilo y
operaciones bloqueantes.
Sol: uso de operaciones no bloqueantes (asíncronas).
Cuando llega una petición se examina. Si se puede satisfacer desde el cache
bien. Si no, se envía un mensaje al disco (no bloqueante). Se registra el
estado de la petición actual en una tabla y se va al siguiente mensaje. El
siguiente mensaje puede ser una petición para otro trabajo o una respuesta
del disco relacionada con una operación previa. En este último caso se
recupera la información relevante de la tabla y junto con los datos solicitados,
se envía al cliente.
En este caso la programación del servidor es más difícil y se necesita que el
sistema de operación provea llamadas asíncronas.
16
Cliente/Servidor
●
●
●
Cuando la plataforma es una red de
computadoras, las aplicaciones se distribuyen
sobre la red para sacar partido del paralelismo
Un modelo básico para estas plataformas es
estructurar las aplicaciones en dos tipos de
componentes: clientes y servidores.
Los clientes hacen la parte de interacción con
usuario o solicitante de servicio, el servidor se
ocupa de la parte de procesamiento (más
pesada)
17
Protocolo TCP/IP
●
●
Conjunto (pila) de protocolos que permiten la
interconexión de máquinas en red
Basado en dos protocolos:
●
●
●
IP (Internetworking Protocol). Provee una abstracción de la
ubicación. Cada máquina es identificada por una dirección
única IP
TCP (Transmission Control Protocol). Ofrece servicio de
conexión proceso a proceso en máquinas diferentes, a
través de la noción de puerto
Una dirección es típicamente un par (IP, puerto TCP)
18
Cliente/Servidor
Cliente/Servidor con protocolos de
interacción ad-hoc
19
Cliente/Servidor
Cliente/Servidor con protocolo de
interacción genérico
20
Clientes
●
Pueden aportar o no algún nivel de procesamiento:
●
●
●
Clientes específicos por cada servicio remoto pueden
ocuparse de ciertas tareas (interpretación de la solicitud),
y acceder al servidor remoto para completarla
Clientes livianos. Sólo ofrecen la interfaz al usuario, todo
el análisis y procesamiento (incluso el manejo de
ventanas) se hace remotamente
Ocultan al usuario ubicación de servidor, protocolos
de interacción, si la consulta implica acceder a varios
servidores, etc.
21
Ej. Cliente oculta replicación
22
Localización de servicio
23
Servidores
●
●
●
Un servidor es un proceso que implementa un
servicio, a través de una dirección específica
en la red
Típicamente, el servidor se asigna a un puerto
TCP en una máquina. El servicio se accede a
través de IP/Puerto. Ej.: puerto 80 (http), correo
(25)
El cliente accede directamente si conoce la
dirección. En ciertos casos, se puede utilizar
servicios de localización adicionales. Ej: DNS
24
Tipos de servidores
●
●
Iterativos vs Concurrentes. Iterativos reciben,
procesan y responden. Los concurrentes
reciben la solicitud y la pasan a un hilo/proceso
local que hace el procesamiento
Con estado vs. Sin estado. Guarda información
o no entre cada interacción con el cliente.
●
●
Sin estado requiere que el cliente mantenga la
información necesaria. Ej: interacción http
Con estado. Ej: servidor de archivos.
25
Tipos de servidores
●
Servidores sin estado (“stateless”)
• Cuando un cliente envía una solicitud a un
servidor, éste la lleva a cabo, envía la
respuesta y elimina de sus tablas internas toda
la información relativa a dicha solicitud.
• No guarda información del cliente entre
solicitudes. No mantiene un registro de las
operaciones que van dejando los clientes
• Cada solicitud debe ser autocontenida.
26
Tipos de servidores
●
Consecuencias:
●
●
●
●
Servidores y clientes son completamente
independientes.
Se reducen los estados inconsistentes debido a
caídas de clientes y/o servidores
Posible pérdida de performance, ej. Un servidor no
se puede anticipar al comportamiento del cliente.
“El estado” del servidor no crece con más cliente
27
Tipos de servidores
●
Servidores con estado
●
●
Los servidores guardan información del estado de
los clientes entre solicitudes: tabla que asocia los
descriptores de archivos con los archivos
propiamente dichos.
Pueden saber qué datos están en el cache del
cliente (permiten al cliente mantener copias locales
de datos compartidos).
28
Tipos de servidores
●
Consecuencias:
●
●
Mejor performance: las actualizaciones se hacen
localmente, mensajes mas cortos.
Si el servidor falla y se pierde la tabla que lleva las
actualizaciones que realizan los clientes a cada
archivo. No se puede garantizar que se han
procesado las actualizaciones más recientes.
29
Tipos de servidores
●
¿Cuáles son las ventajas y desventajas
relativas de cada esquema?
Fallla
servidor
Falla cliente
Desempeño
Iterativo
Concurrente
Con estado
Sin estado
30
Plataformas de servidores: cluster
●
●
●
Colección de máquinas conectadas a través de
una red (LAN), donde cada máquina ejecuta
uno o más servidores de aplicación. La red
tiene un gran ancho de banda y la latencia muy
pequeña.
Organización típica: en tres capas.
Variante: dos capas, donde cada servidor de
aplicación tiene su BD o almacenamiento.
31
Servidores en cluster de tres capas
32
Servidores en cluster de tres capas
●
●
●
El primer nivel es un switch o interruptor lógico que enruta las
peticiones del cliente hacia el componente del cluster adecuado.
En el segundo nivel se encuentran los servidores dedicados a
procesar aplicaciones. Contienen Hw para computación de alto
rendimiento.
En el caso de servidores empresariales, pudiera ser que el poder
de cómputo requerido no sea el cuello de botella, sino que
requieran gran capacidad de almacenamiento: El tercer nivel
consta de servidores de procesamiento de datos (sistemas de
archivos), servidores de BD.
33
Servidores en cluster de tres capas
●
●
●
No todos los clústeres siguen esta separación, es frecuente
que cada máquina tenga sus propias unidades de
almacenamiento (arquitectura de dos niveles).
Cuando el servidor de cluster ofrece múltiples servicios,
pudiera ser que nodos diferentes dentro del cluster ejecuten
servidores de aplicaciones distintos.
En este caso el switch tiene que tener la capacidad de
distinguir los servicios para enviar las peticiones a las
máquinas apropiadas (sólo basta observar el número de
puerto dentro de la petición)
34
Clusters: Distribución de tareas
●
●
La mayoría de las implementaciones son servidores de dos
niveles que ejecutan un único servicio.
Objetivo principal: balancear la carga.
●
●
●
El conmutador envía los requerimientos a los nodos sin importar el
tipo de servicio o el contenido solicitado.
Todos los nodos se consideran con igual capacidad de servir
cualquier solicitud (granja de servidores). Una estrategia
sencilla puede ser round-robin.
Otras estrategias: nodos heterogéneos, aprovechar
procesamientos anteriores (cache)
35
Clusters: Distribución de tareas
●
●
●
Hay otros enfoques: Locality-Aware Request
Distribution: Se distribuyen las peticiones de acuerdo al
“contenido” junto con información relacionada con la
carga de cada nodo. La idea es enviar cada
requerimiento al nodo que ya tiene los datos en su
cache.
Esta estrategia debe aumentar el rendimiento debido
principalmente al aumento en la cantidad de hits en los
caches.
También se incrementa la escalabilidad porque los datos
se distribuyen entre los distintos nodos del cluster.
36
Servidores en Clusters: el switch
●
●
●
Una meta importante en el diseño de clúster de
servidores es ocultar el hecho de que existen
múltiples servidores.
Esta transparencia de acceso se ofrece dado
que se tiene un único punto de acceso, el
interruptor, que pudiera ser una máquina
dedicada.
Es el único punto de entrada, por lo cual se
ofrece una única dirección de red.
37
Servidores en Clusters: el switch
●
●
El swith acepta peticiones entrantes de una conexión TCP y redirecciona las peticiones hacia uno de los nodos. Para cada
petición se re-envía el paquete con la misma, al nodo o servidor
seleccionado.
Esto es necesario para que el cliente pueda continuar con la
ejecución del protocolo TCP: está esperando una respuesta por
parte del switch, no de algún servidor aleatorio con el cual nunca
se ha comunicado.
38
Servidores Distribuidos
●
●
●
●
Problema de un sólo servidor o cluster: Si el servidor falla,
el cliente no puede acceder al servicio
(Recordar definición de Sistema Distribuido: conjunto de
computadoras independientes que se muestran como un
sistema único coherente.)
Un servidor distribuido consiste en varios servidores que
ofrecen el mismo servicio
El hecho de que sean varios servidores es transparente al
cliente, quien sólo conoce una dirección y puerto
39
Técnicas para servidores
distribuidos
●
●
El servicio DNS (Domain Name System) puede
devolver varias direcciones IP para un mismo nombre
(ej: google.com). El software de red toma una de ellas
Se utiliza propiedades del encaminamiento para
ocultar dirección final.
●
●
Si uno de los servidores falla, las solicitudes del cliente son
encaminadas hacia otro servidor.
Protocolo IP versión 6 provee soporte para movilidad
(roaming). Un agente se encarga de reenvío a la dirección
original (HoA) desde la asignada (CoA)
40
Servidores distribuidos
41
Anexo: Virtualización
42
Virtualización
●
●
●
Se origina en los 60 (p.e., IBM), cuando no
había multiprogramación.
El Hw ofrecía una máquina virtual (entorno
SO/Hw) a cada aplicación, similar a la máquina
original
Los avances y abaratamiento del hardware,
junto con la multiprogramación (a partir de los
70) desplazaron las máquinas virtuales por Hw.
43
Virtualización
(a) Organización general entre programa, interfaz y sistema (a) y en un
sistema A virtual sobre un sistema B (b)
Virtualización
●
●
●
El hw y sw de soporte (bajo nivel) cambian
razonablemente rápido, las aplicaciones se
hacen más estables.
El software heredado (legacy) no se puede
actualizar al mismo paso que las plataformas
sobre las que se apoya.
La virtualización puede ayudar a desarrollar
interfaces heredadas en nuevas plataformas.
45
Virtualización
●
●
Desde los 90, Java hizo resurgir la
virtualización, con la promesa de la portabilidad
Los servidores deben manejar gran cantidad de
aplicaciones diversas, cuya administración y
funcionamiento se beneficia por la
virtualización
46
Aportes de la virtualización
●
●
●
Reducir heterogeneidad, facilitando la
portabilidad (p.e., Java)
Al no tener las aplicaciones acceso directo al
hw, pueden disminuir los problemas de
seguridad
Si falla una máquina virtual, las demás siguen
funcionando (mejor disponibilidad)
47
Abstracción
●
Simplificar lo que está en niveles inferiores
●
Ejemplos:
●
●
●
SO abstrae a los programas del almacenamiento
en disco (sectores, pistas, etc.) a través de los
archivos
El conjunto de instrucciones de una arquitectura
(p.e., IA-32) ofrece a los compiladores/aplicaciones
la misma interfaz aunque cambie el procesador
Interfaz bien definida limita aplicaciones a esas
arquitecturas, ¡poco flexible para un mundo en red!
48
Definición de virtualización
●
●
●
Virtualizar un componente es establecer una
correspondencia (map) entre su interfaz y
recursos sobre otro(s) componente(s)
posiblemente diferente(s)
El sistema real aparece como un sistema
virtual diferente o múltiples sistemas virtuales
El objetivo de la virtualización no es ocultar
detalles (como en la abstracción)
49
Interfaces/abstracciones ofrecidas
por un SO
50
Tipos de máquina virtual
●
Para un proceso usuario, la máquina es:
●
●
●
espacio de direcciones asignado, sus instrucciones
y los registros.
La E/S sólo es accesible a través de la Interfaz
binaria de aplicación (IBA), la cual define la vista de
los dispositivos reales
Desde la perspectiva del SO, todo el sistema
se ejecuta en la máquina que define el conjunto
de instrucciones de esa máquina
51
Tipos de máquina virtual
●
Máquinas virtuales de proceso (perspectiva de
un proceso)
●
●
Es una plataforma que ejecuta un proceso. Nace y
muere con la creación/terminación de un proceso
Máquinas virtuales de sistema. Ofrecen un
ambiente persistente que soporta ejecución de
SO y de los procesos
52
Terminología
●
●
●
●
El proceso que se ejecuta sobre una máquina
virtual es el invitado
La plataforma sobre la que se ejecuta la
máquina virtual es el anfitrión
El software que implementa una máquina
virtual de proceso es el soporte de tiempo de
ejecución (runtime)
El sw de virtualización se denomina monitor de
la máquina virtual (VMM). Ej: VMWare, XEN
53
Arquitecturas de Máquinas Virtuales
Máquina virtual de procesos, con múltiples
instancias de (aplicación, soporte ejecución)
54
Arquitecturas de Máquinas Virtuales
Monitor de máquina virtual con múltiples
instancias de (aplicaciones, SO)
55
Máquinas virtuales de proceso
●
●
●
Sistemas multiprogramados. Visión de una
máquina presentada a la aplicación (proceso)
por el conjunto de Instrucciones de la
arquitectura
Emuladores y traductores binarios dinámicos.
Permiten ejecutar un código que fue compilado
para otra arquitectura
MV de lenguajes de alto nivel. La MV se porta
(implementa) a cada plataforma. Ej.: JVM
56
MV de sistemas
●
●
Proporcionan ambiente completo que permite
múltiples SO y procesos.
Implementación clásica:
●
●
VMM encima del hw, el resto sobre él. Es el único
que se ejecuta con privilegios altos; toma el control
cuando SO invitado manipula recursos críticos
Provee visión uniforme del hw. p.e., un Sist. Distr.
Podría verse como un conjunto de recursos que
prestan servicios
57
Implementación de MV de sistemas
●
●
MV Alojadas. Sw de virtualización sobre el SO.
Se instala como una aplicación más del SO.
Confía en SO subyacente para servir acceso a
dispositivos. Ej.: VMWare
MV sistema completo. Se emula el hw (ISA) +
SO. Ejemplo: un sistema Windows sobre
MacOS
58
Descargar