TSO-Interrupciones.pdf
-
Upload
mauro-antivero -
Category
Documents
-
view
223 -
download
0
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-