Académique Documents
Professionnel Documents
Culture Documents
Objetivo
Conocer las estructuras/arquitectura de SOS actuales desde el punto de vista de la adaptabilidad funcional de los mismos a nuevos servicios y hardware.
ndice
Arquitectura monoltica:
configuracin del kernel configuracin en el arranque configuracin en tiempo de ejecucin mdulos de carga
Mquinas virtuales:
Soporte del kernel a la virtualizacin: namespaces, cgroups, containers. Soporte a mquinas virtuales: Xen, KVM.
Introduccin
Necesitamos estructuras (arquitecturas) que permitan dar soporte a nuevos tipos de aplicaciones y a nuevos dispositivos sistemas extensibles/adaptables. Necesitamos construir sistemas seguros, correctos, y robustos. La arquitectura puede determinar propiedades no funcionales, por ejemplo, QoS.
Diseo de Sistemas Operativos - Tema 1 4
Arquitecturas en uso
En la actualidad, las estructuras ms usadas:
Monoltica Linux, ... Microkernel MacOS, Windows, QNX, ... Mquinas virtuales Xen, VMWare, SO de internet PalmOS(WebOS)
Arquitectura Monoltica
Caractersticas:
Toda la funcionalidad en modo kernel. Ventaja: eficiencia Problema: no confinamiento de errores en modo kernel Adaptabilidad:
De forma esttica:
Configuracin y arranque del kernel Modificar o aadir cdigo
De forma dinmica:
On-the-fly LKM (Linux Kernel Modules)
Optimizaciones:
Compilar una porcin del kernel:
% make [M=]drivers/usb/serial
Compilacin mutihebra:
% make -jn
(donde n = 2 * nmero_de_procesadores).
Diseo de Sistemas Operativos - Tema 1 9
verifica la correcta construccin del kernel Instala el kernel en /boot Se genera cualquier imagen ramdisk inicial (se debe generar un disco ram despus de hacer make modules_install:
# mkinitramfs -o /boot/initrd.img-2.6.20.1 /lib/modules/2.6.20.1
Se notificar al programa cargador de la existencia de una nueva imagen y se actualiza.
(paquete mkinitrd).
make-kpkg en Ubuntu.
10
Parchear: pasos
1. Bajar los fuentes del kernel, el parche en /usr/src, y descomprimir. 2. Parchear el kernel: bzcat ../patch-2.4.21-ac1.bz2 | patch -p1 3. Copiar el .config anterior al directorio actual. 4. Verificar opciones nuevas y hacer consistente con las actuales: make oldconfig 5. Configurar o modificar ms opciones si lo deseamos: make menuconfig 6. Compilar como lo hacemos habitualmente. 9. Instalar como lo hacemos habitualmente.
12
Modificar el kernel
La complejidad medida como LOC es exponencial.
Ngc891, Evolution of the Linux kernel source code tarball size, en lnea (6/3/2012) en http://ngc891.blogdns.net/?p=92
13
Modificar/aadir cdigo
La complejidad de modificar / aadir cdigo es muy elevada debido a las dependencias entre componentes
http://www.makelinux.net/kernel_map o http://lxr.linux.no
14
Modificaciones on-the-fly
El seudo-sistema de archivos /proc nos permite configurar al vuelo ciertos parmetros del sistema.
% echo mihost >/proc/sys/kernel/hostname
15
LKM
Kernel limpio
17
Macros de entrada/salida
18
Construccin de un mdulo
En 2.6, la construccin es ms simple gracias al sistema de construccin kbuild. Lo primero que tenemos que decidir en donde vivir el mdulo:
Junto con las fuentes del kernel: ya sea como parche o mezclando el cdigo con el rbol oficial. Fuera del rbol de fuentes.
19
Construccin: externo
Crear un Makefile en el directorio que contiene el archivo fuente y aadir la lnea: obj-m := mi_modulo.o La diferencia esta en la construccin. Debemos indicar donde estan los fuentes: make -C /kernel/source/location SUBDIRS=$PWD modules
Diseo de Sistemas Operativos - Tema 1 21
Instalacin y dependencias
Los mdulos instalados se sitan en /lib/modules/version/kernel/ Esto es lo que hace make modules_install Podemos construir la informacin de dependencias entre mdulos con depmod. Las dependencias se almacenan en /lib/modules/version/modules.dep que es usado por depmod. Por ejemplo:
% cat modules.dep | grep vfat kernel/fs/fat/vfat.ko: kernel/fs/fat/fat.ko
22
Carga de mdulos
Cargamos un mdulo con:
insmod : no controla dependencias, ni errores. modprobe: suministra resolucin de dependencias, control errores e informes.
Descarga de mdulos:
rmmod modprobe -r
Informacin
Podemos obtener informacin de un modulo con /sbin/modinfo. % /sbin/modinfo vfat filename: /lib/modules/2.6.34.7-0.7desktop/kernel/fs/fat/vfat.ko author: Gordon Chaffee description: VFAT filesystem support license: GPL srcversion: 70D5128491544D7A33E0C3A depends: fat vermagic: 2.6.34.7-0.7-desktop SMP preempt mod_unload modversions 686 La informacin se almacena en la seccin .modinfo del ELF.
24
Qu es un mdulo?
Un mdulo es un archivo objeto reubicable:
% file vfat.ko vfat.ko: ELF 32-bit LSB relocatable, , not stripped
Funciones externas del mdulo: % nm vfat.ko 00000000 T init_module 00000000 t init_vfat_fs U iput U jiffies U kfree
Diseo de Sistemas Operativos - Tema 1 25
qu es .. (ii)?
Los smbolos marcados indefinidos (U) son smbolos del kernel o de otros mdulos.
% cat /proc/kallsyms|grep jiffies c0946a40 D jiffies
La D indica que es smbolo definido en el segmento de datos. Una T, indicara en el de texto, ver espeficacin de ELF. Esta informacin es la que usa depmod. Todos los smbolos que exporta el kernel estn en System.map o en /proc/kallsyms.
Diseo de Sistemas Operativos - Tema 1 26
Limitaciones LKM
No podemos modificar funcionalidad compilada estticamente. Podemos preparar ganchos Dificultad de confinar un error dentro del mdulo. Intentos de solventarlo:
Mdulos binarios no puede acceder a funciones explcitamente disponibles sobre licencia GPL. Su carga produce un kernel contaminado (tainted). Modularizacin del cdigo fuente.
Diseo de Sistemas Operativos - Tema 1 27
Ms detalles ..
W. Mauerer, Professional Linux Kernel Architecture, Wiley Publishing, 2008. Capitulo 7. D. Bovet y M. Cesati, Understanding the Linux kernel (3/e), O'Reilly, 2006, Apndice B.
28
Virtualizacin
Virtualizacin es una tecnologa que combina o divide recursos de computacin para presentar uno o varios entornos de operacin utilizando metodologas como particionamiento o agregacin ya sea hardware o software, simulacin de mquinas completa o parcial, emulacin, tiempo compartido, y otras [Susanta Nanda y Tzi-cker
Chiueh, A Survey on Virtualization Technologies, RPE Report, SUNY at Stony Brook, New York. Feb. 2005.]
29
Virtualizacin
Razones para virtualizar:
Aislamiento de recursos Compartir recursos hardware o consolidar servidores* Desarrollo de software o SO para hardware no existente
Dos enfoques:
Sistemas virtualizados donde una mquina soporta varios kernels Un nico kernel opera sobre una entorno virtual que abstrae los recursos globales en espacios de nombres aislados*.
30
Virtualizacin: taxonoma
VM divididas en:
Process virtual Machine System Virtual Machine:
Emulacin: ISA1 ISA2 Virtualizacin:
Hipervisor nativo (bare-metal) o Tipo 1 Hipervisor con anfitrin o Tipo 2
API ABI ISA Aplicaciones Bibliotecas Sistema Operativo Hardware
31
Tipos hipervisores
http://blogs.technet.com/b/chenley/archive/2011/02/09/hypervisors.aspx
Segn la implementacin podemos separarlos: Traduccin binaria dinmica Paravirtualizacin Virtualizacin asistida por hardware
32
Ejemplos de MV
Nivel ISA: Boch, QEMU, Nivel HAL: VMWare, Xen, UML, KVM Nivel SO: Jail, Containers, Nivel de lenguaje de programacin: JVM, Microsoft .NET CLI Nivel de biblioteca: Wine, ...
33
Virtualizacin en Linux
Soporta a mquinas virtuales:
Xen KVM UML, y otros
Virtualizacin ligera
Namespaces cgroups Container
Diseo de Sistemas Operativos - Tema 1 34
Namespaces
Namespaces es una forma ligera de virtualizacin que permite que veamos propiedades globales de un sistema bajo diferentes aspectos (un namespace es esencialmente una vista del sistema). SOs que soportan este tipo de virtualizacin:
Namespaces Linux Zones Solaris Jail FreeBSD
Diseo de Sistemas Operativos - Tema 1 35
36
Namespaces: lista
La lista de namespaces actualmente incluidos:
UTS (Unix Timesharing System) (lwn) informacin del sistema (nombre, versin, tipo arquitectura, etc.) System V IPC (lwn) mecamismos de comunicacin entre procesos. mounts - sistemas de archivos montados: shared subtrees (lwn) y r/o bind mount (lwn). pid (lwn) espacio de nombres de identificadores de procesos. network (lwn) conjunto de dispositivos de red. userid (lwn) permite limitar los recursos por usuario.
37
Namespaces: creacin
Podemos establecer un nuevo namespace con:
Al crear un proceso con clone y los indicadores: CLONE_NEWIPC, CLONE_NEWNET, CLONE_NEWNS, CLONE_NEWPID, CLONE_NEWUTS La llamada al sistema unshare() disocia parte de los namespaces compartidos con el padre.
Diseo de Sistemas Operativos - Tema 1 38
Namespaces: implementacin
Para ahorar espacio y mejorar la eficiencia, necesitamos dos componentes: Una estructura namespace por subsistema que envuelve los componentes que anteriormente eran globales en base a un namespace (struct uts_namespace, ipc_namespace, mnt_namespace, pid_namespace, user_namespace, net_ns. Un mecanismo que asocia un proceso con su namespace (struct nsproxy).
Conexin entre procesos y namespaces [Mauerer2008]
39
40
41
Pid namespace:requisitos
Requisitos:
Los pids en un namespace son independientes de los pids de otros namespace. El administrador debe visualizar y sealar todos los procesos. Las utilidades existentes debe poder seguir monitorizando y controlando el sistema completo: ps, top, kill, etc.
Diseo de Sistemas Operativos - Tema 1 42
pid namespace: ED
La gestin de identificadores maneja dos estructuras:
pid la representacin interna del kernel de un PID.
struct pid { atomic_t count; /* contador de referencias */ /* lista de tareas que usan este pid */ struct hlist_head tasks[PIDTYPE_MAX]; int level; /*en cuantos namespaces es visible el ID*/ struct upid numbers[1]; /*n instancias upid por nivel*/ }
43
44
45
Virtualizacin: bibliografa
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, The Morgan Kaufmann Series in Computer Architecture and Design, San Francisco, USA, Morgan Kaufmann Inc., 2005.Disponible en http://www.sciencedirect.com/science/book/9781558609105. Wikipedia, Comparison of platform virtual machines, consultado el 13/3/2012, disponible es http://en.wikipedia.org/wiki/Comparison_of_platform_virtual_machines.
46
Cuestiones ...
47