Laboratorio de Optimización Sistema Operativo Linux Oscar Alvarado Nava oan@correo.azc.uam.mx Departamento de Electrónica División de Ciencias Básicas e Ingeniería Universidad Autónoma Metropolitana, Azcapotzalco 15-Otoño, septiembre de 2015 Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 1/43
Contenido 1 Sistemas de cómputo Sistemas en capas Mecanismo de ejecución Lenguajes de la máquina 2 Sistema operativo Objetivos 3 Plataformas de ejecución Procesamiento concurrente Procesamiento multi-hilo Procesamiento multi-sistema 4 Linux y distribuciones UNIX kernel de Linux Distribuciones de linux Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 2/43
Sistemas en capas Sistema de cómputo en capas Aplicaciones: científico, negocios, oficina, juegos Traductores y herramientas de desarrollo Sistema operativo: procesos, hilos, bibliotecas Arquitectura: conjunto de instrucciones Micro arquitectura: ruta de datos unidad de control Lógico: compuertas, unidades funcionales Software Hardware Físico: resistencias, transistores, etc. Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 3/43
Mecanismo de ejecución Elementos de un sistema de cómputo Modelo de Von Newmann para ejecución de programas CPU (Central Processing Unit): unidad de control, registros y ALU RAM (Random Access Memory) Sistema de buses Periféricos de entrada/salida Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 4/43
Mecanismo de ejecución Mecanismo de ejecución RAM sistema operativo 101010101110 111000011111 001010100110 001111100010 100101100110 111110100000 100010100111 CPU 001010100110 pc ir ALU Control HD encabezado 101010101110 111000011111 001010100110 001111100010 100101100110 111110100000 100010100111 Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 5/43
Lenguajes de la máquina Lenguaje máquina: CPU Intel x86 1 2 3 4 5 01010101000000000000000000000000 6 10001001111001010000000000000000 7 10000011111011000001000000000000 8 11000111010001011111110000001111 9 11000111010001011111100000001001 10 11000111010001011111010000000000 11 10001011010001011111100000000000 12 10001011010101011111110000000000 13 00000001110100000000000000000000 14 10001011010001011111010000000000 15 10111000000000000000000000000000 16 11001001000000000000000000000000 17 18 11000011000000000000000000000000 Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 6/43
Lenguajes de la máquina Lenguaje ensamblador: CPU Intel x86 1.file suma.c ;archivo 2.text ;seccion de texto 3.globl main ;simbolo global 4 main:.cfi startproc 5 push %ebp ;libera pila 6 mov %esp, %ebp 7 sub $16, %esp 8 movl $15, -4( %ebp) 9 movl $9, -8( %ebp) 10 movl $0, -12( %ebp) 11 mov -8( %ebp), %eax ;carga en registro op1 12 mov -4( %ebp), %edx ;carga en registro op2 13 add %edx, %eax ;suma de datos 14 mov %eax, -12( %ebp) ;almacena resultado 15 mov $0, %eax ;valor de regreso 16 leave ;fin de modulo 17.cfi restore 18 ret Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 7/43
Lenguajes de la máquina Lenguaje de alto nivel: lenguaje C 1 int main() 2 { 3 int x=15; 4 int y=9; 5 int z=0; 6 7 z = x + y; 8 9 return 0; 10 } Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 8/43
Objetivos Sistema de cómputo Un sistema de cómputo está compuesto de muchos elementos Uno o más procesadores Varios niveles de memoria: principal, caché, virtual, etc. Periféricos: discos duros, tarjetas de red, teclado, ratón, pantalla, etc. Cómo funciona cada uno de ellos?, cómo trabajan entre ellos? Cómo utilizarlos de manera óptima?, para uno o varios usuarios Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 9/43
Objetivos Sistema operativo Conjunto de programas de software, escrito en varios lenguajes de programación Lenguaje ensamblador dependiente de la arquitectura objetivo, por ejemplo, x86 32 de Intel Lenguaje de mediano nivel no dependiente de la arquitectura, por ejemplo C Lenguajes interpretados o scripts, no dependiente de arquitectura objetivo Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 10/43
Objetivos Algunos objetivos del sistema operativo Ofrecer a los usuarios un modelo de computadora (máquina extendida o virtual) más simple, ocultando los destalles de funcionamiento del hardware Proporcionar a los procesos de usuario los recursos necesarios para su ejecución Vigilar la ejecución de los procesos En general, se encarga de la administración de todos los recursos del sistema de cómputo Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 11/43
Objetivos Máquina extendida o virtual Oculta la constitución y funcionamiento del hardware Oculta los detalles de operación del hardware: Cómo funciona un disco duro magnético? Presenta al usuario una máquina virtual, fácil de utilizar Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 12/43
Objetivos Administrador de recursos El sistema operativo permite ejecutar aplicaciones a través de procesos o hilos Un proceso es un programa en ejecución En los sistemas UNIX y en los sistemas como Unix, un proceso tiene al menos un hilo de ejecución Cada proceso podrá utilizar los recursos por un tiempo determinado CPUs, segmentos virtuales de memoria, dispositivos, etc. El SO vigilará que los recursos sean utilizados de forma equitativa entre los procesos Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 13/43
Objetivos Jerarquía de procesos Es necesario tener una jerarquía de ejecución Procesos con privilegos limitados Procesos con privilegos otorgados temporalmente Procesos con mayores privilegios Para lograr lo anterior, es necesario que el procesador tenga al menos dos modos de operación Modo kernel, o supervisor Modo usuario, o modo real Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 14/43
Procesamiento concurrente Sistema en capas negocios oficina mozilla apache NFS X11 vim gcc bash sistema operativo programas de aplicaciones programas de sistema ISA hardware microarquitectura dispositivos físicos Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 15/43
Procesamiento concurrente Kernel o núcleo programas de aplicaciones kernel hardware Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 16/43
Procesamiento concurrente Sistema de cómputo host stdin stdout SO HW CPU0 NIC HD Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 17/43
Procesamiento concurrente Procesamiento concurrente host stdin stdout SO HW CPU0 NIC HD Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 18/43
Procesamiento concurrente Comunicación entre procesos host SO HW NIC CPU0 HD Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 19/43
Procesamiento multi-hilo Proceso multihilo host SO HW CPU0 Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 20/43
Procesamiento multi-hilo Ejecución de un proceso multihilo en un CPU host SO HW CPU0 Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 21/43
Procesamiento multi-hilo Multiprocesamiento simétrico (SMP) host SO HW CPU0 CPU1 Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 22/43
Procesamiento multi-hilo Ejecución multihilo en varios CPUs host SO HW CPU0 CPU1 Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 23/43
Procesamiento multi-hilo Ejecución multihilo en GPUs RAM processes and threads operating system global memory main bus cache streaming multiprocessors GPU core0 CPU coren Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 24/43
Procesamiento multi-sistema Comunicación entre procesos remotos host1 host2 kernel 228021 kernel 24792 hardware 192.168.1.2 hardware 192.168.1.3 Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 25/43
Procesamiento multi-sistema Un servidor host1 host2 kernel kernel hardware NIC hardware NIC Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 26/43
Procesamiento multi-sistema Servidores concurrentes host1 host2 kernel kernel hardware NIC hardware NIC Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 27/43
Procesamiento multi-sistema Servidores multihilo host1 host2 kernel kernel hardware NIC hardware NIC Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 28/43
Procesamiento multi-sistema Múltiples servidores en varios hosts host1 host2 host3 sistema operativo hardware sistema operativo hardware sistema operativo hardware Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 29/43
Procesamiento multi-sistema Capa intermedia (middleware) host1 host2 host3 Middleware Middleware Middleware sistema operativo hardware sistema operativo hardware sistema operativo hardware Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 30/43
Procesamiento multi-sistema Sistema distribuido host1 host2 host3 Middleware Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 31/43
UNIX Desarrollo de UNIX Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 32/43
UNIX Modelo de UNIX Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 33/43
kernel de Linux Sistema operativo Linux Inicialmente la palabra Linux se refería al sistemas operativo, conocido como kernel o núcleo Actualmente el término Linux es también utilizado para referirse a una distribución: Debian, RedHat, Ubuntu, etc. Versión actual del kernel 3.10.9 (agosto de 2013) Aplicaciones de sistema: bibliotecas, instaladores, servicios, compiladores, etc. Aplicaciones de usuario: escritorio, navegadores, aplicaciones de oficina, etc. La mayoría del software pertenecen al proyecto GNU (Gun is Not Unix), con licencia GPL Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 34/43
,ch01.2168 Page 6 Thursday, January 20, 2005 9:21 AM kernel de Linux Modelo del kernel Linux 4.2.1 The System Call Interface Process management Memory management Filesystems Device control Networking Kernel subsystems Concurrency, multitasking Virtual memory Files and dirs: the VFS Ttys & device access Connectivity Features implemented Archdependent code Memory manager File system types Block devices Character devices Network subsystem IF drivers Software support Hardware CPU Memory Disks & CDs Consoles, etc. Network interfaces features implemented as modules Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 35/43
kernel de Linux Versión actual del kernel Liberado el 21 de septiembre de 2015: linux-4.2.1.tar.gz, 124MB www.kernel.org Multiarquitectura Más de 15 millones ĺıneas de código en lenguaje C, ensamblador de diferentes arquitecturas, scripts de configuración y compilación kernelnewbies.org/linux 4.0 $wget -c http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.9.tar.bz2 $tar -jxvf linux-3.7.2.tar.bz2 Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 36/43
kernel de Linux Documentación La principal información acerca de la estructura del Linux está en el directorio Documentation Información de funcionamiento de hardware:cpu-frec PCI, etc. Sistemas de archivos: filesystems Dispositivos:drivers-model Sistemas: scheduler, vm, usb, timers, etc. Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 37/43
kernel de Linux Multi-arquitectura La versión del kernel ha sido portada a varias arquitecturas de procesadores hard y soft Directorio arch x86 32 y 64 bits, Intel y AMD powerpc AIM (Apple-IBM-Motorola) alpha DEC (Digital) arm ARM (Alcatel-Lucent-Apple-Atmel) mips MIPS, John Hennessy m68k Motorola sparc SUN microblaze Xilinx openrisc OpenCores Cada directorio tiene el software dependiente de la arquitectura y está escrita en ensamblador arch/x86/kernel/entry 32.S Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 38/43
kernel de Linux Sistemas de archivos En el directorio filesystems se ecuentra el código necesario para dar soporte a los diferentes sistemas de archivos que soporta Linux ext2, ext3, ext4 ntfs nfs squashfs qnx coda jffs2 vfat Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 39/43
Distribuciones de linux Distribución de linux dhcp samba bind Apache/Openjava gcc vim make sh/bash/csh/ksh dpkg/apt (.deb) OpenOffice Firefox/IceWeasel gnome/kde X Windows rpm/yum (.rpm) linux kernel x_86/ia64/sparc/powerpc/microblaze Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 40/43
Distribuciones de linux Basados en Debian Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 41/43
Distribuciones de linux Basados en redhat Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 42/43
Distribuciones de linux Basados en slackware Oscar Alvarado Nava UAM Azcapotzalco Sistema Operativo Linux 43/43