TSO-Interrupciones.pdf

download TSO-Interrupciones.pdf

of 33

Transcript of TSO-Interrupciones.pdf

  • 7/25/2019 TSO-Interrupciones.pdf

    1/33

    TSO Interrupciones 2012

    Taller de Sistemas Operativos

    Interrupciones y Excepciones

  • 7/25/2019 TSO-Interrupciones.pdf

    2/33

    TSO Interrupciones 2012

    Agenda

    Conceptos generales

    Interrupciones

    Excepciones

    Lneas IRQs y PIC

    Tabla de descriptores de interrupciones Manejadores de interrupciones

    Manejador de excepciones

    Bottom Halves Softirqs

    Tasklets

    Work Queues

  • 7/25/2019 TSO-Interrupciones.pdf

    3/33

    TSO Interrupciones 2012

    Conceptos generales

    Las interrupciones pueden ser:

    Sincrnicas: son las generadas por la CP! al ejecutar

    instrucciones

    "sincrnicas: son las generadas por otros dispositi#os y noest$n alineadas al clockdel siste%a

    Intel designa co%o excepciones e interrupciones a las

    sincrnicas o asincrnicas respecti#a%ente

  • 7/25/2019 TSO-Interrupciones.pdf

    4/33TSO Interrupciones 2012

    Interrupciones

    Cuando una interrupcin es detectada por el procesador& sedebe parar la ejecucin de lo 'ue se estaba (aciendo yejecutar el cdigo correspondiente de atencin deinterrupciones

    Esto genera un kernel control path& 'ue ejecuta en laestructura del proceso 'ue estaba ejecutando

    Los registros de ejecucin son sal#ados en el Kernel ModeStackdel proceso interru%pido

    El %anejador de ls interrupcin tiene su propio stac) de unap$gina *+ ,-.

  • 7/25/2019 TSO-Interrupciones.pdf

    5/33TSO Interrupciones 2012

    Interrupciones

    La atencin de interrupciones debe satis/acer:

    Las interrupciones deben ser atendidas de /or%a r$pida

    Toda tarea 'ue no sea necesaria se debe di/erir para otro

    %o%ento 0ebe ser posible ejecutarlas en /or%a anidada

    0eben ejecutar& todo lo 'ue sea posible& con las

    interrupciones (abilitadas

  • 7/25/2019 TSO-Interrupciones.pdf

    6/33TSO Interrupciones 2012

    Interrupciones

    Intel proporciona una instruccin 'ue des(abilita lasinterrupciones 1en%ascarables2

    3ay algunas 'ue no puede des(abilitar: 4o 1%ascarables2

    Por lo general son errores de (ard5are

    La flagIFdel registro EFLAGSdeter%ina si el estado de lasinterrupciones

    Se garanti6a 'ue no se pierden interrupciones

    Estas son generadas luego 'ue se (abiliten nue#a%ente

  • 7/25/2019 TSO-Interrupciones.pdf

    7/33TSO Interrupciones 2012

    Excepciones

    Las excepciones son generadas por: Errores en la progra%acin *p7ej7: di#isin por cero.

    Condiciones an%alas *p7ej7: /allo de p$gina.

    Si son de errores de progra%acin se le en#a una se8al alproceso 'ue las gener

    El proceso debe capturar estas se8ales& sino se ejecuta elhandler por de/ecto 'ue /inali6ar$ la ejecucin

    Si se da una condicin an%ala& el n9cleo deber$reestablecer la condicin para continuar la ejecucin

  • 7/25/2019 TSO-Interrupciones.pdf

    8/33TSO Interrupciones 2012

    Excepciones

    Las excepciones clasi/ican en: 0etectadas por el procesador

    allos

    Pueden ser corregidos y reto%an la ejecucin7 Se reto%a la

    instruccin 'ue gener el /allo Traps

    Es utili6ada& en %ayor %edia& para debugging

    Aborts

    !n error gra#e ocurri co%o un /allo del hardare Progra%adas

    Son generadas por los progra%as al ejecutar la instruccin into

    int3

  • 7/25/2019 TSO-Interrupciones.pdf

    9/33TSO Interrupciones 2012

    Excepciones

  • 7/25/2019 TSO-Interrupciones.pdf

    10/33TSO Interrupciones 2012

    Lneas IRQs y PIC

    El siste%a cuenta con una unidad de (ard5are deno%inada

    PIC *!rogrammable "nterrupt #ontroller. Los controladores de dispositi#os tienen una lnea *IRQ. de

    conexin contra la controladora de interrupciones

    La tarea de la controladora PIC se resu%e en:

    Monitorear las lneas de las controladoras

    Si una est$ encendida:

    Poner disponible en los puertos *I;< ports. de la controladora datos para

    el procesador7

    En#iar una se8al al procesador7

    Esperar a 'ue el procesador acuse la se8al generada a tra#=s de la

    escritura en un puerto7

    >ol#er al paso de %onitoreo

  • 7/25/2019 TSO-Interrupciones.pdf

    11/33TSO Interrupciones 2012

    Lneas IRQs y PIC

    El PIC es un c(ip progra%able

    Se per%iten des(abilitar;(abilitar las lneas IRQ

    Si est$n des(abilitadas& las interrupciones no se pierden

    Posterior%ente& cuando el procesador (abilita la lnea& sele reportan las interrupciones

    El c(ip soporta ? lneas y se conectan en cascada *@A

    lneas.

  • 7/25/2019 TSO-Interrupciones.pdf

    12/33TSO Interrupciones 2012

    Tala de descriptores de Interrupciones

    Se de/ine una tabla global 'ue contiene la asociacin de las

    interrupciones o excepciones con el handlercorrespondiente*I0T B "nterrupt $escriptor Table.

    Existe un registro *idtr. 'ue tiene la direccin base de latabla y el largo

    Es posible de/inir (asta AD entradas Se tiene tipos de descriptores:

    Task gate

    "nterrupt gate *interrupciones.

    Trap gate*excepciones.

    La tabla es creada al iniciarse el siste%a y luego los devicedrivers de los dispositi#os la actuali6an con los handlerscorrespondientes7

  • 7/25/2019 TSO-Interrupciones.pdf

    13/33

    TSO Interrupciones 2012

    !ane"adores de interrupciones

    El device driverde los dispositi#os es el encargado de

    registrar la rutina de interrupcin

    Esta tarea in#olucra in#ocar la rutina:

    int request_irq (

    unsigned int irq,irq_handler_t handler,

    unsigned long irqflags,

    // IRQF_DISALED, IRQF_SA!"LE_RA#D$!, IRQF_%I!ER,

    // IRQF_S&ARED

    'onst 'har de)na*e,

    )oid de)_id+

  • 7/25/2019 TSO-Interrupciones.pdf

    14/33

    TSO Interrupciones 2012

    !ane"adores de interrupciones

    El (andler tiene el cabe6al:irqreturn_t intr_handler(int irq, )oid de)_id+

    ir': 49%ero de lnea de interrupcin

    de#Fid: El 'ue se le paso cuando se declar el handler

  • 7/25/2019 TSO-Interrupciones.pdf

    15/33

    TSO Interrupciones 2012

    !ane"adores de interrupciones

    El cdigo debe ser bastante li%itado

    Solo debera to%ar en cuenta copiar la in/or%acin a

    %e%oria y liberar a la PIC7

    La rutina no tiene necesidad de ser reentrante ya 'ue la

    interrupcin 'ueda des(abilitada en todos los procesadores Es posible 'ue en una lnea se co%parta por #arios

    dispositi#os7 En estos casos el siste%a in#ocar$ todas las

    rutinas correspondientes y solo deber$ ejecutarse la del

    dispositi#o adecuado La rutina tiene un stac) de una p$gina y& co%o se pueden

    anidar& se debe (acer un uso lo %$s li%itado posible

  • 7/25/2019 TSO-Interrupciones.pdf

    16/33

    TSO Interrupciones 2012

    Camino de una interrupci#n

  • 7/25/2019 TSO-Interrupciones.pdf

    17/33

    TSO Interrupciones 2012

    E"ecuci#n del handler

    irqreturn_t handle_IRQ_event(unsigned int irq, stru't irqa'tiona'tion

    int status - .

    int ret)al - 0

    if (1(a'tion2flags 4 IRQF_DISALED++

    lo'al_irq_ena5le(+ // desha5ilitadas 6or la 7"8

    do status 9- a'tion2flags ret)al 9- a'tion2handler(irq, a'tion2de)_id+

    a'tion - a'tion2ne:t

    ;

  • 7/25/2019 TSO-Interrupciones.pdf

    18/33

    TSO Interrupciones 2012

    $ailitaci#n de interrupciones

    En el handler es posible des(abilitar las interrupciones en/or%a %o%ent$nea:

    lo'al_irq_disa5le(+ / 'li /

    =

    lo'al_irq_ena5le(+ / sti /

    Ta%bi=n es posible des(abilitar alguna interrupcin

    espec/ica:

    disa5le_irq(unsigned int irq+ena5le_irq(unsigned int irq+

  • 7/25/2019 TSO-Interrupciones.pdf

    19/33

    TSO Interrupciones 2012

    Interrupciones anidadas

    Las interrupciones no tiene una jerar'ua

    Cuando surgen deben ser atendida en /or%a in%ediata Es posible 'ue se aniden:

    0e esta /or%a& se gana: Mayor /luide6 en el trabajo de los dispositi#os

    Tener un %odelo de interrupciones sin pri#ilegios */acilita elcdigo& lo (ace portable.

  • 7/25/2019 TSO-Interrupciones.pdf

    20/33

    TSO Interrupciones 2012

    %ottom $alves

    Las rutinas de atencin de interrupciones deben:

    Ejecutar en /or%a asincrnica y& por lo tanto& interru%pir otro cdigo*incluso otras rutinas de atencin.

    Ejecutar con su interrupcin des(abilitada y& en algunos casos& con todaslas interrupciones des(abilitadas7 Por lo 'ue deben ejecutar lo %$s r$pidoposible

    Son bastante dependientes del tie%po ya 'ue trabajan con el (ard5are 4o corren en el contexto de un proceso& por lo 'ue no pueden blo'uearse

    *no se pueden plani/icar.

    La rutina de atencin de una interrupcin debe ejecutar y (acer lo%ni%o necesario& delegando para otro %o%ento las tareas 'ue

    no re'uieran ser reali6adas cuando se genera la interrupcin La segunda parte ejecuta con todas las interrupciones (abilitadas

  • 7/25/2019 TSO-Interrupciones.pdf

    21/33

    TSO Interrupciones 2012

    %ottom $alves

    >arios siste%as operati#os i%ple%entan el concepto de tophalfy bottom half

    En el bottom halfse reali6an las tareas 'ue no re'uieran un

    tie%po especi/ico para ejecutar o 'ue generen una

    degradacin del siste%a

    En Linux existen tres /or%as de ejecutar el bottom halfde una

    interrupcin:

    Softirqs

    Tasklets

    Work queues

  • 7/25/2019 TSO-Interrupciones.pdf

    22/33

    TSO Interrupciones 2012

    Softirqs

    Los softirqsson co%piladas est$tica%ente en el siste%a

    operati#o *>ernel/softirq?'. Linux soporta (asta softirq

    El n9cleo solo i%ple%enta G *linu:/interru6t?h.:

    &I_S$F%IRQ*prioridad H.

    %I!ER_S$F%IRQ*prioridad @.

    #E%_%@_S$F%IRQ*prioridad .

    #E%_R@_S$F%IRQ*prioridad .

    L$7_S$F%IRQ*prioridad +.

    %ASLE%_S$F%IRQ*prioridad A.

    S7&ED_S$F%IRQ*prioridad D.

    Son reser#adas para tareas 'ue re'uieran un tie%po crtico*red& discos.

  • 7/25/2019 TSO-Interrupciones.pdf

    23/33

    TSO Interrupciones 2012

    E"ecuci#n de softirqs

    Los softirqejecutan con las interrupciones (abilitadas y no

    pueden blo'uearse En un procesador sola%ente ejecuta un softirq a la #e6 y solo

    puede cortarse por una interrupcin

    En un siste%a %ultiprocesador se per%iten 'ue ejecuten en

    paralelo& incluso la %is%a rutina de atencin Es por eso necesario tener especial cuidado en proteger los

    datos globales de la rutina

    Los softirqdeben ser %arcadas antes de su ejecucin *raising

    the softirq.

    El handlerantes de /inali6ar su ejecucin %arca sucorrespondiente softirqpara 'ue sea ejecutada en el /uturo

  • 7/25/2019 TSO-Interrupciones.pdf

    24/33

    TSO Interrupciones 2012

    E"ecuci#n de softirqs

    Las softirqpendientes son controladas y ejecutadas en: El retorno de un handler de una interrupcin *do_softirq.

    El kernel thread>softirqd

    En otras partes del cdigo del n9cleo 'ue #eri/ica si existen softirq

    pendientes *ej7 subsiste%a de red.

  • 7/25/2019 TSO-Interrupciones.pdf

    25/33

    TSO Interrupciones 2012

    E"ecuci#n de softirqs

    La ejecucin de los softirq se reali6a en la /uncin do_softirq:

    6ending - lo'al_softirq_6ending(+

    if(6ending+

    stru't softirq_a'tion h

    set_softirq_6ending(0+

    h - softirq_)e'

    do

    if (6ending 4 .+

    h2a'tion(h+

    hBB

    6ending - .

    ;

  • 7/25/2019 TSO-Interrupciones.pdf

    26/33

    TSO Interrupciones 2012

    Kernel thread ksoftirqd

    Linux i%ple%enta un kernel thread *ksoftirqd. con nice H Esto per%ite 'ue& ante un potencial r$/aga de interrupciones&

    los procesos de usuario puedan ejecutar

    Por cada procesador se dispone de un ksoftirqd *ksoftirqd%n.

    El kernel thread #eri/ica si existen so/tir' pendientes& en cuyocaso in#oca a la rutina doFso/tir'

    Si no (ay pendientes& se blo'uea e in#oca al plani/icador para'ue asigne a otra tarea

  • 7/25/2019 TSO-Interrupciones.pdf

    27/33

    TSO Interrupciones 2012

    Tasklets

    Son construidas sobre los softirq Son softirqdin$%icas

    Se utili6an para tareas 'ue no re'uieren una urgencia de tie%po

    Son representadas por &I_S$F%IRQ y %ASLE%_S$F%IRQen los

    tipos de softirq Su estructura se de/ine co%o:

    stru't tas>let_stru't

    stru't tas>let_stru't ne:t // "rC:i*o de la lista

    unsigned long state // Estado (S7&ED, R8#+

    ato*i'_t 'ount // ( 0 desha5ilitada, 0 6ara ee'utar

    )oid (fun'+ (unsigned long+ // "untero a fun'iCn

    unsigned long data // argu*ento

    ;

    Pl i&i i# d T kl

  • 7/25/2019 TSO-Interrupciones.pdf

    28/33

    TSO Interrupciones 2012

    Plani&icaci#n de Tasklets

    Las Taskletsplani/icadas est$n en dos estructuras por procesador

    *tas>let_)e'y tas>let_hi_)e'. La rutina 'ue plani/ica es tas>_s'hedule:

    lo'al_irq_sa)e(flags+

    t2ne:t - __get_'6u_)ar(tas>let_)e'+?list

    __get_'6u_)ar(tas>let_)e'+?list - t

    raise_softirq_irqoff(%ASLE%_S$F%IRQ+

    lo'al_irq_restore(flags+

    0es(abilita interrupciones locales para asegurarse 'ue ejecuta sola

    Plani/ica la tarea *agrega a la estructura del procesador.

    3abilita el T"S,LETFS

  • 7/25/2019 TSO-Interrupciones.pdf

    29/33

    TSO Interrupciones 2012

    E"ecuci#n de Tasklets

    Las Taskletsse ejecutan a tra#=s de la rutina doFso/tir'

    La rutina tas>_a'tion in#oca a todas las rutinaspendientes:

    0es(abilitar las interrupciones

    eri/icar si la taskletest$ ejecutando en otro procesador Si est$& cargarla nue#a%ente para una /utura ejecucin Si no est$& %arcar el estado co%o ejecutando para 'ue no se pueda

    ejecutar en otro procesador >eri/icar si la taskletest$ (abilitada

    Ejecutar la taskletcorrespondiente

    W k Q

  • 7/25/2019 TSO-Interrupciones.pdf

    30/33

    TSO Interrupciones 2012

    Work Queues

    Las ork queuesse di/erencian con los softirq y tasklets en:

    Ejecutan en el contexto de un proceso& por lo tanto& puedenblo'uearse

    Son ejecutadas a tra#=s de un orker thread

    Linux pro#ee la creacin de nue#os orker thread*uno porprocesador o uno 9nico.

    El orker threadpor de/ecto es el event& y existe uno porprocesador en el siste%a: event%'& event%( )

    Son bastante 9tiles cuando la atencin consu%e bastante

    tie%po y el trabajo se puede di/erir bastante en el tie%po Eje%plos:

    reiserfs

    *fslogd& *fsdatad

    W k Q

  • 7/25/2019 TSO-Interrupciones.pdf

    31/33

    TSO Interrupciones 2012

    Work Queues

    La estructura queue_stru'tcontiene los descriptores

    '6u_

  • 7/25/2019 TSO-Interrupciones.pdf

    32/33

    TSO Interrupciones 2012

    Primitivas para administraci#n

    Para %anipular una ork queue se tienen disponibles las

    siguientes pri%iti#as: 'reate_queue

    Recibe co%o par$%etro el no%bre del t(read

    destro_queue

    0estruye la 5or)'ueue queue_

    "grega una /uncin en la ork queue

    >eri/ica si ya est$ en la ork queue7 Si es as& retorna

    Se agrega al /inal de la lista de pendientes de la_stru't

    Si el orker threadest$ 1dur%iendo2 para la CP! local&entonces se lo despierta

    'or( )ueues + - .-

  • 7/25/2019 TSO-Interrupciones.pdf

    33/33

    TSO Interrupciones 2012

    'or( )ueues * +,-,.-

    Las 5or) 'ueues /ueron %odi/icadas a partir del )ernel 7D7D

    para dis%inuir la cantidad de t(read del )ernel en ejecucin *y%e%oria utili6ada por las estructuras.

    Se sustituyo por un conjunto de )ernel t(reads korker%','

    Las tareas di/eridas son asignadas a los t(read a tra#=s de un

    algorit%o 'ue intenta %antener un tarea ejecutando porprocesador7

    Para crear una 5or)'ueue se sustituye la /uncincreateF5or)'ueue por la /uncin:

    allo'_queue

    Recibe co%o par$%etros el no%bre& tipo *REE4TR"4T&

    !4-