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 cambios de contexto de procesos son más costosos. 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. restaurar contexto del 6 nuevo proceso . otro cambio de modo. Los threads comparten el mismo espacio de direcciones. etc). Implican salvar el contexto del proceso. cambio de modo (trap al sistema de operación.

procesos Livianos 7 .Procesos e hilos ● Implementaciones de hilos: ● Threads a nivel de usuario. ● Threads a nivel de kernel ● Enfoque combinado.

8 . Esta propiedad vuelve a los hilos particularmente atractivos para su uso dentro de sistemas distribuidos.Hilos en Sistemas Distribuidos ● ● Usando hilos. Concentrémonos en la arquitectura ClienteServidor. se puede permitir el uso de llamadas al sistema bloqueantes sin necesidad de “bloquear” todo el proceso.

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 .

Mientras tanto el usuario advierte el retardo en las imágenes pero puede ir explorando el documento 10 .Clientes Multihilos ● Ejemplo 1: Navegadores WEB ● ● Desarrollar navegadores multihilos simplifica este hecho de forma considerable. Cada hilo establece su propia conexión con el servidor. Tan pronto como llega la página principal se pueden activar hilos que se encarguen de recuperar las demás partes.

Están localizados en el mismo sitio y se conocen por el mismo nombre. 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. 11 .Clientes Multihilos ● ● Si el servidor está saturado o es lento no se observarán mejoras notables en el rendimiento.

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 .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.

13 .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.

Servidores Multihilos ● Alternativas: ● Modelo Servidor/Trabajador: Las peticiones son enviadas por los clientes hasta el servidor. Hilo servidor peticiones Petición del cliente Hilos trabajadores 14 . Después de examinar la petición el hilo servidor elige un hilo trabajador sin utilizar y le encarga la petición.

Cada hilo se programa secuencialmente en forma tradicional 15 . Con los hilos se gana un rendimiento considerable. selecciona otro para su ejecución. Si el hilo se suspende. Mientras espera por el disco el servidor está ocioso y no procesa otra petición. lo cual puede provocar que se suspenda hasta que los datos sean recuperados. las examina y las trata de resolver antes de recibir la siguiente petición. Cómo se programa un servidor de archivos en la ausencia de hilos? ● ● El servidor recibe a peticiones. Se procesan menos peticiones por segundo (throughput). el procesador.Servidores Multihilos ● ● El hilo trabajador realiza la lectura.

16 . Si no. 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. se envía al cliente. En este último caso se recupera la información relevante de la tabla y junto con los datos solicitados. Se registra el estado de la petición actual en una tabla y se va al siguiente mensaje.Servidores Multihilos ● ● ● ● Supongamos que los hilos no están disponibles. se envía un mensaje al disco (no bloqueante). El siguiente mensaje puede ser una petición para otro trabajo o una respuesta del disco relacionada con una operación previa. pero los diseñadores del sistema consideran inaceptable el rendimiento debido al uso de un solo hilo y operaciones bloqueantes. Cuando llega una petición se examina. Sol: uso de operaciones no bloqueantes (asíncronas). Si se puede satisfacer desde el cache bien.

Cliente/Servidor ● ● ● Cuando la plataforma es una red de computadoras. el servidor se ocupa de la parte de procesamiento (más pesada) 17 . 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.

Provee una abstracción de la ubicación. a través de la noción de puerto Una dirección es típicamente un par (IP. Cada máquina es identificada por una dirección única IP TCP (Transmission Control Protocol).Protocolo TCP/IP ● ● Conjunto (pila) de protocolos que permiten la interconexión de máquinas en red Basado en dos protocolos: ● ● ● IP (Internetworking Protocol). Ofrece servicio de conexión proceso a proceso en máquinas diferentes. 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 .

protocolos de interacción. y acceder al servidor remoto para completarla Clientes livianos. etc. si la consulta implica acceder a varios servidores. 21 . todo el análisis y procesamiento (incluso el manejo de ventanas) se hace remotamente Ocultan al usuario ubicación de servidor. Sólo ofrecen la interfaz al usuario.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).

Ej. Cliente oculta replicación 22 .

Localización de servicio 23 .

el servidor se asigna a un puerto TCP en una máquina.Servidores ● ● ● Un servidor es un proceso que implementa un servicio.: puerto 80 (http). se puede utilizar servicios de localización adicionales. correo (25) El cliente accede directamente si conoce la dirección. Ej: DNS 24 . El servicio se accede a través de IP/Puerto. Ej. a través de una dirección específica en la red Típicamente. En ciertos casos.

Sin estado. procesan y responden. Los concurrentes reciben la solicitud y la pasan a un hilo/proceso local que hace el procesamiento Con estado vs.Tipos de servidores ● ● Iterativos vs Concurrentes. ● ● Sin estado requiere que el cliente mantenga la información necesaria. Ej: servidor de archivos. Iterativos reciben. 25 . Guarda información o no entre cada interacción con el cliente. Ej: interacción http Con estado.

éste la lleva a cabo. • No guarda información del cliente entre solicitudes. 26 .Tipos de servidores ● Servidores sin estado (“stateless”) • Cuando un cliente envía una solicitud a un servidor. No mantiene un registro de las operaciones que van dejando los clientes • Cada solicitud debe ser autocontenida. envía la respuesta y elimina de sus tablas internas toda la información relativa a dicha solicitud.

Un servidor no se puede anticipar al comportamiento del cliente. “El estado” del servidor no crece con más cliente 27 . ej.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.

28 .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).

