12.07.2015 Views

Arquitecturas de Sistemas Operativos 1

Arquitecturas de Sistemas Operativos 1

Arquitecturas de Sistemas Operativos 1

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

1<strong>Arquitecturas</strong> <strong>de</strong><strong>Sistemas</strong> <strong>Operativos</strong>Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong>(cc) José Antonio GómezCurso 2013-14


Objetivo• Conocer las estructuras/arquitectura <strong>de</strong> SOSactuales <strong>de</strong>s<strong>de</strong> el punto <strong>de</strong> vista <strong>de</strong> laadaptabilidad funcional <strong>de</strong> los mismos a nuevosservicios y hardware.


Índice• Arquitectura monolítica:– configuración <strong>de</strong>l kernel– configuración en el arranque– configuración en tiempo <strong>de</strong> ejecución– módulos <strong>de</strong> carga• Máquinas virtuales:– Soporte <strong>de</strong>l kernel a la virtualización: namespaces,cgroups, containers.– Soporte a máquinas virtuales: Xen, KVM.


Introducción• Necesitamos estructuras (arquitecturas) quepermitan dar soporte a nuevos tipos <strong>de</strong>aplicaciones y a nuevos dispositivos –sistemas extensibles/adaptables.• Necesitamos construir sistemas seguros,correctos, y robustos.• La arquitectura pue<strong>de</strong> <strong>de</strong>terminarpropieda<strong>de</strong>s no funcionales, por ejemplo,QoS.Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 4


<strong>Arquitecturas</strong> en uso• En la actualidad, las estructuras másusadas:– Monolítica – Linux, ...– Microkernel – MacOS, Windows, QNX, ...– Máquinas virtuales – Xen, VMWare, …– SO <strong>de</strong> internet – PalmOS(WebOS)Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 5


Arquitectura Monolítica• Características:– Toda la funcionalidad en modo kernel.– Ventaja: eficiencia– Problema: no confinamiento <strong>de</strong> errores en modokernel– Adaptabilidad:• De forma estática:– Configuración y arranque <strong>de</strong>l kernel– Modificar o añadir código• De forma dinámica:– “On-the-fly”– LKM (Linux Kernel Modules)Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 6


Arq. Monolítica: configuración• Razones para configurar un kernel:– Añadir nuevo hardware– Optimizar según entorno: servidor, <strong>de</strong>sktop, ..,SMP, …– Añadir nueva funcionalidad o un manejador nooficial.– Fijar errores <strong>de</strong> la versión actual.• Lista opciones <strong>de</strong> configuración:– [Kroadh-Hartman2006]– make [config|menuconfig|xconfig|gconfig]Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 7


Arq. Monolitica: arranque• Po<strong>de</strong>mos pasar parámetro al kernel en elarranque, a través <strong>de</strong> GRUB o LILO.• Por ejemplo:– nousb– elevator=[cfq|<strong>de</strong>adline|noop]• Todas las opciones en:– Doc/Documentation/kernel-parameters.txt– Libro [Kroadh-Hartman2006]Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 8


