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