02 - Arquitecturas de Sistemas Distribuidos IIC2523 - Sistemas Distribuidos Cristian Ruz – cruz@ing.puc.cl Departamento de Ciencia de la Computación Pontificia Universidad Católica de Chile Semestre 1-2013 C.Ruz (PUC) IIC2523 1/2013 1 / 89 Contenidos 1 Taxonomı́as Paralelismo de control y paralelismo de datos Organización de la memoria 2 Modelos de comunicación Entidades Paradigmas Roles Ubicación 3 Patrones de arquitectura 4 Middlewares 5 Soporte del sistema operativo Procesos y Threads Comunicación e invocación Virtualización C.Ruz (PUC) IIC2523 1/2013 2 / 89 Taxonomı́as Contenidos 1 Taxonomı́as Paralelismo de control y paralelismo de datos Organización de la memoria 2 Modelos de comunicación Entidades Paradigmas Roles Ubicación 3 Patrones de arquitectura 4 Middlewares 5 Soporte del sistema operativo Procesos y Threads Comunicación e invocación Virtualización C.Ruz (PUC) IIC2523 1/2013 3 / 89 Taxonomı́as ¿Cómo construir los sistemas? Recordemos la arquitectura de Von Neumann Queremos llevar esto a una arquitectura distribuida ¿Cómo organizar las CPUs? ¿Cómo organizar la memoria? ¿Cómo organizar la entrada/salida de datos? C.Ruz (PUC) IIC2523 1/2013 4 / 89 Taxonomı́as Paralelismo de control y paralelismo de datos Taxonomı́a de Flynn Michael J. Flynn (1972)1 propuso cuatro modos de procesamiento. De acuerdo a cantidad de flujos de control y cantidad de flujos de datos: Single Data Multiple Data Single Instruction SISD SIMD Multiple Instruction MISD MIMD 1 M.Flynn. Some computer organizations and their efectiveness, IEEE Transactions on Computers, 1972 C.Ruz (PUC) IIC2523 1/2013 5 / 89 Taxonomı́as Paralelismo de control y paralelismo de datos SISD: Single Instruction, Single Data Un flujo instrucciones, operando sobre un flujo de datos. Corresponde exactamente a una arquitectura de Von Neumann. Procesamiento secuencial de instrucciones Incluyendo pipelining, prefetching, branch prediction PCs tradicionales, mainframes C.Ruz (PUC) IIC2523 1/2013 6 / 89 Taxonomı́as Paralelismo de control y paralelismo de datos SIMD: Single Instruction, Multiple Data Un flujo de instrucciones, operando sobre distintos datos. El flujo de instrucciones se replica en múltiples procesadores. Cada instrucción se ejecuta sobre distintos flujos de datos. Aplicaciones sobre vectores o matrices Aplicaciones cientı́ficas, multimedia, videojuegos Procesadores vectoriales Cray, Intel MMX (Pentium), AltiVec (PowerPC), 3DNow!(AMD) Explotan paralelismo a nivel de datos C.Ruz (PUC) IIC2523 1/2013 7 / 89 Taxonomı́as Paralelismo de control y paralelismo de datos SIMD: Single Instruction, Multiple Data Ejemplo Tarea: multiplicar 4 números almacenados en RAM C.Ruz (PUC) IIC2523 1/2013 8 / 89 Taxonomı́as Paralelismo de control y paralelismo de datos MISD: Multiple Instruction, Single Data Múltiple flujos de instrucciones, sobre un único flujo de datos Solo paralelismo de control Pipelining de instrucciones Systolic Arrays No es una arquitectura muy común C.Ruz (PUC) IIC2523 1/2013 9 / 89 Taxonomı́as Paralelismo de control y paralelismo de datos MISD: Multiple Instruction, Single Data Ejemplo Arreglos sistólicos Procesadores independientes, compartiendo su output ¿Otra aplicación? C.Ruz (PUC) IIC2523 1/2013 10 / 89 Taxonomı́as Paralelismo de control y paralelismo de datos MIMD: Multiple Instruction, Multiple Data Múltiples flujos de instrucciones, sobre múltiples flujos de datos. Caso más general de computación paralela ¿Memoria compartida o distribuida? Multi-cores Explotan paralelismo de control y de datos C.Ruz (PUC) IIC2523 1/2013 11 / 89 Taxonomı́as Organización de la memoria Memoria ¿Cómo organizar el acceso a la memoria? Antes de eso hay que elegir una alternativa: Memoria compartida Memoria distribuida C.Ruz (PUC) IIC2523 1/2013 12 / 89 Taxonomı́as Organización de la memoria Memoria compartida Todos los procesadores están conectados a una memoria globalmente accesible. Todos pueden leer o escribir a la vez Memoria podrı́a ser un cuello de botella . . . ¡pero podemos usar caches! Se requiere coherencia de memoria ¿El dato leı́do es el mismo que está en memoria? ¿y si alguien lo cambió justo después que lo leı́? Coherencia puede proveerse por hardware o software Se pueden usar distintos modelos de consistencia C.Ruz (PUC) IIC2523 1/2013 13 / 89 Taxonomı́as Organización de la memoria Memoria compartida pero ... ¿cómo la organizo? De acuerdo al tipo de acceso: UMA, Uniform Memory Access NUMA, Non-Uniform Memory Access COMA, Cache-Only Memory Access C.Ruz (PUC) IIC2523 1/2013 14 / 89 Taxonomı́as Organización de la memoria Memoria compartida: UMA Uniform Memory Access Todos los procesadores acceden de la misma manera a la memoria. Ejemplo: Symmetric MultiProcessor (SMP) ¿Como evitar congestión? → ¡Cache! ¿Cómo lo mantengo coherente? . . . C.Ruz (PUC) IIC2523 1/2013 15 / 89 Taxonomı́as Organización de la memoria Memoria compartida: UMA Uniform Memory Access No solo puede ser un bus. También puede ser un crossbar switch: C.Ruz (PUC) IIC2523 1/2013 16 / 89 Taxonomı́as Organización de la memoria Memoria compartida: NUMA Non-Uniform Memory Access Diferentes tipos de acceso. ¿Dependiendo de qué? Accesos locales versus accesos remotos Diferentes modos de acceder a la memoria Local >> Remoto Clave: aprovechar localidad de referencia Aún se debe mantener cache coherence C.Ruz (PUC) IIC2523 1/2013 17 / 89 Taxonomı́as Organización de la memoria Memoria compartida: Cache Coherence ¿Cómo mantenar las copias en cache de manera coherente? Diferentes niveles de coherencia Writes aparecen “instantáneamente” Cada procesador ve la misma secuencia de cambios Cada procesador puede ver distintas secuencias de cambios (i.e. no hay coherencia) Algunas condiciones: Order preservation: WP (x)a ⇒ RP (x)a Coherent view: WP2 (x)a ⇒ RP1 (x)a Secuencial: WP1 (x)a, WP2 (x)b ⇒ RP3 (x)a, RP3 (x)b ∨ RP3 (x)b Inmediato si escritura fuera instantánea C.Ruz (PUC) IIC2523 1/2013 18 / 89 Taxonomı́as Organización de la memoria Memoria compartida: Cache Coherence Mecanismos: Coherencia basada en directorio. Registro de copias. Invalidación al escribir. Snooping Bus de coherencia de caches Cada cache se preocupa de la coherencia con los demás Tres estados: V (valid), D(dirty), S(shared) Read miss → broadcast (y D → V ) Local write → broadcast (y V → D) Snarfing Controlador de cache monitorea la escritura en memoria de sus datos Updates inmediatos Protocolos de coherencia: Distintos modelos de consistencia de memoria Secuencial, causal, weak, release, . . . C.Ruz (PUC) IIC2523 1/2013 19 / 89 Taxonomı́as Organización de la memoria Memoria distribuida Cada procesador tiene su memoria local. Accesos a memorias remotas son explı́citos. No hay contención ¿Cómo se comparten datos? Distintas topologı́as C.Ruz (PUC) IIC2523 1/2013 20 / 89 Taxonomı́as Organización de la memoria Memoria distribuida: Mesh Procesadores conectados en 2D grid. Apropiado para aplicaciones particulares. p Conexiones se incrementan en O( (n)) C.Ruz (PUC) IIC2523 1/2013 21 / 89 Taxonomı́as Organización de la memoria Memoria distribuida: Hypercube Menos conexiones Dimensión d Construcción recursiva Cada procesador tiene d conexiones a otros Complejidad de conexiones O(log(d)) Propiedades de distancia definidas Distancia máxima: d Dimensión d → 2d nodos C.Ruz (PUC) IIC2523 1/2013 22 / 89 Taxonomı́as Organización de la memoria Memoria distribuida: Hypercube 9D Hypercube C.Ruz (PUC) IIC2523 1/2013 23 / 89 Modelos de comunicación Contenidos 1 Taxonomı́as Paralelismo de control y paralelismo de datos Organización de la memoria 2 Modelos de comunicación Entidades Paradigmas Roles Ubicación 3 Patrones de arquitectura 4 Middlewares 5 Soporte del sistema operativo Procesos y Threads Comunicación e invocación Virtualización C.Ruz (PUC) IIC2523 1/2013 24 / 89 Modelos de comunicación Modelos de comunicación Distribución sin comunicación no sirve. 4 puntos de vista: ¿Quiénes se comunican? → Entidades ¿Cómo se comunican? → Paradigmas ¿Qué papel juega cada uno? → Roles ¿Desde dónde se comunican? → Ubicación C.Ruz (PUC) IIC2523 1/2013 25 / 89 Modelos de comunicación Entidades Entidades Protagonizado por . . . Dos maneras de pensarlo: Desde el punto de vista del sistema: Nodos Procesos Threads Desde el punto de vista de la programación: ¿Con qué resuelvo el problema? Objetos Componentes Web Services C.Ruz (PUC) IIC2523 1/2013 26 / 89 Modelos de comunicación Entidades Entidades: objetos Orientación a objetos Abstracciones “del mundo real” Solución mediante interacción de objetos Interfaces y descripción de métodos Objetos distribuidos Java RMI, CORBA, DCOM/.NET, Pyro, JavaSpaces C.Ruz (PUC) IIC2523 1/2013 27 / 89 Modelos de comunicación Entidades Entidades: componentes Orientación a componentes Abstracciones de “soluciones” Interacción de componentes Interfaces y contratos Interfaz y dependencias explı́citas 3rd party - components Composición de soluciones y reusabilidad CCA, CCM, GCM, .NET, SOFA, Fractal, Entreprise Javabeans C.Ruz (PUC) IIC2523 1/2013 28 / 89 Modelos de comunicación Entidades Entidades: Web Services Servicios Web Interfaces y encapsulamiento Similar en concepto a objetos y componentes Integrado en standards WWW Servicios completos y sujetos a composición Acoplamiento débil entre requester y provider C.Ruz (PUC) IIC2523 1/2013 29 / 89 Modelos de comunicación Paradigmas Paradigmas: ¿cómo comunicarse? SMS, Voicemail, Twitter, Facebook, G+ ? Tres clasificaciones: Comunicación interprocesos Invocación remota Comunicación indirecta C.Ruz (PUC) IIC2523 1/2013 30 / 89 Modelos de comunicación Paradigmas Paradigmas: Interprocess Communication Comunicación de bajo nivel entre procesos Primitivas de paso de mensajes Sockets: send(), recv() Sincronı́a / asincronı́a, confiabilidad, orden Codificación: marshalling, XML, Comunicación de grupos: multicast Virtualización de redes MPI: Message Passing Interface Popular en aplicaciones cientı́ficas C.Ruz (PUC) IIC2523 1/2013 31 / 89 Modelos de comunicación Paradigmas Paradigmas: Invocación Remota Ejecución de operaciones/procedimientos/métodos en otro lugar Request/reply Modelo más básico (o único). Ej: HTTP Remote Procedure Call (RPC) Invocación similar a una invocación local Sistema RPC maneja comunicación y marshalling Remote Method Invocation (RMI) RPC para objetos Referencias a otros objetos RPC y RMI se basan en Request/Reply C.Ruz (PUC) IIC2523 1/2013 32 / 89 Modelos de comunicación Paradigmas Paradigmas: RPC y RMI RPC RMI C.Ruz (PUC) IIC2523 1/2013 33 / 89 Modelos de comunicación Paradigmas Paradigmas: Invocación Remota Comunicación es básicamente entre dos: sender y receiver Acomplamiento fuerte suele no ser una buena idea ¿Debo conocer al receptor? ¿Es necesario que el receptor exista? Suele agregarse un tercer elemento que permita desacoplar: Espacio: no es necesario conocer al receptor Tiempo: no es necesario que el receptor exista al mismo tiempo C.Ruz (PUC) IIC2523 1/2013 34 / 89 Modelos de comunicación Paradigmas Paradigmas: Comunicación Indirecta No sólo entre pares: Group Communication: one-to-many Abstracción de grupo, pertenencia Publish-Subscribe Distribución de eventos a interesados, one-to-many Colas de mensajes Punto-a-punto basado en colas Espacios de tuplas Publicación de tuplas. Lectura por patrones. Memoria Compartida Distribuida (DSM) Abstracción de lectura/escritura a memoria Acceso transparente a memoria remota Modelos de consistencia C.Ruz (PUC) IIC2523 1/2013 35 / 89 Modelos de comunicación Paradigmas Paradigmas: Comunicación Indirecta Publish-Subscribe Publish-Subscribe C.Ruz (PUC) IIC2523 1/2013 36 / 89 Modelos de comunicación Paradigmas Paradigmas: Comunicación Indirecta Message Queues Message Queues C.Ruz (PUC) IIC2523 1/2013 37 / 89 Modelos de comunicación Paradigmas Paradigmas: Comunicación Indirecta Tuplas Espacios de Tuplas C.Ruz (PUC) IIC2523 1/2013 38 / 89 Modelos de comunicación Paradigmas Paradigmas: Comunicación Indirecta DSM Distributed Shared Memory C.Ruz (PUC) IIC2523 1/2013 39 / 89 Modelos de comunicación Roles Roles Role Playing Games? Roles implican responsabilidades2 ¿Roles estáticos o dinámicos? Dos modelos tı́picos Cliente-Servidor Peer-to-Peer (P2P) 2 y con un gran ¿rol? viene un gran responsabilidad . . . o algo ası́ C.Ruz (PUC) IIC2523 1/2013 40 / 89 Modelos de comunicación Roles Roles: Cliente-Servidor Cliente: Envı́a solicitudes (requests) Servidor: Responde solicitudes con replies Servidores pueden actuar como clientes de otros servidores Web, DNS, NFS, . . . Internet Services ¿Cómo manejar la centralización? C.Ruz (PUC) IIC2523 1/2013 41 / 89 Modelos de comunicación Roles Roles: Peer-to-Peer No solo para file sharing . . . Miembros (pares, peers) cumplen roles similares. Motivación: compartir recursos (sharing) Objetivo: escalabilidad Ejemplo: BitTorrent Dificultades: ¿Cómo ubicar recursos? Réplicas y consistencia C.Ruz (PUC) IIC2523 1/2013 42 / 89 Modelos de comunicación Ubicación Ubicación ¿Dónde se ejecuta esto? Mapeo entidades → infrastructura fı́sica Múltiples consideraciones: concurrencia, hardware, calidad de red, . . . Algunas estrategias: Mapeo a múltiples servidores Caching Código móvil Agentes móviles C.Ruz (PUC) IIC2523 1/2013 43 / 89 Modelos de comunicación Ubicación Múltiples servidores Replicación de servidores Datos replicados o particionados Cliente no sabe necesariamente con cuál se comunica Ejemplo: NIS C.Ruz (PUC) IIC2523 1/2013 44 / 89 Modelos de comunicación Ubicación Caching Almacenamiento de requests comunes Verificación de actualidad Incremento de disponibilidad Ejemplo: Web Proxy Servers C.Ruz (PUC) IIC2523 1/2013 45 / 89 Modelos de comunicación Ubicación Código móvil Ejecución de código local en lugar de remoto Ejecución interactiva más eficiente Simulación de actualizaciones push desde servidor Potencial problema de seguridad Ejemplo: Applets C.Ruz (PUC) IIC2523 1/2013 46 / 89 Modelos de comunicación Ubicación Agentes móviles Código que se ejecuta remotamente de computador en computador Migración Algunas tareas: Recolección de información Actualización y mantenimiento Potencial problema de seguridad Ejemplo: Xerox PARC worm, 1982 C.Ruz (PUC) IIC2523 1/2013 47 / 89 Patrones de arquitectura Contenidos 1 Taxonomı́as Paralelismo de control y paralelismo de datos Organización de la memoria 2 Modelos de comunicación Entidades Paradigmas Roles Ubicación 3 Patrones de arquitectura 4 Middlewares 5 Soporte del sistema operativo Procesos y Threads Comunicación e invocación Virtualización C.Ruz (PUC) IIC2523 1/2013 48 / 89 Patrones de arquitectura Patrones Arquitecturales Cómo organizo la aplicación distribuida. Soluciones arquitecturales tı́picas. Cuatro a analizar: Layering Tiering Thin clients C.Ruz (PUC) IIC2523 1/2013 49 / 89 Patrones de arquitectura Layers Basado en niveles de abstracción. Cada capa provee servicios a la siguiente, y obtiene servicios de la anterior. Plataforma: x86/Windows, x86/Linux, ARM/Symbian, x86/MacOSX Middleware: ocultar heterogeneidad, interfaz común para programadores C.Ruz (PUC) IIC2523 1/2013 50 / 89 Patrones de arquitectura Tiers Separación de funcionalidades. Aplicable a cada layer. Tı́picamente organización de aplicaciones. Comúnmente 2 ó 3 tiers, pero generalizable a n. Ejemplo: 3-tier Presentation tier Interacción con usuario, actualización visual Application/logic/business tier Funcionalidad de la aplicación Data tier Almacenamiento de datos C.Ruz (PUC) IIC2523 1/2013 51 / 89 Patrones de arquitectura Tiers C.Ruz (PUC) IIC2523 1/2013 52 / 89 Patrones de arquitectura Thin Clients Mı́nima funcionalidad en el cliente. Tendencia en Cloud Computing Cliente sólo maneja la interfaz Procesamiento se hace en la nube Ejemplos: Cloud-based: GMail, Google Docs Very thin: Chromebooks Ultra thin: VNC C.Ruz (PUC) IIC2523 1/2013 53 / 89 Patrones de arquitectura Otros casos Proxy. Representante. Transparencia de ubicación. Replicación y caching. Ejemplo: Web Proxies Brokers. Servicio de contacto. Provider + Requester + Broker Broker relaciona Provider con Requester Ejemplo: Service Oriented Architectures (SOA) Reflection. Introspection e intercession. Capacidad del sistema de examinarse y modificarse. Meta-interfaz sobre elementos del sistema. Ejemplo: Java RMI. C.Ruz (PUC) IIC2523 1/2013 54 / 89 Middlewares Contenidos 1 Taxonomı́as Paralelismo de control y paralelismo de datos Organización de la memoria 2 Modelos de comunicación Entidades Paradigmas Roles Ubicación 3 Patrones de arquitectura 4 Middlewares 5 Soporte del sistema operativo Procesos y Threads Comunicación e invocación Virtualización C.Ruz (PUC) IIC2523 1/2013 55 / 89 Middlewares ¿Qué es un Middleware? Una capa de abstracción de alto nivel. Objetivos: Proveer una interfaz de programación común para desarrolladores. Abstrayendo caracterı́sticas de sistema operativo e infrastructura (hardware y red) Un middleware provee ciertas garantı́as al programador. ¿Para que pueda hacer qué? . . . . . . muchas cosas C.Ruz (PUC) IIC2523 1/2013 56 / 89 Middlewares Muuuuchos tipos de Middleware Comunicación de procesos Objetos distribuidos Componentes livianos Componentes / Application Servers Publish/Subscribe Message Queues Web Services Grid Services P2P Routing P2P C.Ruz (PUC) RPC CORBA, Java RMI Fractal, OpenCOM Enterprise JavaBeans, CORBA Component Model, JBoss CORBA Event Service, Scribe, JMS Websphere MQ, JMS, Apache Active MQ, AMQP Apache AXIS, Apache CXF Globus Toolkit Pastry, Tapestry, Chord, CAN Squirrel, OceanStore, Ivy, Gnutella IIC2523 1/2013 57 / 89 Soporte del sistema operativo Contenidos 1 Taxonomı́as Paralelismo de control y paralelismo de datos Organización de la memoria 2 Modelos de comunicación Entidades Paradigmas Roles Ubicación 3 Patrones de arquitectura 4 Middlewares 5 Soporte del sistema operativo Procesos y Threads Comunicación e invocación Virtualización C.Ruz (PUC) IIC2523 1/2013 58 / 89 Soporte del sistema operativo Sistemas Operativos Qué caracterı́sticas provee el sistema operativo para ejecutar procesos distribuidos. ¿Qué es lo que hace un Sistema Operativo? Abstraer detalles de infrastructura fı́sica Proveer una interfaz para ejecutar programas sobre el hardware Archivos (en lugar de bloques de disco) Sockets (en lugar de paquetes de red) C.Ruz (PUC) IIC2523 1/2013 59 / 89 Soporte del sistema operativo Network Operating Systems Windows, UNIX, permiten acceso a red: Sistemas Operativos de Red ¿Proveen una imagen de sistema único? Cada sistema administra sus propios recursos Nodos mantienen un alto grado de autonomı́a ¿Habrá algún Sistema Operativo Distribuido ? Más probable: S.O. + Middleware C.Ruz (PUC) IIC2523 1/2013 60 / 89 Soporte del sistema operativo Sistema Operativo y Middlewares Middleware provee la interfaz única sobre distintos SS.OO. Caracterı́sticas interesantes: Procesos y threads Comunicación e invocación Virtualización C.Ruz (PUC) IIC2523 1/2013 61 / 89 Soporte del sistema operativo Procesos y Threads Procesos y Threads Proceso: entorno de ejecución con uno o más threads. Espacio de direccionamiento Sincronización de threads y acceso a recursos del S.O. (semáforos, sockets, . . . ) Acceso a recursos de alto nivel (archivos abiertos, ventanas, . . . ) Thread: actividad dentro de un proceso Múltiples threads pueden compartir los recursos de un proceso. C.Ruz (PUC) IIC2523 1/2013 62 / 89 Soporte del sistema operativo Procesos y Threads Procesos vs. Threads Procesos Caros de crear y administrar Sirven como un ambiente protegido para threads Threads Pueden ser creados y destruı́dos dinámicamente (y fácilmente) Permiten aprovechar el grado de ejecución concurrente Separando tareas colaborativas Aprovechando el overlap ejecución vs. I/O C.Ruz (PUC) IIC2523 1/2013 63 / 89 Soporte del sistema operativo Procesos y Threads Espacios de direcciones Unidad virtual de memoria de un proceso. Regiones: código, heap, stack Stacks adicionales por thread C.Ruz (PUC) IIC2523 1/2013 64 / 89 Soporte del sistema operativo Procesos y Threads Creación de procesos ¿Dónde crearlo? En UNIX: fork, nuevo proceso copiado del caller exec, ejecuta el código del programa indicado En un ambiente distribuido: ¿en qué nodo crearlo? Nodo local Nodo externo indicado explı́citamente Nodo externo seleccionado por otra entidad (scheduler) ¿Es posible modificar esta asignación? Polı́tica estática o adaptiva Sistemas de balance de carga C.Ruz (PUC) IIC2523 1/2013 65 / 89 Soporte del sistema operativo Procesos y Threads Creación de procesos Creando el entorno fork, copia del espacio de direcciones ¿Y si el proceso hijo no necesita todo el espacio? Copy-On-Write (COW) Regiones compartidas hasta que se escriben C.Ruz (PUC) IIC2523 1/2013 66 / 89 Soporte del sistema operativo Procesos y Threads Threads Procesos multithreaded Capacidad de atender más request (¿cuántas?) C.Ruz (PUC) IIC2523 1/2013 67 / 89 Soporte del sistema operativo Procesos y Threads Threads Distintas maneras de asignar threads a tareas. Pool de workers Thread-per-request Thread-per-connection Thread-per-object C.Ruz (PUC) IIC2523 1/2013 68 / 89 Soporte del sistema operativo Procesos y Threads Programando threads Kernel threads Creados y manejados por el S.O. Input/Output administrador por S.O. User threads Provisto por librerı́as de usuario Más livianos que kernel threads No pueden aprovechar directamente multiprocesadores Administración debe ser proveı́da por la librerı́a Posibilidad de crear deadlocks en operaciones de I/O pthreads, CThreads, Java Thread class C.Ruz (PUC) IIC2523 1/2013 69 / 89 Soporte del sistema operativo Procesos y Threads Administración de Threads Estados en Java: SUSPENDED, RUNNABLE, READY Thread(ThreadGroup group, Runnable target, String name) setPriority(int newPriority), getPriority() run() start(), SUSPENDED → RUNNABLE. sleep(int millisecs) yield() destroy() Sincronización thread.join(long millisecs) thread.interrupt() object.wait(long millisecs, int nanosecs) object.notify(), object.notifyAll() C.Ruz (PUC) IIC2523 1/2013 70 / 89 Soporte del sistema operativo Comunicación e invocación Comunicación e invocación Comunicación: transferencia de datos entre procesos, posiblemente en nodos distintos Invocación: Solicitud de ejecución de una operación en un espacio de direcciones distinto C.Ruz (PUC) IIC2523 1/2013 71 / 89 Soporte del sistema operativo Comunicación e invocación Costo de invocación Tipos de comunicación RPC null ∼ 10−3 sec ∼ 100 bytes transmitidos Llamado normal ∼ 10−6 sec C.Ruz (PUC) IIC2523 1/2013 72 / 89 Soporte del sistema operativo Comunicación e invocación Costo de invocación C.Ruz (PUC) IIC2523 1/2013 73 / 89 Soporte del sistema operativo Comunicación e invocación ¿Podemos mejorar? Comunicación ası́ncrona Invocaciones concurrentes Aprovechando multi-threading Invocaciones ası́ncronas Solo se hace un rendez-vous C.Ruz (PUC) IIC2523 1/2013 74 / 89 Soporte del sistema operativo Virtualización Virtualización Objetivo: proveer máquinas virtuales sobre una misma máquina fı́sica. Cada máquina ejecuta su propia versión del S.O. Multiplexación de recursos C.Ruz (PUC) IIC2523 1/2013 75 / 89 Soporte del sistema operativo Virtualización Virtualización ¿Para qué sirve? Máquinas virtuales pueden ser migradas, i.e., mapeadas a distintas máquinas fı́sicas. Cloud Computing. Permite provee IaaS (Infrastructure as a Service). Desafı́os en asignación de recursos entre máquinas virtuales y fı́sicas. Utilización de otros sistemas operativos en una misma máquina host. C.Ruz (PUC) IIC2523 1/2013 76 / 89 Soporte del sistema operativo Virtualización Virtualización ¿Quién lo administra? Virtual Machine Monitor, ó Hypervisor Provee una interfaz similar a aquella de la máquina fı́sica. Diferentes niveles: Full Virtualization Paravirtualization Ejemplos: VirtualBox VMWare Parallels Virtual Server Xen C.Ruz (PUC) IIC2523 1/2013 77 / 89 Soporte del sistema operativo Virtualización Xen3 Solución de virtualización. (XenoServer project, 2003) Objetivo: proveer infrastructura pública para computación distribuida de gran escala. Conjunto de XenoServers Administrados por Xen Virtual Machine Monitor Xen Múltiples SS.OO. ejecutando de manera aislada en hardware tradicional, y con poco overhead Cada S.O. cree que es el único ejecutando. 3 http://www.xen.org C.Ruz (PUC) IIC2523 1/2013 78 / 89 Soporte del sistema operativo Virtualización Arquitectura de Xen Xen Hypervisor Provee manejo de recursos y aislamiento No conoce los devices, pero permite acceder a ellos Falla en Hypervisor → Falla en todos los S.O. C.Ruz (PUC) IIC2523 1/2013 79 / 89 Soporte del sistema operativo Virtualización Arquitectura de Xen Domains: Instancias de VMs en Xen DomainU: conjunto de todas las instancias Domain0: control, y acceso privilegiado a recursos Creación de nuevos dominios C.Ruz (PUC) IIC2523 1/2013 80 / 89 Soporte del sistema operativo Virtualización ¿Virtualizar qué? Las mismas funciones de un S.O.: CPU Scheduling Memoria Dispositivos C.Ruz (PUC) IIC2523 1/2013 81 / 89 Soporte del sistema operativo Virtualización ¿Cuándo se puede virtualizar? Popek y Goldberg (1974) definen las instrucciones sensibles como aquellas que modifican el estado de la máquina de manera que puedan afectar a otros procesos. Instrucciones sensibles de control: permiten cambiar la configuración de los recursos de un proceso. Instrucciones sensibles de comportamiento: permiten leer estados privilegiados obteniendo información de la máquina fı́sica Condición para virtualización Todas las instrucciones sensibles deben ser privilegiadas. De esta manera el Hypervisor podrı́a interceptar todas esas instrucciones. Sin embargo no es ası́ en las arquitecturas x86. C.Ruz (PUC) IIC2523 1/2013 82 / 89 Soporte del sistema operativo Virtualización ¿Cuándo se puede virtualizar? Dos soluciones para virtualizar CPU 1 Full virtualization: proveer la emulación para todas las instrucciones. Hypervisor puede interceptar todo. Produce más overhead. 2 Paravirtualization: permitir que algunas instrucciones se ejecuten en el hardware. Hypervisor solo puede interceptar las privilegiadas. El S.O. guest debe manejar las instrucciones sensible. Más eficiente, pero require modificar el S.O. guest. C.Ruz (PUC) IIC2523 1/2013 83 / 89 Soporte del sistema operativo Virtualización ¿Cómo virtualizar? Ejemplo: 4 niveles de privilegios en x86 Kernel-based operating systems Paravirtualization en Xen En el guest modificado, instrucciones privilegiadas se reescriben como hypercalls C.Ruz (PUC) IIC2523 1/2013 84 / 89 Soporte del sistema operativo Virtualización Scheduling Tradicionalmente: Scheduling de procesos Scheduling de threads intra-procesos Xen provee un nivel más: VCPU (Virtual CPU) Hypervisor hace scheduling de VCPUs S.O. Guest hace scheduling de procesos S.O. o bibliotecas hacen scheudling de threads Dos estrategias: Simple Earliest Deadline First (SEDF) VCPU con deadline más cercano Deadline a partir de slice y periodo Credit Scheduler Definido en base a weight y cap (porcentaje de tiempo que debe correr) VCPU consumen créditos C.Ruz (PUC) IIC2523 1/2013 85 / 89 Soporte del sistema operativo Virtualización Virtualización de Memoria Dos dificultades: Asignar nivel intermedio de mapeo Mantener protección entre distintos guest Hypervisor ocupa memoria fı́sica Debe proveer una abstracción de memoria fı́sica ”limpia” al guest La memoria pseudo-fı́sica provee esta abstracción Hypervisor permite algunas instrucciones de asignación al guest C.Ruz (PUC) IIC2523 1/2013 86 / 89 Soporte del sistema operativo Virtualización Virtualización de dispositivos Split Device Drivers: imagen de dispositivo único Back-end: multiplexación, e interfaz genérica Front-end: proxy para el guest C.Ruz (PUC) IIC2523 1/2013 87 / 89 Soporte del sistema operativo Virtualización Llevando un sistema guest a Xen Se requiere: Reemplazar instrucciones privilegiadas por hypercalls Reimplementar instrucciones sensibles no-privilegiadas Portar el sistema de manejo de memoria Proveer split-device drivers C.Ruz (PUC) IIC2523 1/2013 88 / 89 Soporte del sistema operativo Virtualización Resumen Un largo capı́tulo Taxonomı́as Clasificaciones de acuerdo a organización de CPUs y de memoria Modelos de comunicación Quienes se comunican y cómo Por ver . . . detalles de cómo programar la comunicación Patrones de arquitectura Cómo se organizan las entidades comunicantes Middleware Variadas soluciones para problemas especı́ficos Soporte del Sistema Operativos Procesos y threads permiten construir las aplicaciones Virtualización permite multiplexar los recursos C.Ruz (PUC) IIC2523 1/2013 89 / 89