38
Tema 2: Sistemas Operativos Distribuidos Organizaci´ on Sistemas Distribuidos Enrique Soriano LS, GSYC 17 de septiembre de 2015

Sistemas Distribuidos Enrique Sorianolsub.org/dis/t2.pdf · NUMA I Non-Uniform Memory Access. I Cada procesador (o conjunto de procesadores) est a conectado a una memoria mediante

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Tema 2: Sistemas Operativos DistribuidosOrganizacion

Sistemas Distribuidos

Enrique Soriano

LS, GSYC

17 de septiembre de 2015

(cc) 2015 Grupo de Sistemas y Comunicaciones.

Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento -

NoComercial - SinObraDerivada (by-nc-nd). Para obtener la licencia completa, vease

http://creativecommons.org/licenses/by-sa/2.1/es. Tambien puede solicitarse a Creative Commons, 559 Nathan

Abbott Way, Stanford, California 94305, USA. Las imagenes de terceros conservan su propia licencia.

OS distribuido

I OS distribuido: Los servicios del sistema ofrecidos por el OSestan distribuidos (sistema de ficheros, procesos, autenticacionetc.).

I Un OS distribuido... ¿Donde?

Hardware

Taxonomıa de Flynn

Imagen: (CC) Wikipedia

Modelos de programacion paralela

I Implıcita: el sistema (compilador, runtime y/o sistemaoperativo) se ocupan de paralelizar lo que se pueda. Elprogramador se abstrae.

I Memoria compartida: distintos flujos de controlconcurrentes que acceden a una memoria comun. El problemaes la sincronizacion de los flujos de control en el acceso a lamemoria.

I Paso de mensajes: se programa secuencialmente y losdistintos componentes paralelos se comunican pasandomensajes entre ellos, pidiendose cosas. Problema: paso deestructuras de datos grandes. Si no hay memoriacompartida, no se puede pasar un puntero.

Multiprocesador

I Una maquina con varios procesadores y memoria compartida.

I Los procesadores estan fuertemente acoplados.

I Distintas formas de conectar los procesadores con la memoria:bus, switched.

UMA

I Uniform Memory Access.

I Todos los procesadores estan conectados a la memoria con unbus y acceceden a la memoria de la misma forma (SMP).

I El bus es un cuello de botella.

NUMA

I Non-Uniform Memory Access.

I Cada procesador (o conjunto de procesadores) esta conectadoa una memoria mediante un bus, a la que accede muy rapido.

I Tambien puede acceder a las otras memorias, pero es maslento.

I Los procesadores estan conectados en una red (p. ej. AMDhypertransport, Intel Quick-Path Interconnect)

I ccNUMA: Los distintos procesadores tienen caches dememoria y se garantiza la coherencia.

I nccNUMA: Las caches no mantienen coherencia. No encajabien en el modelo de memoria compartida y ya apenas se usa.

Conexion crossbar

I Numero de switches: N2

Conexion de red omega

I Con N procesadores:I Numero de etapas: log2(N)I Numero de switches por etapa: N/2

Ejemplo de rutado: el procesador 100 quiere acceder a la memoria 010:Etapa1: en A1 elige la salida 0 → B1Etapa2: en B1 elige la salida 1 → C2Etapa3: en C2 elige la salida 0 → memoria 010

Multiprocesador: Hardware actual

P.Ej: uno de nuestras maquinas de testing (2012): AMD64 K10

I Multiprocesador con memoria compartida, fuertementeacoplado.

I Conexion de procesadores: switchedI Hypertransport (6400 MT/s)1.I ccNUMA.

I Cache (lınea de cache de 64 bytes):I L1 Datos (64 Kb), L1 Instrucciones (64 Kb), por core.I L2 Datos+Instrucciones (512 Kb), por core.I L3 (12 Mb), una para todos los cores.

I Protocolo de coherencia de caches: MOESI.

I Comunicacion entre cores: IPIs.

1Mega-transfers per sec.

