Tasklets de Linux: orden de ejecución
-
26-12-2019 - |
Pregunta
En mi universidad estoy trabajando en un proyecto que involucra algo de programación del kernel.Una parte de esto es el módulo del kernel cargable que registra el controlador de interrupciones para una interrupción determinada.
Ahora he compartido una estructura de datos que utilizan el controlador de interrupciones y los tasklets y me pregunto si puedo estar seguro de que los tasklets se ejecutan en el mismo orden en que están programados o no están definidos.
Por ejemplo, mi controlador de interrupciones se llama en el momento t1
y tiempo t2
, cada invocación se ejecuta tasklet_schedule(&customTasklet);
.Ahora, ¿puedo estar seguro de que el tasklet que estaba programado en el momento t1
¿Se ejecutará primero?
Solución
Programado tasklet
se almacenan dentro de una lista;el sistema lee esta lista en FIFO orden, entonces:Sí t1
se ejecuta antes t2
.
Aquí algún código para entender el mecanismo.
editar
Como lo recuerda CL, hay una lista de tareas para cada CPU;entonces, cuando programa un tasklet, lo está programando en la CPU activa.Entonces los tasklets se serializan en la misma CPU.si programa t1
CPU1 y t2
en CPU2 puede suceder que t2
se ejecuta antes t1
.