Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ttul
JuanCarlos PerezCortes
Table of Contents
Tema 6. Servicios internos.................................................................................................................................1
6.1 Introduccin.......................................................................................................................................1
6.2 Ejecucin diferida de funciones.........................................................................................................1
6.3 Softirqs...............................................................................................................................................2
6.4 Estado de las interrupciones...............................................................................................................2
6.5 Inicializacin de las softirqs...............................................................................................................2
6.6 Activando una softirq.........................................................................................................................3
6.7 Ejecucin de las softirq pendientes: do_softirq.................................................................................3
6.8 El proceso ksoftirqd...........................................................................................................................4
6.1 Introduccin
En el manejo de interrupciones, la ejecucin de los manejadores de dispositivo se lleva a cabo de
forma serie, un manejador tras otro. Adems normalmente las interrupciones estn deshabilitadas en
todo este proceso, por lo que no se suelen recibir ms interrupciones en el procesador hasta que todos
los manejadores de dispositivo pendientes han terminado de ejecutarse.
En el manejo de interrupciones, en muchas ocasiones, los manejadores de dispositivo estn
compuestos por una parte urgente, y una parte no tan urgente. Esta ltima se puede retrasar o diferir
por un periodo de tiempo realtivamente largo.
As pues, para mejorar el tiempo de respuesta del resto del sistema, Linux incorpora un sistema de
ejecucin diferida de funciones denominada genricamente softirqs. Estas funciones diferidas se
ejcutan siempre con las interrupciones habilitadas.
6.3 Softirqs
Las softirqs es la versin ms simple de la ejecucin de funciones difereidas y la que da soporte a las dems.
El nemro de softirqs que puede haber en el sistemas est limitado a 32, algunas de las cuales se reservan ya
en el proceso de arranque.
Las estructuras de datos que definen las softirqs son bastante sencillas:
softirq_vec[32][kernel/softirq.c#L45] (struct
softirq_action[include/linux/interrupt.h#L68]): un vector que contiene la informacin sobre las
32 posibles funciones diferidas como softirqs.
irq_stat[NR_CPUS][kernel/softirq.c#L20] (irq_cpustat_t[include/asmi386/hardirq.h#L8]): es
un vector que contiene el estado de las interrupciones en cada CPU. A sus campos no se
accede directamente, sino a travs de unas macros definidas en
include/linux/irq_cpustat.h#L28.