Multicomputador

I Multicomputador != Multiprocesador

I Los procesadores son nodos conectados en red con unainterfaz dedicada.

I Los procesadores estan debilmente acoplados (depende de lared).

I Varias formas de interconectar los nodos: hypercube, torus,etc.

Topologıas

Hypercube: Torus:

Multiprocesador: Hardware actual

P.Ej: IBM Blue Gene/Q

I Cada nodo tiene 16 CPUs 64-bit Power A2 con 16GB deRAM.

I Cada rack tiene 32 nodos.

I Total: 4096 nodos (65536 cores)

I Interconexion: torus de 5 dimensiones.

Estructura del SO

Estructura del SO

Repaso:

I Kernel (nucleo):I Modo privilegiado (puede ejecutar instrucciones como halt,

trap, invalidar caches, invalida TLB, gestionar segmentos, etc.)I Multiplexa la maquina (espacio y tiempo): CPU, memoria,

disco, red,...I Maneja el hardware: driver.I Proporciona abstracciones (proceso, fichero, etc.).

I Area de usuario.I Modo no privilegiado.I Pide servicio al kernel → llamada al sistema.I Las aplicaciones y herramientas del SO (shell, compiladores,

GUI, etc.).

Estructura del SO

APPLICATIONSUserspace (ring 3)

LIBRARIESUserspace (ring 3)

OPERATING SYSTEMKernel (ring 0)

HARDWARE (CPU)

Application Programming Interface (API)

System Calls

Instruction Set Architecture (ISA)

SO: Llamadas al sistemas

Ejemplo: Plan 9 para AMD64.

1. Coloca los argumentos en la pila del proceso.

2. Carga el numero de llamada al sistema en un registro.

3. Ejecuta la instruccion SYSCALL, que pasa a ring 0 y salta al punto de entrada delas llamadas al sistema en el kernel (apuntado por el registro Lstar, configuradoen tiempo de arranque) que:

3.1 Cambia el SP para usar pila de kernel del proceso.3.2 Guarda el contexto del proceso en area de usuario en la pila de kernel.

4. Copia los argumentos de la llamada al sistema a la estructura que representa alproceso.

5. Indexa la tabla de llamadas al sistema con el numero de llamada al sistema, yllama a la funcion que la implementa.

Estructura del OS: Kernel

Estructura del OS: Tipos de kernel

Kernel monolıtico:

I El kernel es un unico programa.

I Pros: simplicidad, rendimiento.

I Contras: proteccion de los datos, puede haber falta deestructura (si se programa mal).

I Ejemplo: Linux, FreeBSD, Plan 9.

Estructura del OS: Tipos de kernel

Microkernel:

I El kernel queda reducido a lo mınimo: abstraccion del HW(HAL), tareas/hilos, IPC y manejo de memoria virtual.

I El resto (OS personality : gestion de procesos, red, FS...) seimplementa en servidores independientes.

I Idea: polıticas en espacio de usuario, mecanismos en espaciode kernel.

I Pros: modularidad, tolera fallos en los servidores, distribucion.

I Contras: bajo rendimiento, mas complejo, mas codigo.

I Ejemplo: Mach, L4.

Estructura del OS: Tipos de kernel

Kernel Hıbrido:

I Compromiso entre microkernel y monolıtico.

I Algunos incluyen ciertos componentes en espacio de kernel:device drivers, gestion de procesos, etc. Ejemplos: Minix,QNX.

I Otros simplemente solo siguen un diseno de microkernel, perotodos los servidores estan en espacio de kernel. Ejemplos:XNU (OSX), Windows NT.

Estructura del OS: Tipos de kernel

VFS, System call

IPC, File System

Scheduler, Virtual Memory

Device Drivers, Dispatcher, ... Basic IPC, Virtual Memory, Scheduling

UNIXServer

DeviceDriver

FileServer

ApplicationIPC

Application

Hardware Hardware

Monolithic Kernelbased Operating System

