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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top