dso-2: principales aspectos del funcionamiento de un sistema operativo (v2d)

Download DSO-2: Principales aspectos del funcionamiento de un sistema operativo (v2d)

If you can't read please download the document

Upload: alejandro-calderon-mateos

Post on 27-Jan-2017

69 views

Category:

Education


3 download

TRANSCRIPT

  • Leccin 2Funcionamiento del sistema operativo

    Diseo de Sistemas Operativos

    Grado en Ingeniera Informtica

    Grupo ARCOS

    Universidad Carlos III de Madrid

  • Alejandro Caldern Mateos

    Lecturas recomendadas

    ARCOS @ UC3M2

    1. Carretero 2007:

    1. Cap.2

    1. Tanenbaum 2006(en):

    1. Cap.1

    2. Stallings 2005:

    1. Parte uno (transfondo)

    3. Silberschatz 2006:

    1. Cap.2

    Base Recomendada

  • Alejandro Caldern Mateos

    A recordar

    ARCOS @ UC3M3

    1. Estudiar la teora asociada. Estudiar el material asociado a la bibliografa:

    las transparencias solo no son suficiente.

    Crear cuestiones con sus respuestas y justificacin.

    2. Repasar lo visto en clase. Realizar el cuaderno de prcticas progresivamente.

    3. Ejercitar las competencias. Realizar las prcticas progresivamente.

    Realizar todos los ejercicios posibles.

  • Alejandro Caldern Mateos

    Contenidos

    ARCOS @ UC3M4

    Introduccin

    Funcionamiento del sistema operativo

    Arranque del sistema

    Caractersticas y tratamiento de los eventos

    Procesos de ncleo

    Otros aspectos

    Concurrencia en los eventos

    Aadir nuevas funcionalidades al sistema

  • Alejandro Caldern Mateos

    Contenidos

    ARCOS @ UC3M5

    Introduccin

    Funcionamiento del sistema operativo

    Arranque del sistema

    Caractersticas y tratamiento de los eventos

    Procesos de ncleo

    Otros aspectos

    Concurrencia en los eventos

    Aadir nuevas funcionalidades al sistema

  • Alejandro Caldern Mateos

    Contextos donde est presente el S.O. (1/3)

    ARCOS @ UC3M6

    Arranque del sistema

    Realiza labores de iniciar el hardware y los procesos de ncleo, sistema y usuarios en el orden apropiados.

    Ejecuta como programa ejecutable.

  • Alejandro Caldern Mateos

    Ejemplo simplificado

    ARCOS @ UC3M7

    S.O.(kernel)

    HW.CPU Disco RAM

    despierta!

    modo privilegiado y extendido!

    Estructuras iniciales

  • Alejandro Caldern Mateos

    Modo kernel y usuario repaso

    Modo privilegiado (kernel mode)

    Accede a todo el espacio de memoria

    Uso de todo tipo de instrucciones de

    CPU

    Modo ordinario (user mode)

    Accede solo al espacio de memoria del

    proceso asociado

    No puede acceder a ciertos registros de la

    CPU o usar ciertas instrucciones

    ARCOS @ UC3M8

    User(nivel 1)

    Kernel

    (nivel 0)

    El sistema operativo precisa de un mnimo de dos modos de ejecucin:

  • Alejandro Caldern Mateos

    Contextos donde est presente el S.O. (2/3)

    ARCOS @ UC3M9

    Tratamiento de eventos

    Finalizado el arranque, el sistema operativo es una entidad pasiva.

    Los procesos y el hardware son entidades activas (usan el kernel)

    Excepto al inicio, siempre hay un proceso ejecutando (idle)

    Acceso a los servicios del S.O.

    Interrupciones hardware

    Interrupciones software

    Excepciones

    Llamadas al sistema

    Como biblioteca.

  • Alejandro Caldern Mateos

    Ejemplo simplificado

    ARCOS @ UC3M10

    S.O.(kernel)

    HW.

    App.

    CPU Disco RAM

    char buffer[1024];

    read(fd,buffer)

    Pi

  • Alejandro Caldern Mateos

    Ejemplo simplificado

    ARCOS @ UC3M11

    S.O.(kernel)

    HW.

    App.

    CPU Disco RAM

    Pedir bloque Ejecutar Pi +1

    char buffer[1024];

    read(fd,buffer)

    ll. sistema

    Pi

  • Alejandro Caldern Mateos

    Ejemplo simplificado

    ARCOS @ UC3M12

    S.O.(kernel)

    HW.

    App.

    CPU Disco RAM

    Pedir bloque Ejecutar Pi +1

    int. hw

    Copiar a RAM Pi listo Continuar Pi +1

    Pi char buffer[1024];

    read(fd,buffer)

    ll. sistema

  • Alejandro Caldern Mateos

    Contextos donde est presente el S.O. (3/3)

    ARCOS @ UC3M13

    Procesos de ncleo

    Realiza labores del sistema operativo que se hacen mejor en el contexto de un proceso independiente

    Como procesos prioritarios, para tareas especiales.

  • Alejandro Caldern Mateos

    Ejemplo simplificado

    ARCOS @ UC3M14

    S.O.(kernel)

    HW.CPU Disco RAM

    while (true) { sleep(1); Si (idle > 20m)

    dormir disco}

  • Alejandro Caldern Mateos

    Contextos donde est presente el S.O. resumen

    ARCOS @ UC3M15

    Arranque del sistema Realiza labores de iniciar el hardware y los procesos de ncleo, sistema y

    usuarios en el orden apropiados.

    Ejecuta como programa ejecutable.

    Tratamiento de eventos Finalizado el arranque, el sistema operativo es una entidad pasiva.

    Los procesos y el hardware son entidades activas (usan el kernel)

    Excepto al inicio, siempre hay un proceso ejecutando (idle)

    Acceso a los servicios del S.O. Int. hardware, Int. software, Excepciones, Llamadas al sistema

    Como biblioteca.

    Procesos de ncleo Realiza labores del sistema operativo que se hacen mejor

    en el contexto de un proceso independiente

    Como procesos prioritarios, para tareas especiales.

  • Alejandro Caldern Mateos

    Contenidos

    ARCOS @ UC3M16

    Introduccin

    Funcionamiento del sistema operativo Arranque del sistema

    Caractersticas y tratamiento de los eventos

    Procesos de ncleo

    Otros aspectos

    Concurrencia en los eventos

    Aadir nuevas funcionalidades al sistema

  • Alejandro Caldern Mateos

    Proceso de arranque

    El Reset carga en registros de CPU los valores iniciales

    PC Direccin de arranque del cargador de la ROM (FFFF:0000)

    ARCOS @ UC3M17 http://duartes.org/gustavo/blog/post/how-computers-boot-up

    PC

    ROM

  • Alejandro Caldern Mateos

    Proceso de arranque

    Se ejecuta el cargador de la ROM

    Power-On Self Test (POST)

    Carga en memoria (0000:7C00) el Master Boot Record

    ARCOS @ UC3M18 http://duartes.org/gustavo/blog/post/how-computers-boot-up

    ROM

    MBR

    PC

  • Alejandro Caldern Mateos

    Proceso de arranque

    Se ejecuta el cargador de la ROM

    Power-On Self Test (POST)

    Carga en memoria (0000:7C00) el Master Boot Record

    ARCOS @ UC3M19

    ROM

    MBR

    PC

    http://www.ibm.com/developerworks/linux/library/l-linuxboot/

  • Alejandro Caldern Mateos

    Proceso de arranque

    Se ejecuta el Master Boot Record

    (Es la primera parte del cargador del S.O.)

    Busca una particin activa en la tabla de particiones

    Carga el Boot Record en memoria desde esta particin

    ARCOS @ UC3M20 http://duartes.org/gustavo/blog/post/how-computers-boot-up

    ROM

    MBR

    BL

    PC

  • Alejandro Caldern Mateos

    Proceso de arranque

    Se ejecuta el Boot Loader

    (Es la segunda parte del cargador del S.O.)

    Podra presentar una lista de opciones de arranque

    El boot loader lleva a memoria la parte residente del sistema operativo (ncleo y mdulos)

    ARCOS @ UC3M21 http://duartes.org/gustavo/blog/post/how-computers-boot-up

    ROM

    MBR

    BL

    Rest

    of OS

    PC

  • Alejandro Caldern Mateos

    Proceso de arranque

    Se ejecuta la inicializacin del kernel (1/2)

    Inicializacin del hardware

    Comprueba errores en los sistemas de ficheros

    Establece las estructuras internas iniciales del sistema operativo

    Pasa a modo protegido

    ARCOS @ UC3M22 http://duartes.org/gustavo/blog/post/how-computers-boot-up

    ROM

    MBR

    BL

    Rest

    of OS

    PC

  • Alejandro Caldern Mateos

    Proceso de arranque

    Se ejecuta la inicializacin del kernel (2/2)

    Se establece el resto del S.O. en modo protegido

    Se construye los procesos iniciales

    Procesos de ncleo, servicios de sistema y terminales (login)

    ARCOS @ UC3M23 http://duartes.org/gustavo/blog/post/how-computers-boot-up

    ROM

    MBR

    BL

    Rest

    of OS

    PC

  • Alejandro Caldern Mateos

    Ejemplo de secuencias de arranque

    GNU-Linux

    ARCOS @ UC3M24

    MS Windows

  • Alejandro Caldern Mateos

    GNU-Linux

    ARCOS @ UC3M25

    PC

    http://www.ibm.com/developerworks/linux/library/l-linuxboot/

  • Alejandro Caldern Mateos

    GNU-Linux

    ARCOS @ UC3M26

    Ejecucin de LILO (Linux Loader) o GRUB (Grand Unified Bootloader).

    Presenta un men de opciones (/etc/grub.conf)

    Se carga en memoria la imagen del kernel (vmlinuz) y se ejecuta con los parmetros/opciones que se indiquen.

    Tambin se puede encadenar otro cargador.

    PC

    http://funnix.net/wp-content/uploads/2012/07/grub.jpg

    grub> set root=(hd0)/boot

    grub> insmod linux

    grub> linux /bzImage-2.6.14.2

    grub> initrd /initrd-2.6.14.2.img

    grub> boot

  • Alejandro Caldern Mateos

    GNU-Linux

    ARCOS @ UC3M27

    Se ejecuta el kernel (vmlinuz): base

    Si se necesita, descomprime el kernel

    Este realiza el reconocimiento de hardware (y la inicializacin de aquel cuyos driversestn compilados dentro del kernel)

    http://gxemul.sourceforge.net/gxemul-stable/doc/debian-1.png

    PC

  • Alejandro Caldern Mateos

    GNU-Linux

    ARCOS @ UC3M28

    Se ejecuta el kernel (initrd): mdulos

    El initrd es el sistema de ficheros inicial con los drivers necesarios para continuar.

    Se ejecuta el shell-script /linuxrc

    Se inicializa los drivers con la configuracin bsica del sistema.

    En el se initrd pasa a pivotar al sistema raz definitivo:

    El mismo (sistema empotrado), participacin de un disco duro, NFS, etc.

    http://milindchoudhary.wordpress.com/2009/03/30/linux-boot-process/

    PC

  • Alejandro Caldern Mateos

    GNU-Linux

    ARCOS @ UC3M29 http://www.ibm.com/developerworks/linux/library/l-linuxboot/

    PC

    Se ejecuta el proceso init

    El proceso init (pid 1) arranca todos los procesos del sistema

    y los procesos de terminal (login o xlogin) para que el usuario se autentique.

    Pasa a quedarse dormido esperando la llegada de eventos (cpu_idle)

  • Alejandro Caldern Mateos

    GNU-Linux

    ARCOS @ UC3M30

    Se ejecuta el proceso init

    El proceso init (pid 1) arranca todos los procesos del sistema.

    Segn las instrucciones del fichero inittab.

    Los procesos a arrancar estn ordenados en diferentes directorios de arranque

    Uno para el arranque inicial (rcS.d)

    Varios para los tipos de arranque completo del sistema (rc[1-5].d)

    Uno para apagar (rc0.d) y otro para reiniciar (rc6.d)

    El proceso init permanece ejecutando todo el tiempo (hurfanos, parada, etc.)

    Durante el arranque inicial (rcS.d) habitualmente:

    Se carga los drivers restantes

    Se comprueba el sistema de ficheros raz (si se aplica) y remonta para lectura-escritura

    Se monta el resto de sistemas de ficheros

    Durante el arranque completo del sistema (rc1.d, rc2.d, )

    Arranca los servicios y inicia el sistema de login/xlogin.

    http://www.ibm.com/developerworks/linux/library/l-linuxboot/

    PC

  • Alejandro Caldern Mateos

    Ejemplo de secuencias de arranque

    GNU-Linux

    ARCOS @ UC3M31

    MS Windows

  • Alejandro Caldern Mateos

    Arranque Windows 7

    ARCOS @ UC3M32

    PC

    http://www.gegeek.com/documents/cheat_sheets/Windows%207%20Boot%20Process.pdf

  • Alejandro Caldern Mateos

    Arranque Windows 7 (1/2)

    ARCOS @ UC3M33

    La CPU comienza a ejecutar el MBR

    Busca y carga en memoria el sector de arranque del volumen y el sector de arranque de NT (8 KB en tamao, entiende FAT32 y NTFS)

    La CPU comienza a ejecutar el sector de arranque de NT (NTBS)

    Busca y carga en memoria BOOTMGR.EXE

    La CPU comienza a ejecutar BOOTMGR.EXE Comprueba si hay estado de hibernacin. Si es as, ejecuta WINRESUME.EXE

    Monta y extrae la informacin bsica del BCD (Boot Configuration Data)

    Muestra un men al usuario con distintas opciones de arranque.

    Pasa a modo 64 bits (si se aplica) y carga en memoria WINLOAD.EXE

    La CPU comienza a ejecutar WINLOAD.EXE Carga en memoria NTOSKRNL.EXE, HAL.DLL, drivers para el arranque y

    la rama SYSTEM del registro

    http://techovision.blogspot.com/2010/09/windows-7-boot-process.html

    PC

  • Alejandro Caldern Mateos

    Arranque Windows 7 (2/2)

    ARCOS @ UC3M34

    La CPU comienza a ejecutar NTOSKRNL.EXE, que se inicializa el sistema en dos fases: Fase 0: Inicializa el kernel en si mismo

    Inicializa HAL, del driver de pantalla, arranca el depurador.

    Fase 1: Inicializa el sistema.

    Carga todos los drivers necesarios y para el depurador.

    Al finalizar carga el primer procesos de usuario (smss.exe).

    La CPU comienza a ejecutar SMSS.EXE El gestor de sesiones carga el resto del registro.

    Configura el entorno para ejecutar el subsistema Win32 (WIN32K.SYS)

    Carga en memoria el proceso WINLOGON.EXE

    Carga el resto de servicios y drivers no esenciales (mostrar el escritorio antes)

    Carga el subsistema de seguridad LSASS.EXE

    http://techovision.blogspot.com/2010/09/windows-7-boot-process.html

    PC

  • Alejandro Caldern Mateos

    Proceso de arranqueresumen

    ARCOS @ UC3M35 http://duartes.org/gustavo/blog/post/how-computers-boot-up

    PC

  • Alejandro Caldern Mateos

    Acelerando el arranque en Linux

    Inicializacin asncrona del hardware

    Inicializacin asncrona de servicios

    ARCOS @ UC3M36 http://www.digitaltrendshttp://lwn.net/Articles/299483/

    Bootchart

  • Alejandro Caldern Mateos

    Acelerando el arranque en "Windows 8"

    ARCOS @ UC3M37 http://www.digitaltrends.com/computing/windows-8-boot-time-scaled-down-to-eight-seconds/

    POST/Pre-boot

    POST/Pre-bootHiberfile

    Read

    Driver

    Init

    User

    Session Init

    System Initialization (drivers, services, session 0)User

    Session Init

    Desktop ReadyWinlogon

    Desktop ReadyWinlogon

    Co

    ldB

    oo

    tW

    ind

    ow

    s 8

    fast

    sta

    rtu

    p

    Boot

    menu

    Boot

    menu

  • Alejandro Caldern Mateos

    MBR GPT

    ARCOS @ UC3M38 http://www.it-support-singapore.com/wp-content/uploads/2012/08/differenace-MBR-GPT1.jpg

    Master Boot Record

    4 part. primarias3P. + 1E. (+n U.L.)

    32 bits 2 TB/part.

    232*512 bytes/sector

    BIOS Viejo S.O. 1 MBR +

    no CRC32

    GUID Partition Table

    128 part.128 en varios SS.OO.

    64 bits 9 ZB/part.

    264*512 bytes/sector

    UEFI Nuevo S.O. 2 GPT +

    CRC32ms seguridad

  • Alejandro Caldern Mateos

    BIOS UEFI

    ARCOS @ UC3M39 http://answers.microsoft.com/en-us/windows/forum/windows8_1-security/uefi-secure-boot-in-windows-81/65d74e19-9572-4a91-85aa-57fa783f0759

  • Alejandro Caldern Mateos

    UEFIMquina de Estados Finitos para MBR + GPT

    ARCOS @ UC3M40 http://answers.microsoft.com/en-us/windows/forum/windows8_1-security/uefi-secure-boot-in-windows-81/65d74e19-9572-4a91-85aa-57fa783f0759

  • Alejandro Caldern Mateos

    GPT + UEFIEjemplo de particiones obligatorias con arranque dual

    ARCOS @ UC3M41 http://askubuntu.com/questions/350352/making-windows-8-partition-larger

    EFI

    W-recovery

    W-MSR

    W-sistema

    L-sistema

  • Alejandro Caldern Mateos

    Contenidos

    ARCOS @ UC3M42

    Introduccin

    Funcionamiento del sistema operativo Arranque del sistema

    Caractersticas y tratamiento de los eventos

    Procesos de ncleo

    Otros aspectos

    Concurrencia en los eventos

    Aadir nuevas funcionalidades al sistema

    Interrupcindesbloqueante

    Disp. MDisp. 1

    Proc. NLlamada

    bloqueante

    Proc. 1

    Llamada

    Capa superior

    Capa inferior

    Disp. 2

    Proc. 2

    Excepcin

    Interrupcin

    Disp. 3

    Proc. 3

  • Alejandro Caldern Mateos

    Tipos de eventos

    ARCOS @ UC3M43

    Llamadas al sistema

    Evento de solicitud de servicio del sistema operativo

    Excepciones

    Eventos de carcter excepcional al ejecutar una instruccin

    Interrupciones software

    Evento diferido de parte del tratamiento de evento pendiente

    Interrupciones hardware

    Eventos que vienen del hardware

    Hardware

    Usuario

  • Alejandro Caldern Mateos

    Tipos de eventosLlamadas al sistema

    ARCOS @ UC3M44

    Evento de solicitud de servicio del sistema operativo.

    Los programas de usuario acceden a los servicios del sistema operativo a travs de llamadas al sistema.

    Son vistas por los usuarios programadores como llamadas a funciones.

    Sistema Operativo

    Hardware

    Aplicacin

    m=read(fd,buff,n);

  • Alejandro Caldern Mateos

    Tipos de eventosExcepciones

    ARCOS @ UC3M45

    Eventos de carcter excepcional al ejecutar una instruccin.

    Pueden ser problemas (divisin por cero, instruccin ilegal, violacin de segmento, etc.) o avisos (fallo de pgina, etc.)

    ~ Interrupcin hardware generada por la propia CPU.

    Precisa de un conjunto de subrutinas asociadas a cada excepcin que pueda darse.

    Sistema Operativo

    Hardware

    Aplicacin

    x = y = 0; r = x/y;

  • Alejandro Caldern Mateos

    Tipos de eventosInterrupciones hardware

    ARCOS @ UC3M46

    Eventos que vienen del hardware.

    El sistema operativo tiene que atender a algo que necesita el hardware (llegada de datos, situacin excepcional, etc.)

    Precisa de un conjunto de subrutinas asociadas a cada evento que el hardware pueda solicitar.

    Sistema Operativo

    Hardware

    Aplicacin

  • Alejandro Caldern Mateos

    Tipos de eventosInterrupciones software

    ARCOS @ UC3M47

    Evento para tratar en diferido la parte no crtica del tratamiento asociada a un evento.

    Se pospone parte del tratamiento de un evento:

    Por esperar a circunstancias oportunas.

    Se hayan tratado el resto de eventos ms urgentes.

    Sistema Operativo

    Hardware

    Aplicacin

  • Alejandro Caldern Mateos

    Metfora: la tienda de libros

    ARCOS @ UC3M48

    Dispositivos hardware proveedores.

    Ordenadorla tienda de libros.

    CPU y RAMvendedor y estanteras.

    Sistema operativoLibro de instrucciones que ha de seguir el vendedor.

    Procesoscompradores.

    Sis

    tem

    a O

    pe

    rati

    voH

    ard

    wa

    reA

    pli

    caci

    on

    es

  • Alejandro Caldern Mateos

    Metfora: la tienda de librosLlamada al sistema

    ARCOS @ UC3M49

    El comprador pide un libro

    El proceso solicita una llamada al sistema

    El vendedor pide el libro al proveedor correspondiente

    El sistema operativo solicita al disco un bloque de datos

    El vendedor pone en espera al comprador hasta tener el libro para atender a otras situaciones

    El sistema operativo bloquea el proceso y ejecuta mientras otro proceso (o tarea pendiente)

    Sis

    tem

    a O

    pe

    rati

    voH

    ard

    wa

    reA

    pli

    caci

    on

    es

  • Alejandro Caldern Mateos

    Metfora: la tienda de librosLlamada al sistema

    ARCOS @ UC3M50

    El comprador pide un libro

    El proceso solicita una llamada al sistema

    El vendedor pide el libro al proveedor correspondiente

    El sistema operativo solicita al disco un bloque de datos

    El vendedor pone en espera al comprador hasta tener el libro para atender a otras situaciones

    El sistema operativo bloquea el proceso y ejecuta mientras otro proceso (o tarea pendiente)

    Sis

    tem

    a O

    pe

    rati

    voH

    ard

    wa

    reA

    pli

    caci

    on

    es

  • Alejandro Caldern Mateos

    Metfora: la tienda de librosinterrupcin hardware

    ARCOS @ UC3M51

    El proveedor avisa por telfono que est en la puerta pero no puede aparcar (ha de salir el vendedor)

    El disco manda una interrupcin hardware

    El vendedor se hace con el libro que colocar en una estantera temporal, junto con un post-itque lo etiqueta como a entregar

    El sistema operativo copia el bloque de disco a memoria y activa una interrupcin software

    Sis

    tem

    a O

    pe

    rati

    voH

    ard

    wa

    reA

    pli

    caci

    on

    es

  • Alejandro Caldern Mateos

    Metfora: la tienda de librosinterrupcin hardware

    ARCOS @ UC3M52

    El proveedor avisa por telfono que est en la puerta pero no puede aparcar (ha de salir el vendedor)

    El disco manda una interrupcin hardware

    El vendedor se hace con el libro que colocar en una estantera temporal, junto con un post-itque lo etiqueta como a entregar

    El sistema operativo copia el bloque de disco a memoria y activa una interrupcin software

    Sis

    tem

    a O

    pe

    rati

    voH

    ard

    wa

    reA

    pli

    caci

    on

    es

  • Alejandro Caldern Mateos

    Metfora: la tienda de librosinterrupcin software

    ARCOS @ UC3M53

    Cuando nada ms prioritario hay que hacer, se atiende a las entregas pendientes

    Si no hay evento prioritario, se atiende a las interrupciones software

    Para cada elementos pendientes de entregar se avisa al comprador de que puede recogerlo

    Se pasa el proceso a listo para ejecutar, cuando se ejecute copiar los datos de memoria

    Sis

    tem

    a O

    pe

    rati

    voH

    ard

    wa

    reA

    pli

    caci

    on

    es

  • Alejandro Caldern Mateos

    Metfora: la tienda de librosinterrupcin software

    ARCOS @ UC3M54

    Cuando nada ms prioritario hay que hacer, se atiende a las entregas pendientes

    Si no hay evento prioritario, se atiende a las interrupciones software

    Para cada elementos pendientes de entregar se avisa al comprador de que puede recogerlo

    Se pasa el proceso a listo para ejecutar, cuando se ejecute copiar los datos de memoria

    Sis

    tem

    a O

    pe

    rati

    voH

    ard

    wa

    reA

    pli

    caci

    on

    es

  • Alejandro Caldern Mateos

    Metfora: la tienda de librosexcepcin

    ARCOS @ UC3M55

    Un comprador quiere, se le invita a abandonar el local y luego se contina atendiendo al resto

    Se produce una excepcin mientras se ejecuta un proceso, se mata al proceso

    Se estropea la caja registradora, hay que cerrar la tienda

    Se produce una excepcin grave mientras se ejecuta el sistema operativo, kernel-panic

    Sis

    tem

    a O

    pe

    rati

    voH

    ard

    wa

    reA

    pli

    caci

    on

    es

  • Alejandro Caldern Mateos

    Ejemplo simplificado

    ARCOS @ UC3M56

    S.O.(kernel)

    HW.

    App.

    CPU Disco RAM

    char buffer[1024];

    read(fd,buffer) buffer[2048]=\0;

  • Alejandro Caldern Mateos

    Ejemplo simplificado

    ARCOS @ UC3M57

    S.O.(kernel)

    HW.

    App.

    ll. sistema

    CPU Disco RAM

    Pedir bloque Ejecutar Pi+1

    char buffer[1024];

    read(fd,buffer) buffer[2048]=\0;

  • Alejandro Caldern Mateos

    Ejemplo simplificado

    ARCOS @ UC3M58

    S.O.(kernel)

    HW.

    App.

    ll. sistema

    CPU Disco RAM

    Pedir bloque Ejecutar Pi+1

    int. hw

    Copiar a RAM Act. int. soft.

    char buffer[1024];

    read(fd,buffer) buffer[2048]=\0;

  • Alejandro Caldern Mateos

    Ejemplo simplificado

    ARCOS @ UC3M59

    S.O.(kernel)

    HW.

    App.

    ll. sistema

    CPU Disco RAM

    Pedir bloque Ejecutar Pi+1

    int. hw

    Copiar a RAM Act. int. soft.

    int. sw

    Pi listo

    char buffer[1024];

    read(fd,buffer) buffer[2048]=\0;

  • Alejandro Caldern Mateos

    Ejemplo simplificado

    ARCOS @ UC3M60

    S.O.(kernel)

    HW.

    App.

    char buffer[1024];

    read(fd,buffer) buffer[2048]=\0;

    ll. sistema

    CPU Disco RAM

    Pedir bloque Ejecutar Pi+1

    int. hw

    Copiar a RAM Act. int. soft.

    int. sw

    Pi listo

    excep.

    SIGSEGV

  • Alejandro Caldern Mateos

    Contenidos

    ARCOS @ UC3M61

    Introduccin

    Funcionamiento del sistema operativo Arranque del sistema

    Caractersticas y tratamiento de los eventos

    Procesos de ncleo

    Otros aspectos

    Concurrencia en los eventos

    Aadir nuevas funcionalidades al sistema

    Interrupcindesbloqueante

    Disp. MDisp. 1

    Proc. NLlamada

    bloqueante

    Proc. 1

    Llamada

    Capa superior

    Capa inferior

    Disp. 2

    Proc. 2

    Excepcin

    Interrupcin

    Disp. 3

    Proc. 3

  • Alejandro Caldern Mateos

    Clasificacin de los eventos

    ARCOS @ UC3M62

    Sncronos Asncronos

    Hardware

    Software

  • Alejandro Caldern Mateos

    Clasificacin de los eventos

    ARCOS @ UC3M63

    Sncronos Asncronos

    Hardware Excepciones Interrupciones hardware

    Software Llamada al sistema Interrupciones software

    Generadas por software o hardware:

    Generadas por hardware

    La solicitud y el vector se obtiene del hardware implicado

    Generadas por software

    La solicitud y el vector componen una instruccin ensamblador

  • Alejandro Caldern Mateos

    Clasificacin de los eventos

    ARCOS @ UC3M64

    Sncronos Asncronos

    Hardware Excepciones Interrupciones hardware

    Software Llamada al sistema Interrupciones software

    Eventos sncronos y asncronos:

    Eventos sncronos

    Su activacin es previsible, refirindose al cdigo del proceso actual

    Ejecucin en el contexto del proceso solicitante

    Eventos asncronos

    Su activacin es imprevisible y referida a cualquier (o ningn) proceso

    Ejecucin en el contexto de un proceso no relacionado con la interrupcin

  • Alejandro Caldern Mateos

    Caractersticas bsicas

    ARCOS @ UC3M65

    Modo de ejecucin previo Generadas por

    Interrupcin hardware

    Excepciones

    Llamadas al sistema

    Software

  • Alejandro Caldern Mateos

    Caractersticas bsicas

    ARCOS @ UC3M66

    Modo de ejecucin previo Generadas por

    Interrupcin hardware

    Puede ser usuario o sistema

    NO influye en el tratamiento

    Dispositivos de E/S

    Interrupcin entre las CPU (IPI)

    Excepciones Puede ser usuario o sistema

    SI influye en el tratamiento

    La CPU (int. hw. de CPU)

    Normalmente errores de programacin, NO siempre (fallo de pgina, depuracin, etc.)

    Llamadas al sistema

    Siempre usuario Las aplicaciones

    Software Siempre sistema El tratamiento de cualquiera de

    los eventos anteriores: usado para la parte no crtica

  • Alejandro Caldern Mateos

    Relacin entre eventos

    ARCOS @ UC3M67

    Componentes que tratan eventos sncronos

    Ms relacionados con los procesos

    Componentes que tratan eventos asncronos

    Ms relacionados con los dispositivos

    Existen tareas que involucran ambos tipos de eventos.

    Ej.: acceso al disco (llamada lectura + interrupcin del disco)

    Interrupcindesbloqueante

    Disp. MDisp. 1

    Proc. NLlamada

    bloqueante

    Proc. 1

    Llamada

    Capa superior

    Capa inferior

    Disp. 2

    Proc. 2

    Excepcin

    Interrupcin

    Disp. 3

    Proc. 3

  • Alejandro Caldern Mateos

    Contenidos

    ARCOS @ UC3M68

    Introduccin

    Funcionamiento del sistema operativo Arranque del sistema

    Caractersticas y tratamiento de los eventos

    Procesos de ncleo

    Otros aspectos

    Concurrencia en los eventos

    Aadir nuevas funcionalidades al sistema

    Interrupcindesbloqueante

    Disp. MDisp. 1

    Proc. NLlamada

    bloqueante

    Proc. 1

    Llamada

    Capa superior

    Capa inferior

    Disp. 2

    Proc. 2

    Excepcin

    Interrupcin

    Disp. 3

    Proc. 3

  • Alejandro Caldern Mateos

    Gestin de eventos

    ARCOS @ UC3M69

    El esquema del S.O. busca ser genrico e independiente de la arq. de hw. Linux sin prioridad (SPARC si soporta) y Windows con prioridad (Intel no lo soporta)

  • Alejandro Caldern Mateos

    Gestin de eventos

    ARCOS @ UC3M70

    El esquema del S.O. busca ser genrico e independiente de la arq. de hw. Linux sin prioridad (SPARC si soporta) y Windows con prioridad (Intel no lo soporta)

    Todos los eventos se tratan de forma similar (~int. hw.) Se ha ido introduciendo ya la gestin de eventos

  • Alejandro Caldern Mateos

    Gestin de eventos

    ARCOS @ UC3M71

    El esquema del S.O. busca ser genrico e independiente de la arq. de hw. Linux sin prioridad (SPARC si soporta) y Windows con prioridad (Intel no lo soporta)

    Todos los eventos se tratan de forma similar (~int. hw.) Se ha ido introduciendo ya la gestin de eventos

    Se salva el estado en la pila de sistema

    Tpicamente los registros PC y estado

    La CPU pasa en modo privilegiado y salta a la rutina de tratamiento asociada

    Salva registros extra si es necesario

    La rutina de manejo del evento trata el evento

    Restaura registros extra si es necesario

    La rutina de manejo del evento termina: RETI

    Se restaura el estado salvado en pila y se vuelve al modo previo

    kernel

    Servicios

    App

    Hardware

  • Alejandro Caldern Mateos

    Gestin de eventos

    El evento se trata en el contexto del proceso activo

    El mapa de memoria activo del proceso en ejecucin,

    incluso an no teniendo relacin con el evento.

    El sistema debe usar dos pilas independientes:

    Pila de usuario: para modo usuario

    Pila de sistema: para modo sistema

    ARCOS @ UC3M72

    kernel

    Servicios

    App

    Hardware

    Detalle 1 > No se tratan eventos durante el arranque

    Modo sistema, deshabilitada las interrupciones y MMU inactiva

    Detalle 2 > Cuando ocurre un evento, entra el S.O para tratarlo:

    Se cambia de modo (a modo privilegiado)

    pero NO necesariamente hay cambio de contexto

    Detalle 3 > Puede saltar un evento durante el tratamiento de otro

    Si prioritario: se apila el actual y se trata el nuevo; si no, espera la finalizacin.

  • Alejandro Caldern Mateos

    Gestin de eventos

    ARCOS @ UC3M73

    Interrupcin hardware: Tratamiento general Ejemplo: W y L

    Excepcin: Tratamiento general

    Llamada al sistema: Tratamiento general Ejemplo: W y L

    Interrupcin software: Tratamiento general Ejemplo: W y L

  • Alejandro Caldern Mateos

    Interrupciones hardwarecaractersticas

    ARCOS @ UC3M74

    Notifican eventos asncronos que viene del hardware

    Modo de ejecucin previo: Puede ser usuario o sistema (NO influye en el tratamiento)

    Generadas por:

    Dispositivos de E/S

    Condiciones crticas en el sistema (ej.: corte energa)

    Interrupcin entre procesadores (IPI)

  • Alejandro Caldern Mateos

    Interrupciones hardwaretratamiento (1/5)

    ARCOS @ UC3M75

    Modo Usuario

    Modo Kernel

    IDTManejador de

    dispositivo X

    int main (int argc, char **argv){

    /* instalar los manejadores para los vectores de interrupcin */instal_man_int(EXC_ARITMETICA, excepcionAritmetica); instal_man_int(EXC_MEMORIA, excepcionMemoria); instal_man_int(INT_RELOJ, interrupcionReloj ); instal_man_int(INT_DISPOSITIVOS, interrupcionDispositivos ); instal_man_int(LLAM_SISTEMA, tratarLlamadaSistema); instal_man_int(INT_SW, interrupcionSoftware);

  • Alejandro Caldern Mateos

    Interrupciones hardwaretratamiento (2/5)

    ARCOS @ UC3M76

    Modo Usuario

    Modo Kernel

    IDT

    #include "servicios.h"

    int main (){

    for (int i=0; i

  • Alejandro Caldern Mateos

    Interrupciones hardwaretratamiento (3/5)

    ARCOS @ UC3M77

    Modo Usuario

    Modo Kernel

    IDT

    Int. hw.

    CPU

    Primero salva estado bsico (PC, RE, SP) en la pila de sistema

    La CPU pasa en modo privilegiado y salta a la rutina de tratamiento asociada

    Manejador de

    dispositivo X

    #include "servicios.h"

    int main (){

    for (int i=0; i

  • Alejandro Caldern Mateos

    Interrupciones hardwaretratamiento (4/5)

    ARCOS @ UC3M78

    Modo Usuario

    Modo Kernel

    IDT

    Int. hw.

    CPU

    void interrupcionDispositivo (){

    Salvar estado (si es necesario)

    La subrutina trata el evento:

    Realiza lo urgente

    Programa una tarea pendiente (si necesario)

    Restaura el estado (si necesario)

    Ejecuta instruccin de retorno de interrupcin (RETI)

    Restaura estado bsico y modo.}

    Manejador de

    dispositivo X

  • Alejandro Caldern Mateos

    Interrupciones hardwaretratamiento (5/5)

    ARCOS @ UC3M79

    Modo Usuario

    Modo Kernel

    IDT

    #include "servicios.h"

    int main (){

    for (int i=0; i

  • Alejandro Caldern Mateos

    Interrupciones hardwaretratamiento en Windows

    ARCOS @ UC3M80

    Avisa perif. retire IRQ

    Aqu: mnimo del servicio:Perif: Estado?, siguiente operacin

    Call DPC grueso del servicio

    Retorno

    Inhibe las Interrupciones

    Salva el estado de la ejecucin

    Inhibe el nivel IRQL atendido y los inferiores

    Localiza e invoca la correspondiente ISR [RTI]

    Retira la interrupcin

    Restaura el estado de la mquina

    Interrupt Dispatch Routine

    Interrupt Service Routine

    Kernel

    Interrupcin!

    Usuario/kernel

    Inside Windows 2000 (pgina 104)

    HighPower Fail

    Inter-processor InterruptClock

    Dispatch/DPC

    Device n

    Device 1

    APCPassive

    ...

    31302928

    012

    Hardware Interrupts

    Software Interrupts

    Normal Thread Execution

  • Alejandro Caldern Mateos

    Interrupciones hardwaretratamiento en Linux

    ARCOS @ UC3M81 http://chxxxyg.blog.163.com/blog/static/1502811932010627015098/

  • Alejandro Caldern Mateos

    Excepcionescaractersticas

    ARCOS @ UC3M82

    Eventos sncronos de carcter excepcional al ejecutar una instruccin

    Modo de ejecucin previo: Puede ser usuario o sistema (SI influye en el tratamiento)

    Generadas por:

    El hardware, normalmente errores de programacin NO siempre son errores (fallo de pgina, depuracin, etc.)

  • Alejandro Caldern Mateos

    Excepcionestratamiento (1/4)

    ARCOS @ UC3M83

    Modo Usuario

    Modo Kernel

    Rutina de tratamiento

    de excepcin aritmtica

    IDTint main (int argc, char **argv){

    /* instalar los manejadores para los vectores de interrupcin */instal_man_int(EXC_ARITMETICA, excepcionAritmetica ); instal_man_int(EXC_MEMORIA, excepcionMemoria ); instal_man_int(INT_RELOJ, interrupcionReloj); instal_man_int(INT_DISPOSITIVOS, interrupcionDispositivos); instal_man_int(LLAM_SISTEMA, tratarLlamadaSistema); instal_man_int(INT_SW, interrupcionSoftware);

  • Alejandro Caldern Mateos

    Excepcionestratamiento (2/4)

    ARCOS @ UC3M84

    #include "servicios.h"

    int main () {double resultado;

    resultado = 0 / 0;printf(resultado = %d\n,resultado);

    return 0;}

    Modo Usuario

    Modo Kernel

    Aplicacin

    Rutina de tratamiento

    de excepcin aritmtica

    IDT

  • Alejandro Caldern Mateos

    Excepcionestratamiento (3/4)

    ARCOS @ UC3M85

    #include "servicios.h"

    int main () {double resultado;

    resultado = 0 / 0;printf(resultado = %d\n,resultado);

    return 0;}

    Modo Usuario

    Modo Kernel

    Aplicacin

    IDT

    excepcin

    CPU

    Rutina de tratamiento

    de excepcin aritmtica

    Primero salva estado bsico (PC, RE, SP) en la pila de sistema

    La CPU pasa en modo privilegiado y salta a la rutina de tratamiento asociada

  • Alejandro Caldern Mateos

    Excepcionestratamiento (4/4)

    ARCOS @ UC3M86

    Modo Usuario

    Modo Kernel

    Aplicacin

    IDT

    Rutina de tratamiento

    de excepcin aritmticaexcepcin

    CPU

    Si es un error:

    Si el nivel previo de la CPU era de sistema:

    Pnico: error en el cdigo del S.O. => mensaje + detener el S.O.

    Si el nivel previo de la CPU era de usuario:

    Si est siendo depurado, se notifica a depurador

    Si el programa establece un manejador de la excepcin, ejecutarlo

    En caso contrario, se aborta el proceso

    Si NO es un error: (Ej.: fallo de pgina previsto)

    Se realiza la tarea prevista (Ej.: asignar una nueva pagina)Da igual el nivel previo de ejecucin

  • Alejandro Caldern Mateos

    Llamadas al sistemacaractersticas

    ARCOS @ UC3M87

    Eventos sncronos de solicitud de servicio del sistema operativo con una instruccin no privilegiada

    Modo de ejecucin previo: Siempre usuario

    Generadas por:

    Los programas

  • Alejandro Caldern Mateos

    Llamadas al sistematratamiento

    ARCOS @ UC3M88

    int main (int argc, char **argv){

    /* instalar los manejadores para los vectores de interrupcin */instal_man_int(EXC_ARITMETICA, excepcionAritmetica); instal_man_int(EXC_MEMORIA, excepcionMemoria); instal_man_int(INT_RELOJ, interrupcionReloj); instal_man_int(INT_DISPOSITIVOS, interrupcionDispositivos); instal_man_int(LLAM_SISTEMA, tratarLlamadaSistema ); instal_man_int(INT_SW, interrupcionSoftware);

  • Alejandro Caldern Mateos

    Llamadas al sistematratamiento (1/9)

    ARCOS @ UC3M89

    #include "servicios.h"

    int main () {

    if (crear_proceso("excep_arit")

  • Alejandro Caldern Mateos

    Llamadas al sistematratamiento (2/9)

    ARCOS @ UC3M90

    int crear_proceso (char *prog) ;int terminar_proceso () ;int funcion_XXXXX (.. args..) ;

    usuario/servicios.h

    Llamadas al

    sistema

    sis_XXXXX

    Modo Usuario

    Modo Kernel

    Aplicacin

    Servicios

    del S.O.

    IDT

  • Alejandro Caldern Mateos

    Llamadas al sistematratamiento (3/9)

    ARCOS @ UC3M91

    int terminar_proceso () {

    return llamsis(TERMINAR_PROCESO, 0);}

    int funcion_XXXXX (.. args..) {return llamsis(FUNCION_XXXXX , ...);

    }

    usuario/servicios.c

    Llamadas al

    sistema

    sis_XXXXX

    Modo Usuario

    Modo Kernel

    Aplicacin

    Servicios

    del S.O.

    IDT

  • Alejandro Caldern Mateos

    int llamsis (int llamada, int nargs,//args) {int i;

    escribir_registro(0, llamada );for (i=1; nargs; nargs--, i++)

    escribir_registro(i, args[i]);trap (); // genera int.return leer_registro(0);

    }

    Llamadas al sistematratamiento (4/9)

    ARCOS @ UC3M92

    usuario/krn.c

    Llamadas al

    sistema

    sis_XXXXX

    Modo Usuario

    Modo Kernel

    Aplicacin

    Servicios

    del S.O.

    IDT

  • Alejandro Caldern Mateos

    int llamsis (int llamada, int nargs,//args) {int i;

    escribir_registro(0, llamada );for (i=1; nargs; nargs--, i++)

    escribir_registro(i, args[i]);trap (); // genera int.return leer_registro(0);

    }

    Llamadas al sistematratamiento (5/9)

    ARCOS @ UC3M93

    usuario/krn.c

    Llamadas al

    sistema

    sis_XXXXX

    Modo Usuario

    Modo Kernel

    Aplicacin

    Servicios

    del S.O.

    IDT

    Int.

    CPU

    Primero salva estado bsico (PC, RE, SP) en la pila de sistema

    La CPU pasa en modo privilegiado y salta a la rutina de tratamiento asociada

  • Alejandro Caldern Mateos

    Llamadas al sistematratamiento (6/9)

    ARCOS @ UC3M94

    Llamadas al

    sistema

    sis_XXXXX

    Modo Usuario

    Modo Kernel

    Aplicacin

    Servicios

    del S.O.

    void tratarLlamadaSistema (){

    int numServicio, ret;

    numServicio =leer_registro(0);if (numServicio < NUMERO_SERVICIOS)

    ret=(tablaServicios[numServicio ].funServicio)();else ret=-1; /* servicio no existente */escribir_registro(0,ret);

    }

    nucleo/servicios.c

    IDT

    Int.

    CPU

  • Alejandro Caldern Mateos

    #define NUMERO_SERVICIOS 14

    #define CREAR_PROCESO 0#define TERMINAR_PROCESO 1#define ABRIR 2#define FUNCION_XXXXX 13

    Llamadas al sistematratamiento (7/9)

    ARCOS @ UC3M95

    nucleo/servicios.h

    Llamadas al

    sistema

    sis_XXXXX

    Modo Usuario

    Modo Kernel

    Aplicacin

    Servicios

    del S.O.

    IDT

  • Alejandro Caldern Mateos

    ...

    servicio tablaServicios [NUMERO_SERVICIOS] = {{sis_crearProceso},{sis_terminarProceso},

    {sis_funcion_XXXXX } } ;

    Llamadas al sistematratamiento (8/9)

    ARCOS @ UC3M96

    nucleo/servicios.c

    Llamadas al

    sistema

    sis_XXXXX

    Modo Usuario

    Modo Kernel

    Aplicacin

    Servicios

    del S.O.

    IDT

  • Alejandro Caldern Mateos

    int sis_terminarProceso (){

    printk("-> FIN PROCESO %d\n", procesoActual->id);liberarProceso();return (0); /* no debera llegar aqu */

    }int sis_funcion_XXXXX(){

    }

    Llamadas al sistematratamiento (9/9)

    ARCOS @ UC3M97

    nucleo/servicio_xxxxx.c

    Llamadas al

    sistema

    sis_XXXXX

    Modo Usuario

    Modo Kernel

    Aplicacin

    Servicios

    del S.O.

    IDT

  • Alejandro Caldern Mateos

    Llamadas al sistematratamiento en Linux (1/7)

    ARCOS @ UC3M98

    void __init trap_init(void){

    set_intr_gate(X86_TRAP_DE, divide_error);set_intr_gate(X86_TRAP_NP, segment_not_present);set_intr_gate(X86_TRAP_GP, general_protection);set_intr_gate(X86_TRAP_SPURIOUS, spurious_interrupt_bug);set_intr_gate(X86_TRAP_MF, coprocessor_error);set_intr_gate(X86_TRAP_AC, alignment_check);

    #ifdef CONFIG_IA32_EMULATIONset_system_intr_gate(IA32_SYSCALL_VECTOR, ia32_syscall);set_bit(IA32_SYSCALL_VECTOR, used_vectors);

    #endif

    #ifdef CONFIG_X86_32set_system_trap_gate(SYSCALL_VECTOR, &system_call);set_bit(SYSCALL_VECTOR, used_vectors);

    #endif

    /usr/src/linux/arch/x86/kernel/traps.c

  • Alejandro Caldern Mateos

    Llamadas al sistematratamiento en Linux (2/7)

    ARCOS @ UC3M99

    #include

    int main (int argc, char *argv[]){

    char *src=testing the system call;char dest[40];int ret;

    ret = syscall(222,dest,src);printf("copied string: %s\ncode: %d\n",dest,ret) ;

    }

    /usr/src/linux/test/test1.c

    sis_222

    Modo Usuario

    Modo Kernel

    Aplicacin

    libc.so

    IDT

    _sys_call_table

    _system_call( )

  • Alejandro Caldern Mateos

    Llamadas al sistematratamiento en Linux (3/7)

    ARCOS @ UC3M100

    int syscall ( ){

    MOVE %eax, 222MOVE %ebx, argv-1MOVE %ecx, argv-2sysenter%eax = valor devueltoRET

    }

    /usr/src/libc/

    sis_222

    Modo Usuario

    Modo Kernel

    Aplicacin

    libc.so

    IDT

    _sys_call_table

    _system_call( )

  • Alejandro Caldern Mateos

    Llamadas al sistematratamiento en Linux (3/7)

    ARCOS @ UC3M101

    int syscall ( ){

    MOVE %eax, 222MOVE %ebx, argv-1MOVE %ecx, argv-2sysenter%eax = valor devueltoRET

    }

    /usr/src/libc/

    sis_222

    Modo Usuario

    Modo Kernel

    Aplicacin

    libc.so

    IDT

    _sys_call_table

    _system_call( )

    Int.

    CPU

  • Alejandro Caldern Mateos

    Llamadas al sistematratamiento en Linux (4/7)

    ARCOS @ UC3M102

    ENTRY( system_call ) Salva estado

    En pila de sistema Comprueba los parmetros de llamada

    Linux: registros, Windows: pila sys_call_table(%eax) ret_from_sys_call

    Restaura estado Replanificacin

    /usr/src/linux/arch/x86/kernel/entry_32.S

    sis_222

    Modo Usuario

    Modo Kernel

    Aplicacin

    libc.so

    IDT

    _sys_call_table

    _system_call( )

  • Alejandro Caldern Mateos

    Llamadas al sistematratamiento en Linux (5/7)

    ARCOS @ UC3M103

    220 i386 getdents64 sys_getdents64 compat_sys_getdents64221 i386 fcntl64 sys_fcntl64 compat_sys_fcntl64222 i386 kstrcpy sys_kstrcpy# 223 is unused224 i386 gettid sys_gettid225 i386 readahead sys_readahead sys32_readahead226 i386 setxattr sys_setxattr

    /usr/src/linux/arch/x86/syscalls/syscall_32.tbl

    sis_222

    Modo Usuario

    Modo Kernel

    Aplicacin

    libc.so

    IDT

    _sys_call_table

    _system_call( )

  • Alejandro Caldern Mateos

    Llamadas al sistematratamiento en Linux (6/7)

    ARCOS @ UC3M104

    539 x32 process_vm_readv compat_sys_process_vm_readv540 x32 process_vm_writev compat_sys_process_vm_writev541 x32 setsockopt compat_sys_setsockopt542 x32 getsockopt compat_sys_getsockopt

    543 x32 kstrcpy sys_kstrcpy

    /usr/src/linux/arch/x86/syscalls/syscall_64.tbl

    sis_222

    Modo Usuario

    Modo Kernel

    Aplicacin

    libc.so

    IDT

    _sys_call_table

    _system_call( )

  • Alejandro Caldern Mateos

    Llamadas al sistematratamiento en Linux (7/7)

    ARCOS @ UC3M105

    SYSCALL_DEFINE2(kstrcpy, char *, dst, char *, src){

    int i=0; char c;

    do { get_user(c, src+i); put_user(c, dest+i); i++; } while (c != 0);

    printk ("++ kstrcpy: done\n");return 1;

    }

    /usr/src/linux/kernel/sys.c

    sis_222

    Modo Usuario

    Modo Kernel

    Aplicacin

    libc.so

    IDT

    _sys_call_table

    _system_call( )

  • Alejandro Caldern Mateos

    Llamadas al sistematratamiento en Windows

    ARCOS @ UC3M106

    Aplicacin

    Kernel32.dll

    Ntdll.dll

    NtCreateFile

    NtReadFile

    NtClose

    SSDTable

    Modo Usuario

    Modo Kernel

    System

    Service

    Dispatcher (SSD)

  • Alejandro Caldern Mateos

    Interrupcin softwarecaractersticas

    ARCOS @ UC3M107

    Eventos asncronos para tratar en diferido parte de la tarea asociada a un evento no crtica Por esperar a circunstancias oportunas

    Se hayan tratado el resto de eventos ms urgentes

    Modo de ejecucin previo: Siempre sistema

    Generadas por:

    El tratamiento de cualquiera de los eventos anteriores, se prepara una int. soft. para la parte no crtica

  • Alejandro Caldern Mateos

    Interrupcin softwaretratamiento

    ARCOS @ UC3M108

    int main (int argc, char **argv){

    /* instalar los manejadores para los vectores de interrupcin */instal_man_int(EXC_ARITMETICA, excepcionAritmetica); instal_man_int(EXC_MEMORIA, excepcionMemoria); instal_man_int(INT_RELOJ, interrupcionReloj); instal_man_int(INT_DISPOSITIVOS, interrupcionDispositivos); instal_man_int(LLAM_SISTEMA, tratarLlamadaSistema); instal_man_int(INT_SW, interrupcionSoftware );

  • Alejandro Caldern Mateos

    Rutina de tratamiento

    de interrupcin de teclado

    Interrupcin hardwaretratamiento (1/2)

    ARCOS @ UC3M109

    Modo Usuario

    Modo Kernel

    IDT

    Int. hw.

    CPU

    void Int_hardware_teclado ( idDispositivo ){

    idDispositivo -> HardwareID Tecla = leerPuerto(HardwareID) Insertar(Tecla, DatosTeclado.Buffer) insertarTareaPend(&listaTareasPend,

    Int_software_teclado); activar_int_SW();

    }

  • Alejandro Caldern Mateos

    Rutina de tratamiento

    de interrupcin de teclado

    Interrupcin hardwaretratamiento (1/2)

    ARCOS @ UC3M110

    Modo Usuario

    Modo Kernel

    IDT

    Int. hw.

    CPU

    void Int_hardware_teclado ( idDispositivo ){

    idDispositivo -> HardwareID Tecla = leerPuerto(HardwareID) Insertar(Tecla, DatosTeclado.Buffer) insertarTareaPend(&listaTareasPend,

    Int_software_teclado); activar_int_SW();

    }

  • Alejandro Caldern Mateos

    Interrupcin softwaretratamiento (1/2)

    ARCOS @ UC3M111

    Modo Usuario

    Modo Kernel

    Rutina de tratamiento

    de interrupcin software

    Interrupcin con la mnima prioridad: se ejecutar

    cuando no haya nada ms urgente (crtico)

    void Int_software_teclado ( idDispositivo ){

    idDispositivo -> DatosTeclado P = ExtraerBCP(&(DatosTeclado.esperando)) Si P != NULL

    P.estado = LISTO Insertar(&ListaListos, P);

    }

  • Alejandro Caldern Mateos

    Rutina de tratamiento

    de interrupcin de teclado

    Interrupcin hardwaretratamiento (2/2)

    ARCOS @ UC3M112

    Modo Usuario

    Modo Kernel

    IDT

    Int. hw.

    CPU

    void Int_hardware_teclado ( idDispositivo ){

    idDispositivo -> HardwareID Tecla = leerPuerto(HardwareID) Insertar(Tecla, DatosTeclado.Buffer) insertarTareaPend(&listaTareasPend,

    Int_software_teclado); activar_int_SW();

    }

  • Alejandro Caldern Mateos

    Interrupcin softwaretratamiento (2/2)

    ARCOS @ UC3M113

    Modo Usuario

    Modo Kernel

    IDT

    Rutina de tratamiento

    de interrupcin software

    /* Tratamiento de interrupciones software */void interrupcionSoftware (){

    void (*funcion)(void *);void *datos = NULL;

    Mientras ( hayTareasPend(ListaTareasPend) ) {

    extraerPrimeraTareaPend(&(listaTareasPend), &(funcion), &(datos));funcion(datos);

    }}

    Interrupcin con la mnima prioridad: se ejecutar

    cuando no haya nada ms urgente (crtico)

  • Alejandro Caldern Mateos

    Interrupcin softwaretipos de tratamiento en Linux

    ARCOS @ UC3M114

    Bottom-Halves (BH):

    Es la 1 implementacin de int. software en Linux. (eliminada en k2.6.x)

    Se ejecutan siempre en serie (da igual # CPU). Solo hay 32 manejadores (registrados previamente).

    Softirqs:

    Softirq del mismo tipo se pueden ejecutar en paralelo en diferentes CPU. Solo hay 32 manejadores (registrados previamente).

    El system timer usa softirqs.

    Tasklets

    Similar a softirqs salvo que no existe lmite y ms fcil de programar.

    Todos los tasklets se canalizan a travs de un softirq, de forma que un mismo tasklet no puede ejecutarse a la vez en varias CPU.

    Work queues

    El top-half se dice que ejecuta en contexto de una interrupcin => no est asociado a un proceso.Sin dicha asociacin el cdigo no puede dormir o bloquearse.

    Las Work queues ejecutan en contexto de un proceso y tienen habilidades de un hilo de kernel. Tienen un conjunto de funciones tiles para creacin, planificacin, etc.

    http://www.ibm.com/developerworks/linux/library/l-tasklets/index.html

  • Alejandro Caldern Mateos

    Interrupcin softwaretipos de tratamiento en Windows

    ARCOS @ UC3M115

    Deferral Procedure Calls (DPCs):

    Comunes a todo el sistema operativo (una sola cola por CPU)

    Realizan labores diferidas que han sido programadas:

    Completar operaciones de E/S de los controladores.

    Procesamiento expiracin de timers.

    Liberacin de threads en espera.

    Forzar la replanificacin al expirar una rodaja de tiempo.

    Asynchronous Procedure Calls (APCs):

    Particulares a cada thread (cada hilo tiene su propia cola).

    El thread debe dar su permiso para que se ejecuten sus APC.

    Pueden ejecutarse desde modo sistema o modo usuario.

    Sistema: permite ejecutar cdigo del sistema operativo en el contexto de un thread.

    Usuario: utilizado por algunas API de E/S en Win32

  • Alejandro Caldern Mateos

    Interrupcin softwaretipos de tratamiento en Windows: las DPC

    ARCOS @ UC3M116

    Usuario

    Kernel

    DPC

    DPC

    DPC

    Cola de DPCsobjects(p.ej., cdigo a ejecutar): nica por procesador:

    IDT

    dispatch/DPC

    APC

    Dispatcher

    nivel IRQL baja a nivel inferior a DPCs

    Hasta que se vace la cola baja nivel IRQL

  • Alejandro Caldern Mateos

    Contenidos

    ARCOS @ UC3M117

    Introduccin

    Funcionamiento del sistema operativo Arranque del sistema

    Caractersticas y tratamiento de los eventos

    Procesos de ncleo

    Otros aspectos

    Concurrencia en los eventos

    Aadir nuevas funcionalidades al sistema

    Clock Interrupt Disk Interrupt

    System Call Page Fault

    Process Table

    Disk Queue

    EnvelopeMemory

    Management

    Scheduler

    Disk Driver

  • Alejandro Caldern Mateos

    Contextos donde est presente el S.O.

    ARCOS @ UC3M118

    Arranque del sistema

    Tratamiento de eventos Interrupciones hardware

    Excepciones

    Llamadas al sistema

    Interrupciones software

    Procesos de ncleo

    Realiza labores del sistema operativo que se hacen mejor en el contexto de un proceso independiente

    Ej.: pueden realizar operaciones de bloqueo

    Compiten con el resto de procesos por la CPU

    El planificador suele otorgarles una prioridad mayor

  • Alejandro Caldern Mateos

    Distintos tipos de procesos

    ARCOS @ UC3M119

    Procesos de usuario

    Con los privilegios de un usuario no administrador

    Solo ejecuta en modo privilegiado si:

    Procesa una llamada al sistema que ha invocado (fork, exit, etc.)

    Trata una excepcin que ha generado (0/0, *(p=null), etc.)

    Trata una interrupcin que se ha producido mientras ejecutaba (TCPpk, )

    Procesos de sistema

    Con privilegios de un usuario administrador

    Ejecuta en modo privilegiado igual que un proceso de usuario

    Procesos de ncleo

    Pertenecen al kernel (no a un usuario)

    Siempre se ejecutan en modo privilegiado

  • Alejandro Caldern Mateos

    Procesos de ncleoEjemplo en Linux

    ARCOS @ UC3M120

    kworker, ksoftirqd, irq, rcuob, rcuos, watchdog,

    http://www2.comp.ufscar.br/lxr/source/Documentation/kernel-per-CPU-kthreads.txt

    PID USUARIO PR NI VIRT RES SHR S %CPU %MEM HORA+ ORDEN

    1 root 20 0 34100 3484 1500 S 0,0 0,0 0:00.98 init

    2 root 20 0 0 0 0 S 0,0 0,0 0:00.00 kthreadd

    3 root 20 0 0 0 0 S 0,0 0,0 0:00.12 ksoftirqd/0

    5 root 0 -20 0 0 0 S 0,0 0,0 0:00.00 kworker/0:0H

    7 root 20 0 0 0 0 S 0,0 0,0 0:14.27 rcu_sched

    8 root 20 0 0 0 0 S 0,0 0,0 0:08.35 rcuos/0

    9 root 20 0 0 0 0 S 0,0 0,0 0:05.92 rcuos/1

    10 root 20 0 0 0 0 S 0,0 0,0 0:06.10 rcuos/2

    11 root 20 0 0 0 0 S 0,0 0,0 0:06.28 rcuos/3

    12 root 20 0 0 0 0 S 0,0 0,0 0:00.00 rcu_bh

    13 root 20 0 0 0 0 S 0,0 0,0 0:00.00 rcuob/0

    14 root 20 0 0 0 0 S 0,0 0,0 0:00.00 rcuob/1

    15 root 20 0 0 0 0 S 0,0 0,0 0:00.00 rcuob/2

    16 root 20 0 0 0 0 S 0,0 0,0 0:00.00 rcuob/3

    17 root rt 0 0 0 0 S 0,0 0,0 0:00.29 migration/0

    18 root rt 0 0 0 0 S 0,0 0,0 0:00.10 watchdog/0

    19 root rt 0 0 0 0 S 0,0 0,0 0:00.10 watchdog/1

    20 root rt 0 0 0 0 S 0,0 0,0 0:00.19 migration/1

    21 root 20 0 0 0 0 S 0,0 0,0 0:00.32 ksoftirqd/1

    22 root 20 0 0 0 0 S 0,0 0,0 0:00.00 kworker/1:0

    23 root 0 -20 0 0 0 S 0,0 0,0 0:00.00 kworker/1:0H

    24 root rt 0 0 0 0 S 0,0 0,0 0:00.09 watchdog/2

    25 root rt 0 0 0 0 S 0,0 0,0 0:00.25 migration/2

    ...

  • Alejandro Caldern Mateos

    Contenidos

    ARCOS @ UC3M121

    Introduccin

    Funcionamiento del sistema operativo Arranque del sistema

    Caractersticas y tratamiento de los eventos

    Procesos de ncleo

    Otros aspectos

    Concurrencia en los eventos

    Aadir nuevas funcionalidades al sistema

  • Alejandro Caldern Mateos

    Concurrencia en multiprocesadores

    ARCOS @ UC3M122

    UP: Uni-Processing. El sistema operativo y aplicaciones se ejecuta solo en una CPU.

    Sencillo pero mal rendimiento.

    ASMP: Asymmetric MultiProcessing. El sistema operativo se ejecuta en la misma CPU.

    Sencillo pero rendimiento mejorable.

    SMP: Symmetric MultiProcessing. El sistema operativo se puede ejecutar en cualquier procesador.

    Dificultad al necesidad mecanismos de sincronizacin especiales para la proteccin de secciones crticas.

    Ej.: subir el nivel de interrupcin no impide ejecutar seccin en otra CPU.

  • Alejandro Caldern Mateos

    Ejemplo de mecanismos bsicosLinux

    ARCOS @ UC3M123

    Tcnica mbito Ejemplo de esqueleto

    Deshabilitarinterrupciones

    Una CPU solo

    unsigned long flags;

    local_irq_save(flags);

    /* ... SC: seccin crtica ... */

    local_irq_restore(flags);

    Spin Locks

    Todas las CPU Espera activa:

    NO se puede dormir, planificar, etc. en SC

    #include

    spinlock_t l1 = SPIN_LOCK_UNLOCKED;

    spin_lock(&l1);

    /* ... SC: seccin crtica ... */

    spin_unlock(&l1);

    Mutex Todas las CPU Espera bloqueante:

    NO usar en int. HW

    #include

    static DEFINE_MUTEX(m1);

    mutex_lock(&m1);

    /* ... SC: seccin crtica ... */

    mutex_unlock(&m1);

    Operaciones Atmicas

    Todas las CPUatomic_t a1 = ATOMIC_INIT(0);

    atomic_inc(&a1);

    printk(%d\n, atomic_read(&a1));

  • Alejandro Caldern Mateos

    Ejemplo de mecanismos compuestosLinux

    ARCOS @ UC3M124

    Tcnica mbito Ejemplo de esqueleto

    RW locks

    Todas las CPU Espera activa:

    NO se puede dormir, planificar, etc. en SC

    rwlock_t x1 = RW_LOCK_UNLOCKED;

    read_lock(&x1);

    /* ... SC: seccin crtica ... */

    read_unlock(&x1);

    write_lock(&x1);

    /* ... SC: seccin crtica ... */

    write_unlock(&x1);

    Spin Locks + irq

    Todas las CPU Espera activa y no interrup.:

    NO se puede dormir, planificar, etc. en SC

    spinlock_t l1 = SPIN_LOCK_UNLOCKED;

    unsigned long flags;

    spin_lock_irqsave(&l1, flags);

    /* ... SC: seccin crtica ... */

    spin_unlock_irqrestore(&l1, flags);

    RW locks + irq

    Todas las CPU Espera activa y no interrup.:

    NO se puede dormir, planificar, etc. en SC

    read_lock_irqsave();

    read_lock_irqrestore();

    write_lock_irqsave();

    write_lock_irqrestore();

  • Alejandro Caldern Mateos

    Ejecucin anidada de tratamiento de evento

    ARCOS @ UC3M125

    Evento en ejecucin

    Evento que llega

    Tratamiento habitual

    Int. Hw. /Excepcin

    Int. Hw. /Excepcin

    Se permite todas, ninguna o solo de ms prioridad (si S.C., deshabilitadas).

    Ll. sist. / Int. Sw.

    Int. Hw. /Excepcin

    Interrumpe siempre (si S.C., deshabilitadas).

    Int. Hw. /Excepcin

    Ll. sist. / Int. Sw.

    No pueden interrumpirlas.

    Ll. sist. / Int. Sw.

    Ll. sist. / Int. Sw.

    Kernel no expulsivo No pueden interrumpir (se encolan). Muchos UNIX y Linux antes.

    Kernel expulsivo. Hay que proteger secciones crticas. Solaris, Windows 2000, etc.

  • Alejandro Caldern Mateos

    Ejecucin anidada de tratamiento de eventoLinux

    ARCOS @ UC3M126

    Kernel Control Path Proteccin en UP Proteccin en *MP

    Excepciones Mutex -

    Int. HW. Deshabilitar Int. Spin Lock

    Int. SW. - Spin Lock (SoftIrq, N Tasklets)

    Excepciones + Int. HW. Deshabilitar Int. Spin Lock

    Excepciones + Int. SW. Encolar Int. SW. Spin Lock

    Int. HW. + Int. SW. Deshabilitar Int. Spin Lock

    Exc. + Int HW. + Int. SW. Deshabilitar Int. Spin Lock

    Understanding the Linux Kernel (pgina 218)

  • Alejandro Caldern Mateos

    Contenidos

    ARCOS @ UC3M127

    Introduccin

    Funcionamiento del sistema operativo Arranque del sistema

    Caractersticas y tratamiento de los eventos

    Procesos de ncleo

    Otros aspectos

    Concurrencia en los eventos

    Aadir nuevas funcionalidades al sistema

  • Alejandro Caldern Mateos

    Criterios para asignar una accin

    a un contexto de ejecucin

    ARCOS @ UC3M128

    La accin est vinculada a un evento sncrono o asncrono?

    sncrono (excepcin o ll. al sistema)

    Incluir en la rutina del evento (exc. o ll. sist.)

    asncrono (Int. HW e Int. SW.)

    crtica

    La accin es crtica?

    no

    Incluir en la rutina de interrupcin

    La accin requiere bloqueos?

    sino

    Incluir en la interrupcin software

    Se ejecutar dentro de un proceso de ncleo

  • Leccin 2Funcionamiento del sistema operativo

    Grupo ARCOS

    Diseo de Sistemas Operativos

    Grado en Ingeniera Informtica

    Universidad Carlos III de Madrid