Microkernelbased Operating System

Basic IPC, Virtual Memory, Scheduling

UNIXServer

DeviceDriver

ApplicationIPC

Hardware

"Hybrid kernel"based Operating System

Operating system

SystemApplication Application

usermode

kernelmode

usermode

kernelmode

kernelmode

usermode

kernelmode

FileServer

Imagen: Public Domain, Wikipedia

Estructura del OS: Tipos de kernel

Exokernel:

I No provee abstracciones, solo multiplexa la maquina.

I Library Operating Systems: las aplicaciones se enlazan conbibliotecas que implementan las abstracciones especializadaspara la aplicacion.

I Ejemplos antiguos: Cambridge Nemesis, MIT Exokernel.

I Aproximacion actual: MirageOS/Unikernel, basado en Xen.

Estructura del OS: Kernel modular

I KLM: carga de modulos dinamicos en el kernel.

I Ventaja: solo se cargan los drivers necesarios → ahorro dememoria.

I Desventaja: seguridad.

I Ejemplos: Linux (.ko), Mac OSX (.kext), FreeBSD (.kld),Windows (.sys).

Estructura del OS: Kernel modular

Carga de un modulo:

I Se le piden al kernel las direcciones de los sımbolos del kernelque usa el modulo del kernel.

I Se le pasan al kernel los sımbolos del modulo, para que losincluya en su tabla de sımbolos.

I Se pide al kernel que reserve memoria para cargar el modulo(ya no sera memoria fısica contigua al kernel).

I Se pide al kernel que llame a la funcion init() del modulo paraque se inicialize.

Maquinas Virtuales

Tipos:

I Maquina virtual de proceso: tiene como objetivoproporcionar una plataforma para ejecutar un unico proceso.

I Maquina virtual de sistema: el VMM (VM Monitor)proporciona un entorno completo y persistente para ejecutarun OS y sus procesos.

Maquinas Virtuales de Proceso

PROCESS VIRTUAL MACHINEUserspace (ring 3)

LIBRARIESUserspace (ring 3)

OPERATING SYSTEMKernel (ring 0)

HARDWARE (CPU)

Application Programming Interface (API)

System Calls

Instruction Set Architecture (ISA)

APPLICATION

Maquinas Virtuales de Proceso

I Multiprogrammed systems: el propio OS!

I Emuladores (dynamic binary translators): ejecuta unprograma cuya ISA es distinta a la de la maquina local. P. ej.OSX Rosetta.

I Optimizadores: traducen instrucciones de la misma ISA paramejorar la eficiencia. P. ej. Dynamo.

I HLL VM: ejecutan programas portables cuya ISA es virtual(bytecode). P. ej. .NET, Java.

Maquinas Virtuales de Sistema

I VM clasica (hypervisor type 1).I Paravirtualizacion.I Virtualizacion completa asistida por HW.

I VM alojada (hypervisor type 2).

Maquinas Virtuales de Sistema: paravirtualizacion

I El OS huesped esta modificado para ejecutar sobre el VMM.

I El OS huesped realiza hypercalls para gestionar la tabla depaginas, planificar, poner timers, configurar el HW, etc.

I Ejemplos: Xen, KVM.

APPLICATIONUserspace (ring 3)

LIBRARIESUserspace (ring 3)

OPERATING SYSTEM

Kernel (ring 1)

HARDWARE (CPU)

Application Programming Interface (API)

System calls

VMM (HYPERVISOR TYPE 1)(ring 0)

APPLICATIONUserspace (ring 3)

LIBRARIESUserspace (ring 3)

OPERATING SYSTEM

Kernel (ring 1)

Instruction Set Architecture (ISA)

hypercalls

Maquinas Virtuales de Sistema: asistidas por HW

I Se basa instrucciones especiales de la CPU para virtualizacion. P. ej. Intel VT-x,AMD-V.

I Instrucciones VMX: activar el modo VMX root, lanzar una VM, pasar el controlal VMM, retomar una VM, etc.

