Pergunta

Na minha universidade estou trabalhando em um projeto que envolve alguma programação de kernel.Uma parte disso é o módulo carregável do kernel que registra o manipulador de interrupção para uma determinada interrupção.

Agora compartilhei a estrutura de dados usada pelo manipulador de interrupções e pelos tasklets e estou me perguntando se posso ter certeza de que os tasklets são executados na mesma ordem em que foram agendados ou é indefinido?

Por exemplo, meu manipulador de interrupção é chamado às vezes t1 e tempo t2, cada invocação é executada tasklet_schedule(&customTasklet);.Agora, posso ter certeza de que o tasklet que foi agendado na hora t1 será executado primeiro?

Foi útil?

Solução

Agendado tasklet são armazenados em uma lista;o sistema leu esta lista em FIFO ordem, então:sim t1 é executado antes t2.

Aqui algum código para entender o mecanismo.

editar

Como lembrado por CL, existe uma lista de tasklets para cada CPU;portanto, quando você agenda um tasklet, você o agenda na CPU ativa.Portanto, os tasklets são serializados na mesma CPU.Se você agendar t1 uma CPU1 e t2 na CPU2 pode acontecer que t2 é executado antes t1.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top