mensajes mas cortos. No se puede garantizar que se han procesado las actualizaciones más recientes. Si el servidor falla y se pierde la tabla que lleva las actualizaciones que realizan los clientes a cada archivo. 29 .Tipos de servidores ● Consecuencias: ● ● Mejor performance: las actualizaciones se hacen localmente.

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 .

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.Plataformas de servidores: cluster ● ● ● Colección de máquinas conectadas a través de una red (LAN). donde cada servidor de aplicación tiene su BD o almacenamiento. 31 . Organización típica: en tres capas. Variante: dos capas.

Servidores en cluster de tres capas 32 .

sino que requieran gran capacidad de almacenamiento: El tercer nivel consta de servidores de procesamiento de datos (sistemas de archivos). servidores de BD. pudiera ser que el poder de cómputo requerido no sea el cuello de botella. En el segundo nivel se encuentran los servidores dedicados a procesar aplicaciones. En el caso de servidores empresariales.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. 33 . Contienen Hw para computación de alto rendimiento.

Cuando el servidor de cluster ofrece múltiples servicios. 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 .Servidores en cluster de tres capas ● ● ● No todos los clústeres siguen esta separación. pudiera ser que nodos diferentes dentro del cluster ejecuten servidores de aplicaciones distintos. es frecuente que cada máquina tenga sus propias unidades de almacenamiento (arquitectura de dos niveles).

Todos los nodos se consideran con igual capacidad de servir cualquier solicitud (granja de servidores). ● ● ● El conmutador envía los requerimientos a los nodos sin importar el tipo de servicio o el contenido solicitado. Objetivo principal: balancear la carga.Clusters: Distribución de tareas ● ● La mayoría de las implementaciones son servidores de dos niveles que ejecutan un único servicio. aprovechar procesamientos anteriores (cache) 35 . Una estrategia sencilla puede ser round-robin. Otras estrategias: nodos heterogéneos.

36 .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. Esta estrategia debe aumentar el rendimiento debido principalmente al aumento en la cantidad de hits en los caches. La idea es enviar cada requerimiento al nodo que ya tiene los datos en su cache. También se incrementa la escalabilidad porque los datos se distribuyen entre los distintos nodos del cluster.

el interruptor. que pudiera ser una máquina dedicada.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. 37 . Esta transparencia de acceso se ofrece dado que se tiene un único punto de acceso. por lo cual se ofrece una única dirección de red. Es el único punto de entrada.

Servidores en Clusters: el switch ● ● El swith acepta peticiones entrantes de una conexión TCP y redirecciona las peticiones hacia uno de los nodos. 38 . Esto es necesario para que el cliente pueda continuar con la ejecución del protocolo TCP: está esperando una respuesta por parte del switch. Para cada petición se re-envía el paquete con la misma. al nodo o servidor seleccionado. no de algún servidor aleatorio con el cual nunca se ha comunicado.