I Ademas de ring 0-3, hay un modo especial en el que ejecuta el VMM: VMX root.

I El OS huesped no necesita modificaciones.

I Ejemplo: VMware vSphere.

APPLICATIONUserspace (ring 3)

LIBRARIESUserspace (ring 3)

OPERATING SYSTEMKernel (ring 0, VMX non-root)

HARDWARE (CPU)

Application Programming Interface (API)

VMM (HYPERVISOR TYPE 1)(VMX root)

APPLICATIONUserspace (ring 3)

LIBRARIESUserspace (ring 3)

OPERATING SYSTEMKernel (ring 0, VMX non-root)

Instruction Set Architecture (ISA)

System Calls

Maquinas Virtuales de Sistema: alojada

I La VM se aloja sobre otro OS.

I El VMM puede instalar drivers en el OS anfitrion para mejorarel rendimiento. P. ej. VMWare Fusion, Virtual Box.

I Whole-system VM: la ISA de la VM no es la misma que la delHW y necesita emulacion. P. ej. Virtual PC.

Maquinas Virtuales de Sistema: alojada

VMM (HYPERVISOR type 2) Userspace (ring 3)

LIBRARIESUserspace (ring 3)

OPERATING SYSTEMKernel (ring 0)

HARDWARE (CPU)

Application Programming Interface (API)

System Calls System Calls

Instruction Set Architecture (ISA)

APPLICATION

LIBRARIES

OPERATING SYSTEM

Application Programming Interface (API)

System Calls

VMM Driver Kernelspace (ring 0)

Instruction Set Architecture (ISA)

Virtualizacion a nivel de Sistema Operativo

I Una VM aisla distintas imagenes completas de distintossistemas operativos ejecutando. Si lo que queremos aislar esun servicio, pagamos cierto coste ejecutando un OS completopara el (tiempo en arrancar y parar la VM, rendimiento,etc.).

I Solucion: dentro del mismo sistema operativo (kernel) sepueden crear distintos entornos aislados, cada uno con suspropias abstracciones y recursos (espacio de procesos, sistemade ficheros raız, CPU, recursos de red, usuarios, etc.).

I El sistema operativo tiene que proporcionar mecanismos paraaislar procesos. P. ej: Linux Namespaces, Linux Cgroup, etc.

I Ejemplos: Docker, Linux Containers (LXC), OpenVZ,FreeBSD Jails, Solaris Zones etc.

Virtualizacion a nivel de Sistema Operativo: Contenedores

APPLICATIONUserspace (ring 3)

LIBRARIES BUserspace (ring 3)

HARDWARE (CPU)

Application Programming Interface (API)

System Calls

Instruction Set Architecture (ISA)

APPLICATIONUserspace (ring 3)

LIBRARIES AUserspace (ring 3)

OPERATING SYSTEMKernel (ring 0)

CONTAINER A CONTAINER B

RESOURCESA

RESOURCESB

Bibliografıa

I Mark D. Hill, Norman P. Jouppi, and Gurindar S. Sohi. Chapter 9 ”Multiprocessors andMulticomputers,”from Readings in Computer Architecture, Morgan Kaufmann, 2000

I A. S. Tanenbaum. Operating Systems, design and implementaiton. Pearson Prentice Hill.

I A. S. Tanenbaum. Distributed Systems. Pearson Prentice Hill.

I A. S. Tanenbaum. Modern Operating Systems. Pearson Prentice Hill.

I A. Silberschatz. Operating Systems. Wiley.

I J. E. Smith and R. Nair. The Architecture of Virtual Machines. IEEE Computer 38, 5. 2005.

I D. Berstein. Containers and Cloud: From LXC to Docker to Kubernetes. Cloud Computing, IEEE(Volume:1 , Issue: 3 ).

I A. Madhavapeddy and D. J. Scott. Unikernels: Rise of the Virtual Library Operating System. ACM Queue.Volume 11, issue 11.