Sistemas de Operacin II
Procesos en Sistemas Distribuidos
Prof. Yudith Cardinale
Abril-Julio 2012
2
Contenido
Hilos en Sistemas Distribuidos Clientes Servidores Anexo: Virtualizacin
3
Procesos e hilos
Un proceso es una entidad que posee 2 caractersticas importantes: Recursos: Bsicamente: un espacio de direcciones
(programas, datos y pila y un PCB), archivos, memoria, etc. El SOP realiza la funcin de proteccin para evitar interferencias no deseadas entre procesos en relacin con los recursos.
Planificacin/Ejecucin: El proceso sigue una ruta de ejecucin. Tiene un PC, un Estado de ejecucin (Listo, bloqueado, ejecutndose, etc.) y una prioridad.
4
Procesos e hilos
Estas dos caractersticas son independientes y pueden ser tratadas como tales por los sistemas de operacin.
En algunos sistemas de operacin se le denomina a la unidad activa hilo (thread) y a la unidad propietaria de recursos se le suele denominar proceso o tarea.
5
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 ejecucin. Un PC, un contexto (conjunto de registros) que se
almacena cuando no est en ejecucin. Una pila. Un espacio de almacenamiento para variables locales. Acceso a la memoria y recursos del proceso.
6
Procesos e hilos Para que la comunicacin 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 operacin.
Los cambios de contexto de procesos son ms costosos. Implican salvar el contexto del proceso, cambio de modo (trap al sistema de operacin, etc), otro cambio de modo, restaurar contexto del nuevo proceso
7
Procesos e hilos
Implementaciones de hilos: Threads a nivel de usuario.
Threads a nivel de kernel
Enfoque combinado, procesos Livianos
8
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.
Concentrmonos en la arquitectura Cliente-Servidor.
9
Clientes Multihilos
Sirven para esconder la latencia de comunicacin a travs de la red.
Ejemplo 1: Navegadores WEB En muchos casos una pgina WEB consiste de un
texto plano con mltiples figuras. Con frecuencia el navegador, establece la conexin
con el servidor, recupera y comienza a desplegar la pgina HTML (incluso se permite al usuario el desplazamiento dentro de la pgina) mientras el navegador continua recuperando otros archivos que conforman la pgina.
10
Clientes Multihilos
Ejemplo 1: Navegadores WEB Desarrollar navegadores multihilos simplifica este
hecho de forma considerable. Tan pronto como llega la pgina principal se pueden activar hilos que se encarguen de recuperar las dems partes. Cada hilo establece su propia conexin con el servidor.
Mientras tanto el usuario advierte el retardo en las imgenes pero puede ir explorando el documento
11
Clientes Multihilos
Si el servidor est saturado o es lento no se observarn mejoras notables en el rendimiento.
Ejemplo 2: Servidores WEB Replicados En muchos casos los servidores se replican en
distintas mquinas y cada servidor proporciona el mismo conjunto de documentos WEB. Estn localizados en el mismo sitio y se conocen por el mismo nombre.
12
Clientes Multihilos
Ejemplo 2: Servidores WEB Replicados Cuando entra una peticin para una pgina WEB
es re-enviada a uno de los servidores (usando round-robin u otra tcnica de balanceo de carga)
Cuando se usan clientes multihilos cada conexin puede ir a una rplica diferente del mismo servidor. En este caso los distintos archivos se transmiten en paralelo asegurando que la pgina WEB completa se despliega en un tiempo ms corto
13
Servidores Multihilos
El principal uso de la tecnologa multihilos est del lado del servidor.
Bsicamente buscan mejorar el desempeo (an en servidores monoprocesador) y la forma cmo se estructura el servidor.
Ejm: por lo general un servidor de archivos espera una peticin de entrada para una operacin de archivo, posteriormente ejecuta la peticin (operacin bloqueante al disco) y luego enva la respuesta de regreso.
14
Servidores Multihilos
Alternativas: Modelo Servidor/Trabajador: Las peticiones son
enviadas por los clientes hasta el servidor. Despus de examinar la peticin el hilo servidor elige un hilo trabajador sin utilizar y le encarga la peticin.
Hilo servidor
Peticin del cliente
Hilos trabajadores
peticiones
15
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 ejecucin.
Cmo 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 peticin. Mientras espera por el disco el servidor est ocioso y no procesa otra peticin. Se procesan menos peticiones por segundo (throughput).
Con los hilos se gana un rendimiento considerable. Cada hilo se programa secuencialmente en forma tradicional
16
Servidores Multihilos
Supongamos que los hilos no estn disponibles, pero los diseadores del sistema consideran inaceptable el rendimiento debido al uso de un solo hilo y operaciones bloqueantes.
Sol: uso de operaciones no bloqueantes (asncronas). Cuando llega una peticin se examina. Si se puede satisfacer desde el cache
bien. Si no, se enva un mensaje al disco (no bloqueante). Se registra el estado de la peticin actual en una tabla y se va al siguiente mensaje. El siguiente mensaje puede ser una peticin para otro trabajo o una respuesta del disco relacionada con una operacin previa. En este ltimo caso se recupera la informacin relevante de la tabla y junto con los datos solicitados, se enva al cliente.
En este caso la programacin del servidor es ms difcil y se necesita que el sistema de operacin provea llamadas asncronas.
17
Cliente/Servidor
Cuando la plataforma es una red de computadoras, las aplicaciones se distribuyen sobre la red para sacar partido del paralelismo
Un modelo bsico para estas plataformas es estructurar las aplicaciones en dos tipos de componentes: clientes y servidores.
Los clientes hacen la parte de interaccin con usuario o solicitante de servicio, el servidor se ocupa de la parte de procesamiento (ms pesada)
18
Protocolo TCP/IP
Conjunto (pila) de protocolos que permiten la interconexin de mquinas en red
Basado en dos protocolos: IP (Internetworking Protocol). Provee una abstraccin de la
ubicacin. Cada mquina es identificada por una direccin nica IP
TCP (Transmission Control Protocol). Ofrece servicio de conexin proceso a proceso en mquinas diferentes, a travs de la nocin de puerto
Una direccin es tpicamente un par (IP, puerto TCP)
19
Cliente/Servidor
Cliente/Servidor con protocolos de interaccin ad-hoc
20
Cliente/Servidor
Cliente/Servidor con protocolo de interaccin genrico
21
Clientes
Pueden aportar o no algn nivel de procesamiento: Clientes especficos por cada servicio remoto pueden
ocuparse de ciertas tareas (interpretacin de la solicitud), y acceder al servidor remoto para completarla
Clientes livianos. Slo ofrecen la interfaz al usuario, todo el anlisis y procesamiento (incluso el manejo de ventanas) se hace remotamente
Ocultan al usuario ubicacin de servidor, protocolos de interaccin, si la consulta implica acceder a varios servidores, etc.
22
Ej. Cliente oculta replicacin
23
Localizacin de servicio
24
Servidores
Un servidor es un proceso que implementa un servicio, a travs de una direccin especfica en la red
Tpicamente, el servidor se asigna a un puerto TCP en una mquina. El servicio se accede a travs de IP/Puerto. Ej.: puerto 80 (http), correo (25)
El cliente accede directamente si conoce la direccin. En ciertos casos, se puede utilizar servicios de localizacin adicionales. Ej: DNS
25
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 informacin o no entre cada interaccin con el cliente. Sin estado requiere que el cliente mantenga la
informacin necesaria. Ej: interaccin http Con estado. Ej: servidor de archivos.
26
Tipos de servidores
Servidores sin estado (stateless)
Cuando un cliente enva una solicitud a un servidor, ste la lleva a cabo, enva la respuesta y elimina de sus tablas internas toda la informacin relativa a dicha solicitud.
No guarda informacin del cliente entre solicitudes. No mantiene un registro de las operaciones que van dejando los clientes
Cada solicitud debe ser autocontenida.
27
Tipos de servidores
Consecuencias: Servidores y clientes son completamente
independientes. Se reducen los estados inconsistentes debido a
cadas de clientes y/o servidores Posible prdida de performance, ej. Un servidor no
se puede anticipar al comportamiento del cliente. El estado del servidor no crece con ms cliente
28
Tipos de servidores
Servidores con estado Los servidores guardan informacin del estado de
los clientes entre solicitudes: tabla que asocia los descriptores de archivos con los archivos propiamente dichos.
Pueden saber qu datos estn en el cache del cliente (permiten al cliente mantener copias locales de datos compartidos).
29
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 ms recientes.
30
Tipos de servidores
Cules son las ventajas y desventajas relativas de cada esquema?
Fallla servidor
Falla cliente Desempeo
Iterativo
Concurrente
Con estadoSin estado
31
Plataformas de servidores: cluster
Coleccin de mquinas conectadas a travs de una red (LAN), donde cada mquina ejecuta uno o ms servidores de aplicacin. La red tiene un gran ancho de banda y la latencia muy pequea.
Organizacin tpica: en tres capas. Variante: dos capas, donde cada servidor de
aplicacin tiene su BD o almacenamiento.
32
Servidores en cluster de tres capas
33
Servidores en cluster de tres capas
El primer nivel es un switch o interruptor lgico 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 computacin de alto rendimiento.
En el caso de servidores empresariales, pudiera ser que el poder de cmputo 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.
34
Servidores en cluster de tres capas
No todos los clsteres siguen esta separacin, es frecuente que cada mquina tenga sus propias unidades de almacenamiento (arquitectura de dos niveles).
Cuando el servidor de cluster ofrece mltiples 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 mquinas apropiadas (slo basta observar el nmero de puerto dentro de la peticin)
35
Clusters: Distribucin de tareas
La mayora de las implementaciones son servidores de dos niveles que ejecutan un nico servicio.
Objetivo principal: balancear la carga. El conmutador enva 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 heterogneos, aprovechar procesamientos anteriores (cache)
36
Clusters: Distribucin de tareas
Hay otros enfoques: Locality-Aware Request Distribution: Se distribuyen las peticiones de acuerdo al contenido junto con informacin 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.
Tambin se incrementa la escalabilidad porque los datos se distribuyen entre los distintos nodos del cluster.
37
Servidores en Clusters: el switch
Una meta importante en el diseo de clster de servidores es ocultar el hecho de que existen mltiples servidores.
Esta transparencia de acceso se ofrece dado que se tiene un nico punto de acceso, el interruptor, que pudiera ser una mquina dedicada.
Es el nico punto de entrada, por lo cual se ofrece una nica direccin de red.
38
Servidores en Clusters: el switch El swith acepta peticiones entrantes de una conexin TCP y re-
direcciona las peticiones hacia uno de los nodos. Para cada peticin se re-enva el paquete con la misma, al nodo o servidor seleccionado.
Esto es necesario para que el cliente pueda continuar con la ejecucin del protocolo TCP: est esperando una respuesta por parte del switch, no de algn servidor aleatorio con el cual nunca se ha comunicado.
39
Servidores Distribuidos
Problema de un slo servidor o cluster: Si el servidor falla, el cliente no puede acceder al servicio
(Recordar definicin 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 slo conoce una direccin y puerto
40
Tcnicas 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 direccin final. Si uno de los servidores falla, las solicitudes del cliente son
encaminadas hacia otro servidor. Protocolo IP versin 6 provee soporte para movilidad
(roaming). Un agente se encarga de reenvo a la direccin original (HoA) desde la asignada (CoA)
41
Servidores distribuidos
42
Anexo: Virtualizacin
43
Virtualizacin
Se origina en los 60 (p.e., IBM), cuando no haba multiprogramacin.
El Hw ofreca una mquina virtual (entorno SO/Hw) a cada aplicacin, similar a la mquina original
Los avances y abaratamiento del hardware, junto con la multiprogramacin (a partir de los 70) desplazaron las mquinas virtuales por Hw.
Virtualizacin
(a) Organizacin general entre programa, interfaz y sistema (a) y en un sistema A virtual sobre un sistema B (b)
45
Virtualizacin
El hw y sw de soporte (bajo nivel) cambian razonablemente rpido, las aplicaciones se hacen ms estables.
El software heredado (legacy) no se puede actualizar al mismo paso que las plataformas sobre las que se apoya.
La virtualizacin puede ayudar a desarrollar interfaces heredadas en nuevas plataformas.
46
Virtualizacin
Desde los 90, Java hizo resurgir la virtualizacin, con la promesa de la portabilidad
Los servidores deben manejar gran cantidad de aplicaciones diversas, cuya administracin y funcionamiento se beneficia por la virtualizacin
47
Aportes de la virtualizacin
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 mquina virtual, las dems siguen funcionando (mejor disponibilidad)
48
Abstraccin
Simplificar lo que est en niveles inferiores Ejemplos:
SO abstrae a los programas del almacenamiento en disco (sectores, pistas, etc.) a travs 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!
49
Definicin de virtualizacin
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 mltiples sistemas virtuales
El objetivo de la virtualizacin no es ocultar detalles (como en la abstraccin)
50
Interfaces/abstracciones ofrecidas por un SO
51
Tipos de mquina virtual
Para un proceso usuario, la mquina es: espacio de direcciones asignado, sus instrucciones
y los registros. La E/S slo es accesible a travs de la Interfaz
binaria de aplicacin (IBA), la cual define la vista de los dispositivos reales
Desde la perspectiva del SO, todo el sistema se ejecuta en la mquina que define el conjunto de instrucciones de esa mquina
52
Tipos de mquina virtual
Mquinas virtuales de proceso (perspectiva de un proceso) Es una plataforma que ejecuta un proceso. Nace y
muere con la creacin/terminacin de un proceso Mquinas virtuales de sistema. Ofrecen un
ambiente persistente que soporta ejecucin de SO y de los procesos
53
Terminologa
El proceso que se ejecuta sobre una mquina virtual es el invitado
La plataforma sobre la que se ejecuta la mquina virtual es el anfitrin
El software que implementa una mquina virtual de proceso es el soporte de tiempo de ejecucin (runtime)
El sw de virtualizacin se denomina monitor de la mquina virtual (VMM). Ej: VMWare, XEN
54
Arquitecturas de Mquinas Virtuales
Mquina virtual de procesos, con mltiples instancias de (aplicacin, soporte ejecucin)
55
Arquitecturas de Mquinas Virtuales
Monitor de mquina virtual con mltiples instancias de (aplicaciones, SO)
56
Mquinas virtuales de proceso
Sistemas multiprogramados. Visin de una mquina presentada a la aplicacin (proceso) por el conjunto de Instrucciones de la arquitectura
Emuladores y traductores binarios dinmicos. Permiten ejecutar un cdigo que fue compilado para otra arquitectura
MV de lenguajes de alto nivel. La MV se porta (implementa) a cada plataforma. Ej.: JVM
57
MV de sistemas
Proporcionan ambiente completo que permite mltiples SO y procesos.
Implementacin clsica: 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 crticos
Provee visin uniforme del hw. p.e., un Sist. Distr. Podra verse como un conjunto de recursos que prestan servicios
58
Implementacin de MV de sistemas
MV Alojadas. Sw de virtualizacin sobre el SO. Se instala como una aplicacin ms del SO. Confa 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
Slide 1Slide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Slide 14Slide 15Slide 16Slide 17Slide 18Slide 19Slide 20Slide 21Slide 22Slide 23Slide 24Slide 25Slide 26Slide 27Slide 28Slide 29Slide 30Slide 31Slide 32Slide 33Slide 34Slide 35Slide 36Slide 37Slide 38Slide 39Slide 40Slide 41Slide 42Slide 43Slide 44Slide 45Slide 46Slide 47Slide 48Slide 49Slide 50Slide 51Slide 52Slide 53Slide 54Slide 55Slide 56Slide 57Slide 58