quien sólo conoce una dirección y puerto 39 .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.

El software de red toma una de ellas Se utiliza propiedades del encaminamiento para ocultar dirección final. las solicitudes del cliente son encaminadas hacia otro servidor. Protocolo IP versión 6 provee soporte para movilidad (roaming).Técnicas para servidores distribuidos ● ● El servicio DNS (Domain Name System) puede devolver varias direcciones IP para un mismo nombre (ej: google. ● ● Si uno de los servidores falla.com). 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 .

. cuando no había multiprogramación. El Hw ofrecía una máquina virtual (entorno SO/Hw) a cada aplicación.Virtualización ● ● ● Se origina en los 60 (p. similar a la máquina original Los avances y abaratamiento del hardware. IBM). 43 .e. junto con la multiprogramación (a partir de los 70) desplazaron las máquinas virtuales por Hw.

Virtualización (a) Organización general entre programa. interfaz y sistema (a) y en un sistema A virtual sobre un sistema B (b) .

45 . La virtualización puede ayudar a desarrollar interfaces heredadas en nuevas plataformas. las aplicaciones se hacen más estables.Virtualización ● ● ● El hw y sw de soporte (bajo nivel) cambian razonablemente rápido. El software heredado (legacy) no se puede actualizar al mismo paso que las plataformas sobre las que se apoya.

cuya administración y funcionamiento se beneficia por la virtualización 46 . Java hizo resurgir la virtualización.Virtualización ● ● Desde los 90. con la promesa de la portabilidad Los servidores deben manejar gran cantidad de aplicaciones diversas.

e.Aportes de la virtualización ● ● ● Reducir heterogeneidad. Java) Al no tener las aplicaciones acceso directo al hw.. facilitando la portabilidad (p. las demás siguen funcionando (mejor disponibilidad) 47 . pueden disminuir los problemas de seguridad Si falla una máquina virtual.

) a través de los archivos El conjunto de instrucciones de una arquitectura (p. etc. IA-32) ofrece a los compiladores/aplicaciones la misma interfaz aunque cambie el procesador Interfaz bien definida limita aplicaciones a esas arquitecturas.. pistas.Abstracción ● Simplificar lo que está en niveles inferiores ● Ejemplos: ● ● ● SO abstrae a los programas del almacenamiento en disco (sectores.e. ¡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. todo el sistema se ejecuta en la máquina que define el conjunto de instrucciones de esa máquina 51 . la cual define la vista de los dispositivos reales Desde la perspectiva del SO. sus instrucciones y los registros. La E/S sólo es accesible a través de la Interfaz binaria de aplicación (IBA). la máquina es: ● ● ● espacio de direcciones asignado.

Ofrecen un ambiente persistente que soporta ejecución de SO y de los procesos 52 .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.

Ej: VMWare. XEN 53 .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).

con múltiples instancias de (aplicación.Arquitecturas de Máquinas Virtuales Máquina virtual de procesos. soporte ejecución) 54 .

SO) 55 .Arquitecturas de Máquinas Virtuales Monitor de máquina virtual con múltiples instancias de (aplicaciones.

: JVM 56 . 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. La MV se porta (implementa) a cada plataforma. Ej. Permiten ejecutar un código que fue compilado para otra arquitectura MV de lenguajes de alto nivel.Máquinas virtuales de proceso ● ● ● Sistemas multiprogramados.

toma el control cuando SO invitado manipula recursos críticos Provee visión uniforme del hw. un Sist. Es el único que se ejecuta con privilegios altos.. Distr. Podría verse como un conjunto de recursos que prestan servicios 57 . el resto sobre él.MV de sistemas ● ● Proporcionan ambiente completo que permite múltiples SO y procesos.e. p. Implementación clásica: ● ● VMM encima del hw.

: VMWare MV sistema completo. Sw de virtualización sobre el SO. Confía en SO subyacente para servir acceso a dispositivos. Se emula el hw (ISA) + SO.Implementación de MV de sistemas ● ● MV Alojadas. Se instala como una aplicación más del SO. Ejemplo: un sistema Windows sobre MacOS 58 . Ej.