Tema 2: Sistemas Operativos Distribuidos Organización

Anuncio
Tema 2: Sistemas Operativos Distribuidos
Organización
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, véase
http://creativecommons.org/licenses/by-sa/2.1/es. También puede solicitarse a Creative Commons, 559 Nathan
Abbott Way, Stanford, California 94305, USA. Las imágenes de terceros conservan su propia licencia.
OS distribuido
I
OS distribuido: Los servicios del sistema ofrecidos por el OS
están distribuidos (sistema de ficheros, procesos, autenticación
etc.).
I
Un OS distribuido... ¿Dónde?
Hardware
Taxonomı́a de Flynn
Imagen: (CC) Wikipedia
Modelos de programación paralela
I
Implı́cita: el sistema (compilador, runtime y/o sistema
operativo) se ocupan de paralelizar lo que se pueda. El
programador se abstrae.
I
Memoria compartida: distintos flujos de control
concurrentes que acceden a una memoria común. El problema
es la sincronización de los flujos de control en el acceso a la
memoria.
I
Paso de mensajes: se programa secuencialmente y los
distintos componentes paralelos se comunican pasando
mensajes entre ellos, pidiendose cosas. Problema: paso de
estructuras de datos grandes. Si no hay memoria
compartida, no se puede pasar un puntero.
Multiprocesador
I
Una máquina con varios procesadores y memoria compartida.
I
Los procesadores están fuertemente acoplados.
I
Distintas formas de conectar los procesadores con la memoria:
bus, switched.
UMA
I
Uniform Memory Access.
I
Todos los procesadores están conectados a la memoria con un
bus 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) está conectado
a una memoria mediante un bus, a la que accede muy rapido.
I
También puede acceder a las otras memorias, pero es más
lento.
I
Los procesadores están conectados en una red (p. ej. AMD
hypertransport, Intel Quick-Path Interconnect)
I
ccNUMA: Los distintos procesadores tienen caches de
memoria y se garantiza la coherencia.
I
nccNUMA: Las caches no mantienen coherencia. No encaja
bien en el modelo de memoria compartida y ya apenas se usa.
Conexión crossbar
I
Número de switches: N 2
Conexión de red omega
I
Con N procesadores:
I
I
Número de etapas: log2 (N)
Número 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 → B1
Etapa2: en B1 elige la salida 1 → C2
Etapa3: en C2 elige la salida 0 → memoria 010
Multiprocesador: Hardware actual
P.Ej: uno de nuestras máquinas de testing (2012): AMD64 K10
I
I
Multiprocesador con memoria compartida, fuertemente
acoplado.
Conexión de procesadores: switched
I
I
I
Hypertransport (6400 MT/s)1 .
ccNUMA.
Cache (lı́nea de cache de 64 bytes):
I
I
I
L1 Datos (64 Kb), L1 Instrucciones (64 Kb), por core.
L2 Datos+Instrucciones (512 Kb), por core.
L3 (12 Mb), una para todos los cores.
I
Protocolo de coherencia de caches: MOESI.
I
Comunicación entre cores: IPIs.
1
Mega-transfers per sec.
Multicomputador
I
Multicomputador != Multiprocesador
I
Los procesadores son nodos conectados en red con una
interfaz dedicada.
I
Los procesadores están débilmente acoplados (depende de la
red).
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 de
RAM.
I
Cada rack tiene 32 nodos.
I
Total: 4096 nodos (65536 cores)
I
Interconexión: torus de 5 dimensiones.
Estructura del SO
Estructura del SO
Repaso:
I
Kernel (núcleo):
I
I
I
I
I
Modo privilegiado (puede ejecutar instrucciones como halt,
trap, invalidar caches, invalida TLB, gestionar segmentos, etc.)
Multiplexa la máquina (espacio y tiempo): CPU, memoria,
disco, red,...
Maneja el hardware: driver.
Proporciona abstracciones (proceso, fichero, etc.).
Área de usuario.
I
I
I
Modo no privilegiado.
Pide servicio al kernel → llamada al sistema.
Las aplicaciones y herramientas del SO (shell, compiladores,
GUI, etc.).
Estructura del SO
Application Programming Interface (API)
APPLICATIONS
Userspace (ring 3)
LIBRARIES
Userspace (ring 3)
System Calls
OPERATING SYSTEM
Kernel (ring 0)
Instruction Set Architecture (ISA)
HARDWARE (CPU)
SO: Llamadas al sistemas
Ejemplo: Plan 9 para AMD64.
1. Coloca los argumentos en la pila del proceso.
2. Carga el número de llamada al sistema en un registro.
3. Ejecuta la instrucción SYSCALL, que pasa a ring 0 y salta al punto de entrada de
las llamadas al sistema en el kernel (apuntado por el registro Lstar, configurado
en tiempo de arranque) que:
3.1 Cambia el SP para usar pila de kernel del proceso.
3.2 Guarda el contexto del proceso en área de usuario en la pila de kernel.
4. Copia los argumentos de la llamada al sistema a la estructura que representa al
proceso.
5. Indexa la tabla de llamadas al sistema con el número de llamada al sistema, y
llama a la función que la implementa.
Estructura del OS: Kernel
Estructura del OS: Tipos de kernel
Kernel monolı́tico:
I
El kernel es un único programa.
I
Pros: simplicidad, rendimiento.
I
Contras: protección de los datos, puede haber falta de
estructura (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: abstracción del HW
(HAL), tareas/hilos, IPC y manejo de memoria virtual.
I
El resto (OS personality : gestión de procesos, red, FS...) se
implementa en servidores independientes.
I
Idea: polı́ticas en espacio de usuario, mecanismos en espacio
de kernel.
I
Pros: modularidad, tolera fallos en los servidores, distribución.
I
Contras: bajo rendimiento, más complejo, más código.
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, gestión de procesos, etc. Ejemplos: Minix,
QNX.
I
Otros simplemente sólo siguen un diseño de microkernel, pero
todos los servidores están en espacio de kernel. Ejemplos:
XNU (OSX), Windows NT.
Estructura del OS: Tipos de kernel
Monolithic Kernel
based Operating System
Microkernel
based Operating System
"Hybrid kernel"
based Operating System
Application
Application
Application
system
user
mode
VFS, System call
Scheduler, Virtual Memory
Device Drivers, Dispatcher, ...
Hardware
Imagen: Public Domain, Wikipedia
user
mode
Application
IPC
IPC, File System
kernel
mode
UNIX
Server
Device
Driver
kernel
mode
File
Server
File
Server
kernel
mode
Basic IPC, Virtual Memory, Scheduling
Hardware
user
mode
UNIX
Server
Application
IPC
Device
Driver
Basic IPC, Virtual Memory, Scheduling
Hardware
kernel
mode
Estructura del OS: Tipos de kernel
Exokernel:
I
No provee abstracciones, sólo multiplexa la máquina.
I
Library Operating Systems: las aplicaciones se enlazan con
bibliotecas que implementan las abstracciones especializadas
para la aplicación.
I
Ejemplos antiguos: Cambridge Nemesis, MIT Exokernel.
I
Aproximación actual: MirageOS/Unikernel, basado en Xen.
Estructura del OS: Kernel modular
I
KLM: carga de módulos dinámicos en el kernel.
I
Ventaja: sólo se cargan los drivers necesarios → ahorro de
memoria.
I
Desventaja: seguridad.
I
Ejemplos: Linux (.ko), Mac OSX (.kext), FreeBSD (.kld),
Windows (.sys).
Estructura del OS: Kernel modular
Carga de un módulo:
I
Se le piden al kernel las direcciones de los sı́mbolos del kernel
que usa el módulo del kernel.
I
Se le pasan al kernel los sı́mbolos del módulo, para que los
incluya en su tabla de sı́mbolos.
I
Se pide al kernel que reserve memoria para cargar el módulo
(ya no será memoria fı́sica contigua al kernel).
I
Se pide al kernel que llame a la función init() del módulo para
que se inicialize.
Máquinas Virtuales
Tipos:
I
Máquina virtual de proceso: tiene como objetivo
proporcionar una plataforma para ejecutar un único proceso.
I
Máquina virtual de sistema: el VMM (VM Monitor)
proporciona un entorno completo y persistente para ejecutar
un OS y sus procesos.
Máquinas Virtuales de Proceso
APPLICATION
PROCESS VIRTUAL MACHINE
Userspace (ring 3)
Application Programming Interface (API)
System Calls
LIBRARIES
Userspace (ring 3)
OPERATING SYSTEM
Kernel (ring 0)
Instruction Set Architecture (ISA)
HARDWARE (CPU)
Máquinas Virtuales de Proceso
I
Multiprogrammed systems: el propio OS!
I
Emuladores (dynamic binary translators): ejecuta un
programa cuya ISA es distinta a la de la máquina local. P. ej.
OSX Rosetta.
I
Optimizadores: traducen instrucciones de la misma ISA para
mejorar la eficiencia. P. ej. Dynamo.
I
HLL VM: ejecutan programas portables cuya ISA es virtual
(bytecode). P. ej. .NET, Java.
Máquinas Virtuales de Sistema
I
VM clásica (hypervisor type 1).
I
I
I
Paravirtualización.
Virtualización completa asistida por HW.
VM alojada (hypervisor type 2).
Máquinas Virtuales de Sistema: paravirtualización
I
El OS huésped está modificado para ejecutar sobre el VMM.
I
El OS huésped realiza hypercalls para gestionar la tabla de
páginas, planificar, poner timers, configurar el HW, etc.
I
Ejemplos: Xen, KVM.
Application Programming Interface (API)
System calls
APPLICATION
Userspace (ring 3)
LIBRARIES
Userspace (ring 3)
OPERATING
SYSTEM
Kernel (ring 1)
APPLICATION
Userspace (ring 3)
LIBRARIES
Userspace (ring 3)
OPERATING
SYSTEM
Kernel (ring 1)
hypercalls
Instruction Set Architecture (ISA)
VMM (HYPERVISOR TYPE 1)
(ring 0)
HARDWARE (CPU)
Máquinas Virtuales de Sistema: asistidas por HW
I Se basa instrucciones especiales de la CPU para virtualización. P. ej. Intel VT-x,
AMD-V.
I Instrucciones VMX: activar el modo VMX root, lanzar una VM, pasar el control
al VMM, retomar una VM, etc.
I Además de ring 0-3, hay un modo especial en el que ejecuta el VMM: VMX root.
I El OS huésped no necesita modificaciones.
I Ejemplo: VMware vSphere.
Application Programming Interface (API)
System Calls
APPLICATION
Userspace (ring 3)
LIBRARIES
Userspace (ring 3)
OPERATING SYSTEM
Kernel (ring 0, VMX non-root)
APPLICATION
Userspace (ring 3)
LIBRARIES
Userspace (ring 3)
OPERATING SYSTEM
Kernel (ring 0, VMX non-root)
VMM (HYPERVISOR TYPE 1)
(VMX root)
Instruction Set Architecture (ISA)
HARDWARE (CPU)
Máquinas Virtuales de Sistema: alojada
I
La VM se aloja sobre otro OS.
I
El VMM puede instalar drivers en el OS anfitrión para mejorar
el rendimiento. P. ej. VMWare Fusion, Virtual Box.
I
Whole-system VM: la ISA de la VM no es la misma que la del
HW y necesita emulación. P. ej. Virtual PC.
Máquinas Virtuales de Sistema: alojada
APPLICATION
Application Programming Interface (API)
LIBRARIES
System Calls
OPERATING SYSTEM
Instruction Set Architecture (ISA)
VMM (HYPERVISOR type 2)
Userspace (ring 3)
Application Programming Interface (API)
LIBRARIES
Userspace (ring 3)
System Calls
VMM Driver
Kernelspace (ring 0)
OPERATING SYSTEM
Kernel (ring 0)
Instruction Set Architecture (ISA)
HARDWARE (CPU)
Virtualización a nivel de Sistema Operativo
I
Una VM aisla distintas imágenes completas de distintos
sistemas operativos ejecutando. Si lo que queremos aislar es
un servicio, pagamos cierto coste ejecutando un OS completo
para él (tiempo en arrancar y parar la VM, rendimiento,
etc.).
I
Solución: dentro del mismo sistema operativo (kernel) se
pueden crear distintos entornos aislados, cada uno con sus
propias abstracciones y recursos (espacio de procesos, sistema
de ficheros raı́z, CPU, recursos de red, usuarios, etc.).
I
El sistema operativo tiene que proporcionar mecanismos para
aislar procesos. P. ej: Linux Namespaces, Linux Cgroup, etc.
I
Ejemplos: Docker, Linux Containers (LXC), OpenVZ,
FreeBSD Jails, Solaris Zones etc.
Virtualización a nivel de Sistema Operativo: Contenedores
CONTAINER A
CONTAINER B
APPLICATION
Userspace (ring 3)
APPLICATION
Userspace (ring 3)
Application Programming Interface (API)
LIBRARIES A
Userspace (ring 3)
LIBRARIES B
Userspace (ring 3)
System Calls
RESOURCES
A
RESOURCES
B
OPERATING SYSTEM
Kernel (ring 0)
Instruction Set Architecture (ISA)
HARDWARE (CPU)
Bibliografı́a
I
I
I
I
I
I
I
I
Mark D. Hill, Norman P. Jouppi, and Gurindar S. Sohi. Chapter 9 ”Multiprocessors and
Multicomputers,”from Readings in Computer Architecture, Morgan Kaufmann, 2000
A. S. Tanenbaum. Operating Systems, design and implementaiton. Pearson Prentice Hill.
A. S. Tanenbaum. Distributed Systems. Pearson Prentice Hill.
A. S. Tanenbaum. Modern Operating Systems. Pearson Prentice Hill.
A. Silberschatz. Operating Systems. Wiley.
J. E. Smith and R. Nair. The Architecture of Virtual Machines. IEEE Computer 38, 5. 2005.
D. Berstein. Containers and Cloud: From LXC to Docker to Kubernetes. Cloud Computing, IEEE
(Volume:1 , Issue: 3 ).
A. Madhavapeddy and D. J. Scott. Unikernels: Rise of the Virtual Library Operating System. ACM Queue.
Volume 11, issue 11.
Descargar