Compilación <strong>de</strong>l kernel (2.6)• Configurado el kernel, <strong>de</strong>bemos compilarlo:– Situados en /usr/src/linux, ejecutamos:% make– Optimizaciones:• Compilar una porción <strong>de</strong>l kernel:% make [M=]drivers/usb/serial• Realizar una compilación cruzada:% make ARCH=arm CROSS_COMPILER=/usr/local/bin/...• Acelerar la compilación con ccache (http://ccache.samba.org/) odistcc (http://co<strong>de</strong>.google.com/p/distcc/):% make CC=”ccache distcc”• Compilación mutihebra:% make -jn (don<strong>de</strong> n = 2 * número_<strong>de</strong>_procesadores).Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 9


Instalación <strong>de</strong>l kernel (2.6)• Instalamos los módulos:% make modules_install• Instalamos la imagen <strong>de</strong>l kernel:% make install– verifica la correcta construcción <strong>de</strong>l kernel– Instala el kernel en /boot– Se genera cualquier imagen ramdisk inicial (se <strong>de</strong>be generar un disco ram<strong>de</strong>spués <strong>de</strong> hacer make modules_install:# mkinitramfs -o /boot/initrd.img-2.6.20.1 /lib/modules/2.6.20.1– Se notificar al programa cargador <strong>de</strong> la existencia <strong>de</strong> una nueva imagen y se actualiza.• Algunas distribuciones automatizan los pasos <strong>de</strong> la compilación:– installkernel (paquete mkinitrd).– make-kpkg en Ubuntu.Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 10


Parcheado <strong>de</strong>l kernel• Permite modificar funcionalidad, corregirerrores o actualizar el kernel.• Un parche es un archivo que contiene loselementos a cambiar respecto <strong>de</strong> un archivooriginal existente en la distribución.• El proceso <strong>de</strong> pasar un parche se pue<strong>de</strong>automatizar con la herramienta ketchup.• Lo generamos con diff:– diff -Naur dir_archivo_originalarchivo_nuevo > parche.patchDiseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 11


Parchear: pasos1. Bajar los fuentes <strong>de</strong>l kernel, el parche en /usr/src, y <strong>de</strong>scomprimir.2. Parchear el kernel:bzcat ../patch-2.4.21-ac1.bz2 | patch -p13. Copiar el .config anterior al directorio actual.4. Verificar opciones nuevas y hacer consistente con las actuales:make oldconfig5. Configurar o modificar más opciones si lo <strong>de</strong>seamos:make menuconfig6. Compilar como lo hacemos habitualmente.9. Instalar como lo hacemos habitualmente.Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 12


Modificaciones “on-the-fly”• El seudo-sistema <strong>de</strong> archivos /proc nos permiteconfigurar al vuelo ciertos parámetros <strong>de</strong>l sistema.% echo “mihost” >/proc/sys/kernel/hostname• Po<strong>de</strong>mos hacer los cambios permanentes consysctl:% sysctl –w kernel.hostname=mihost• Ajuste <strong>de</strong> servicios a través <strong>de</strong> ór<strong>de</strong>nes(start/stop/restart/reload/status):% /etc/init.d/xinetd reloadDiseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 15


LKMKernel “limpio”Figura extraída <strong>de</strong> [CorbetRubiniKroah-Hartmanen05]Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 17


Estructura <strong>de</strong> un LKM (2.6)#inclu<strong>de</strong> #inclu<strong>de</strong> Inclu<strong>de</strong>sMODULE_LICENSE(“GPL”)MODULE_AUTHOR(“Autor <strong>de</strong>l módulo”)MODULE_DESCRIPTION(“Descripción <strong>de</strong>l módulo)Macros <strong>de</strong>l módulostatic int __init funcion_entrada(void){....return 0;}static void __exit funcion_salida (void){return;}module_init (funcion_entrada);module_exit(funcion_salida);Constructor <strong>de</strong>l móduloDestructor <strong>de</strong>l móduloMacros <strong>de</strong> entrada/salidaDiseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 18


Construcción <strong>de</strong> un módulo• En 2.6, la construcción es más simplegracias al sistema <strong>de</strong> construcción kbuild.• Lo primero que tenemos que <strong>de</strong>cidir endon<strong>de</strong> “vivirá” el módulo:– Junto con las fuentes <strong>de</strong>l kernel: ya sea comoparche o mezclando el código con el árboloficial.– Fuera <strong>de</strong>l árbol <strong>de</strong> fuentes.Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 19


Construcción: árbol <strong>de</strong> fuentes• Si el módulo es parte una parte oficia <strong>de</strong>lkernel “vive” en el árbol <strong>de</strong> fuentes.• Por ejemplo, un manejador <strong>de</strong> undispositivo <strong>de</strong> caracteres estará endrivers/char.• Las reglas para ubicarlo no son muyestrictas, por lo que po<strong>de</strong>mos crearnuestro propio directorio si es necesario.Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 20


Construcción: externo• Crear un Makefile en el directorio quecontiene el archivo fuente y añadir la línea:obj-m := mi_modulo.o• La diferencia esta en la construcción.Debemos indicar don<strong>de</strong> estan los fuentes:make -C/kernel/source/locationSUBDIRS=$PWD modulesDiseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 21


Instalación y <strong>de</strong>pen<strong>de</strong>ncias• Los módulos instalados se sitúan en/lib/modules/version/kernel/• Esto es lo que hace make modules_install• Po<strong>de</strong>mos construir la información <strong>de</strong> <strong>de</strong>pen<strong>de</strong>ncias entremódulos con <strong>de</strong>pmod.• Las <strong>de</strong>pen<strong>de</strong>ncias se almacenan en/lib/modules/version/modules.<strong>de</strong>p que es usado por <strong>de</strong>pmod.• Por ejemplo:% cat modules.<strong>de</strong>p | grep vfatkernel/fs/fat/vfat.ko: kernel/fs/fat/fat.koDiseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 22


Carga <strong>de</strong> módulos• Cargamos un módulo con:– insmod : no controla <strong>de</strong>pen<strong>de</strong>ncias, ni errores.– modprobe: suministra resolución <strong>de</strong><strong>de</strong>pen<strong>de</strong>ncias, control errores e informes.• Descarga <strong>de</strong> módulos:– rmmod– modprobe -r• Las llamadas al sistema usadas son:init_module() y <strong>de</strong>lete_module().Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 23


Información• Po<strong>de</strong>mos obtener información <strong>de</strong> un modulo con /sbin/modinfo.% /sbin/modinfo vfatfilename: /lib/modules/2.6.34.7-0.7-<strong>de</strong>sktop/kernel/fs/fat/vfat.koauthor:Gordon Chaffee<strong>de</strong>scription: VFAT filesystem supportlicense: GPLsrcversion: 70D5128491544D7A33E0C3A<strong>de</strong>pends: fatvermagic: 2.6.34.7-0.7-<strong>de</strong>sktop SMP preemptmod_unload modversions 686• La información se almacena en la sección .modinfo <strong>de</strong>l ELF.Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 24


¿Qué es un módulo?• Un módulo es un archivo objeto reubicable:% file vfat.kovfat.ko: ELF 32-bit LSB relocatable, …, notstripped• Funciones externas <strong>de</strong>l módulo:% nm vfat.ko00000000 T init_module00000000 t init_vfat_fsU iputU jiffiesU kfreeDiseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 25


¿qué es .. (ii)?• Los símbolos marcados in<strong>de</strong>finidos (U) sonsímbolos <strong>de</strong>l kernel o <strong>de</strong> otros módulos.% cat /proc/kallsyms|grep jiffiesc0946a40 D jiffies• La D indica que es símbolo <strong>de</strong>finido en elsegmento <strong>de</strong> datos. Una T, indicaría en el <strong>de</strong>texto, … ver espeficación <strong>de</strong> ELF.• Esta información es la que usa <strong>de</strong>pmod.• Todos los símbolos que exporta el kernel estánen System.map o en /proc/kallsyms.Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 26


Kernels contaminados• El kernel mantiene un estado <strong>de</strong> contaminación (taint state) que es un indicador <strong>de</strong> queha ocurrido algo que pue<strong>de</strong> producir un error o cuelgue <strong>de</strong>l kernel.• Este estado solo se abandona reiniciando el kernel.• La ban<strong>de</strong>ra <strong>de</strong> contaminación también indica las razones <strong>de</strong> contaminación:– P: A module with a Proprietary license has been loa<strong>de</strong>d, i.e. a module that is not licensed un<strong>de</strong>r theGNU General Public License (GPL) or a compatible license. This may indicate that source co<strong>de</strong> forthis module is not available to the Linux kernel <strong>de</strong>velopers or to Novell's <strong>de</strong>velopers.– G: The opposite of 'P': the kernel has been tainted (for a reason indicated by a different flag), but allmodules loa<strong>de</strong>d into it were licensed un<strong>de</strong>r the GPL or a license compatible with the GPL.– F: A module was loa<strong>de</strong>d using the Force option "-f" of insmod or modprobe, which caused a sanitycheck of the versioning information from the module (if present) to be skipped.– R: A module which was in use or was not <strong>de</strong>signed to be removed has been forcefully Removed fromthe running kernelusing the force option "-f" of rmmod.– S: The Linux kernel is running with Symmetric MultiProcessor support (SMP), but the CPUs in thesystem are not <strong>de</strong>signed or certified for SMP use.– M: A Machine Check Exception (MCE) has been raised while the kernel was running. MCEs aretriggered by the hardware to indicate a hardware related problem, for example the CPU'stemperature exceeding a treshold or a memory bank signaling an uncorrectable error.– B: A process has been found in a Bad page state, indicating a corruption of the virtual memorysubsystem, possibly caused by malfunctioning RAM or cache memory.Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 27


Kernels contaminados (ii)• Cómo evitar la corrupción según tipo:– "P", utilizar manejadores/modulos suministrados por el distribuidor.No siempre es posible ya que algunos componentes hardware soloson soportados por manejadores propietarios.– "F" o "R", no utilizar la opción -f al (<strong>de</strong>s)cargar el módulo. Si esnecesario, obtener el módulo para versión específica <strong>de</strong>l kernel.– "S", no utilizar kernels SMP en sistemas con CPUs que no han sidocertificadas o diseñadas para uso SMP.– "M" o "B", asegurarse <strong>de</strong> que el hardware opera <strong>de</strong>ntro <strong>de</strong> losparámetros establecidos <strong>de</strong> suministro <strong>de</strong> potencia, temperatura,humedad, y flujo <strong>de</strong> aire.– "U" o "N", marcar YES en configuración certificada.Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 28


Kernel contaminados (y)• Po<strong>de</strong>mos ver el estado <strong>de</strong> contaminación <strong>de</strong> un kernel en /proc/sys/kernel/tainted. Un valor no-ceroindica que el kernel esta contaminado (los valores pue<strong>de</strong> estar OR'ados).• En /usr/src/linux/Documentation/sysctl/kernel.txt:1 - A module with a non-GPL license has been loa<strong>de</strong>d, thisinclu<strong>de</strong>s modules with no license.Set by modutils >= 2.4.9 and module-init-tools.2 - A module was force loa<strong>de</strong>d by insmod -f.Set by modutils >= 2.4.9 and module-init-tools.4 - Unsafe SMP processors: SMP with CPUs not <strong>de</strong>signed for SMP.8 - A module was forcibly unloa<strong>de</strong>d from the system by rmmod -f.16 - A hardware machine check error occurred on the system.32 - A bad page was discovered on the system.64 - The user has asked that the system be marked "tainted". Thiscould be because they are running software that directly modifiesthe hardware, or for other reasons.128 - The system has died.256 - The ACPI DSDT has been overrid<strong>de</strong>n with one supplied by the userinstead of using the one provi<strong>de</strong>d by the hardware.512 - A kernel warning has occurred.1024 - A module from drivers/staging was loa<strong>de</strong>d.Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 29


Limitaciones LKM• No po<strong>de</strong>mos modificar funcionalidadcompilada estáticamente.• Po<strong>de</strong>mos preparar “ganchos”• Dificultad <strong>de</strong> confinar un error <strong>de</strong>ntro <strong>de</strong>lmódulo. Intentos <strong>de</strong> solventarlo:– Módulos binarios – no pue<strong>de</strong> acce<strong>de</strong>r a funcionesexplícitamente disponibles sobre licencia GPL. Sucarga produce un kernel “contaminado” (tainted).– Modularización <strong>de</strong>l código fuente.Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 30


Más <strong>de</strong>talles ..• W. Mauerer, Professional Linux KernelArchitecture, Wiley Publishing, 2008.Capitulo 7.• D. Bovet y M. Cesati, Un<strong>de</strong>rstanding theLinux kernel (3/e), O'Reilly, 2006,Apéndice B.Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 31


Virtualización• “Virtualización es una tecnología quecombina o divi<strong>de</strong> recursos <strong>de</strong> computaciónpara presentar uno o varios entornos <strong>de</strong>operación utilizando metodologías comoparticionamiento o agregación ya seahardware o software, simulación <strong>de</strong>máquinas completa o parcial, emulación,tiempo compartido, y otras” [Susanta Nanda y Tzi-ckerChiueh, “A Survey on Virtualization Technologies”, RPE Report, SUNY atStony Brook, New York. Feb. 2005.]Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 32


Virtualización• Razones para virtualizar:– Aislamiento <strong>de</strong> recursos– Compartir recursos hardware o consolidar servidores*– Desarrollo <strong>de</strong> software o SO para hardware no existente• Dos enfoques:– <strong>Sistemas</strong> virtualizados don<strong>de</strong> una máquina soporta varioskernels– Un único kernel opera sobre una entorno virtual que abstraelos recursos globales en espacios <strong>de</strong> nombres aislados*.Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 33


Virtualización: taxonomía• VM divididas en:– Process virtual Machine– System Virtual Machine:• Emulación: ISA1 → ISA2• Virtualización:– Hipervisor nativo (bare-metal)o Tipo 1– Hipervisor con anfitrión o Tipo 2APIABIISAAplicacionesBibliotecasSistemaOperativoHardwareDiseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 34


Tipos hipervisores• Según la implementación po<strong>de</strong>mos separarlos:http://blogs.technet.com/b/chenley/archive/2011/02/09/hypervisors.aspx– Traducción binaria dinámica <strong>de</strong>l código binario “crítico” <strong>de</strong>l invitado (no <strong>de</strong> lasaplicaciones).– Paravirtualización - i<strong>de</strong>m pero <strong>de</strong>l código fuente.– Virtualización asistida por hardware (Intel VT-x o AMD SVM) – trata <strong>de</strong> resolverproblemas <strong>de</strong>l hardware relativos a virtualización (trampas).Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 35


Virtualización total• La VM simula suficiente hardware para permitir queun SO invitado sin modificar se ejecute <strong>de</strong> formaaislada.• Por ejemplo, QEMU• Pros: SO's anfitrión e invitado sin modificar.• Cons: Peor rendimiento <strong>de</strong>bido a la capa <strong>de</strong>emulación.Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 36


Paravirtualización• La VM no simula necesariamente el hardware si noque en su lugar ofrece una API especial para el SOinvitado modificado.• Por ejemplo, Xen.• Pros: Buen rendimiento.• Cons: SOs anfitrión e invitados modificados (encada versión <strong>de</strong>l kernel).Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 37


Xen vs KVM: I/O pathBrendan's blog, “Virtualization Performance: Zones, KVM, Xen” (12/3/2013) disponibleen http://dtrace.org/blogs/brendan/2013/01/11/virtualization-performance-zones-kvm-xen/Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 38


Xen vs KVMD. Schirmer, P. Towalski, O.Kopitetzk, “First experiencewith theintroduction of virtualizationtechniques into the <strong>de</strong>lta controlsystem”, Proceedings of ICALEPCS2009, Kobe, Japan.Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 39


KVM, Xen y Linux 3.0+Chucknology, “KVM is Linux. Xen is Not.”, (2/2/2012) disponibleen http://chucknology.com/2012/02/02/kvm-is-linux-xen-is-not/Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 40


Xen vs KVM• Comparativa en– http://virtualization.findthebest.com/saved_compare/Xen-vs-KVM-vs-VirtualBox-Comparison-of-Open-Source-Virtualization-Software• Pros y contras:– http://www.cloudcomputingpath.com/kvm-and-xen-virtualization-in-cloud-infrastructure-pros-andcons/?goback=.gmp_2856284.g<strong>de</strong>_2856284_member_211095996– http://www.vps4post.com/thread-221.html– http://searchservervirtualization.techtarget.com/feature/Xen-vs-KVM-Linux-virtualizationhypervisorsDiseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 41


Intel VT-xJohan De Geleas, “Hardwar virtualizaion: the nuts and Bolts”, AnandTech, 2008, disponible enhttp://www.anandtech.com/show/2480/9.Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 42


Rendimientoa[1] [2][1] VMWare, “Ten Reasons Why Oracle Databases Run Best on Vmware”, 12/3/13en http://blogs.vmware.com/performance/webtech[2] Microsoft, “Get VIRTUAL Now - Virtualization and 'Green IT'”, 12/3/13En http://blogs.msdn.com/b/microsoft-green/archive/2008/09/09/get-virtual-now-virtualization-and-green-it.aspxDiseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 43


Rendimiento (y ii)DataBaseBenchmarkCPU intensivaMemoriaIntensivaWeb serverbenchmarkL (Linux) X (Xen) V (VMWare Workstation) U (User Mo<strong>de</strong> Linux)P. Barham et al., Xen and the Art of Virtualization, Proceedings of the nineteenth ACM symposium on Operatingsystems principles (SOSP), Volume 37, Issue 5, pages 164-177, 2003.Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 44


Ejemplos <strong>de</strong> MV• Nivel ISA: Boch, QEMU, …• Nivel HAL: VMWare, Xen, UML, KVM• Nivel SO: Jail, Containers, …• Nivel <strong>de</strong> lenguaje <strong>de</strong> programación: JVM,Microsoft .NET CLI• Nivel <strong>de</strong> biblioteca: Wine, ...Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 45


Virtualización en Linux• Soporta a máquinas virtuales:– Xen– KVM– UML, y otros• Virtualización “ligera”– Namespaces (espacios <strong>de</strong> nombres)– Cgroups (control groups)– Container (contenedor)Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 46


Namespaces: objetivos <strong>de</strong>diseño• Transparencia y compatibilidad – las aplicaciones <strong>de</strong>beejecutarse en namespace como lo hacen en el host.• Rendimiento – no afecta significativamente.• Usabilidad y administración – la herramientasexistentes <strong>de</strong>ben seguir funcionando.• Aceptar <strong>de</strong> Linux main-stream – <strong>de</strong>sarrollo homogéneo<strong>de</strong>l kernel (no kernel personalizado).Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 48


Namespaces: lista• La lista <strong>de</strong> namespaces actualmente incluidos:– UTS (Unix Timesharing System) (lwn) – información <strong>de</strong>lsistema (nombre, versión, tipo arquitectura, etc.)– System V IPC (lwn) – mecanismos <strong>de</strong> comunicación entreprocesos.– mounts - sistemas <strong>de</strong> archivos montados: shared subtrees(lwn) y r/o bind mount (lwn).– pid (lwn)– espacio <strong>de</strong> nombres <strong>de</strong> i<strong>de</strong>ntificadores <strong>de</strong>procesos.– network (lwn)– conjunto <strong>de</strong> dispositivos <strong>de</strong> red.– userid (lwn)– permite limitar los recursos por usuario.Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 49


Namespaces: creación• Po<strong>de</strong>mos establecer un nuevo namespacecon:– Al crear un proceso con clone y losindicadores: CLONE_NEWIPC,CLONE_NEWNET, CLONE_NEWNS,CLONE_NEWPID, CLONE_NEWUTS– La llamada al sistema unshare() disociaparte <strong>de</strong> los namespaces compartidos con elpadre.Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 50


Namespaces: implementación• Para ahorrar espacio y mejorar laeficiencia, necesitamos doscomponentes:– Una estructura namespace porsubsistema que envuelve loscomponentes que anteriormenteeran globales en base a unnamespace (structuts_namespace, ipc_namespace,mnt_namespace, pid_namespace,user_namespace, net_ns.– Un mecanismo que asocia unproceso con su namespace (structnsproxy).Conexión entre procesos y namespaces[Mauerer2008]Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 51


PID Namespace: relación• Los namespacespue<strong>de</strong>n o no estarjerárquicamenterelacionados.• Po<strong>de</strong>mos observarcomo un procesotiene varios PIDs<strong>de</strong>pendiendo <strong>de</strong>lcontexto en el que seobserva.Jerarquía <strong>de</strong> namespaces [Mauerer2008]Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 52


Usos <strong>de</strong> los namespaces• Posibles usos:– Servidores Privados Virtuales (VPS) como porejemplo Linux Containers (lxc.sourceforge.net)– Application checkpoint and restart (ACS) -– En clusters:• Sustitución <strong>de</strong> NFS• Re-construcción <strong>de</strong> /procDiseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 53


Pid namespace:requisitos• Requisitos:– Los pids en un namespace sonin<strong>de</strong>pendientes <strong>de</strong> los pids <strong>de</strong> otrosnamespace.– El administrador <strong>de</strong>be visualizar y señalartodos los procesos.– Las utilida<strong>de</strong>s existentes <strong>de</strong>be po<strong>de</strong>r seguirmonitorizando y controlando el sistemacompleto: ps, top, kill, etc.Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 54


PID ns: Estructuras <strong>de</strong> datosDiseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 56


Ejemplo: árbol <strong>de</strong> procesos conprocesos en 3 pid-namespacesDiseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 57


Virtualización: bibliografía• Susanta Nanda y Tzi-cker Chiueh, “A Survey on Virtualization Technologies”, RPE Report,SUNY at Stony Brook, New York. Feb. 2005.• J.E. Smith y R. Nair, Virtual Machines: Versatile Platforms for Systems and Processes, TheMorgan Kaufmann Series in Computer Architecture and Design, San Francisco, USA,Morgan Kaufmann Inc., 2005.Disponible enhttp://www.sciencedirect.com/science/book/9781558609105.• Wikipedia, “Comparison of platform virtual machines”, consultado el 13/3/2012, disponiblees http://en.wikipedia.org/wiki/Comparison_of_platform_virtual_machines.Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 58


Cuestiones …...Diseño <strong>de</strong> <strong>Sistemas</strong> <strong>Operativos</strong> - Tema 1 59

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!