在我的大学里,我正在从事一个涉及一些内核编程的项目。其中一部分是可加载内核模块,它为某个给定的中断注册中断处理程序。
现在我已经共享了中断处理程序和 tasklet 使用的数据结构,我想知道我是否可以确定 tasklet 的执行顺序与它们被调度的顺序相同,或者它是否未定义?
例如,我的中断处理程序在时间 t1
和时间 t2
被调用,每次调用都执行 tasklet_schedule(&customTasklet);
。现在,我可以确定在 t1
时间安排的 tasklet 将首先执行吗?
最佳答案
预定 tasklet
存储在列表中;系统以 FIFO 顺序读取此列表,因此:是 t1
在 t2
之前执行.
在这里some code了解机制。
编辑
正如 CL 所提醒的,每个 CPU 都有一个 tasklet 列表;所以当你调度一个 tasklet 时,你是在事件的 CPU 上调度它。所以 tasklet 在同一个 CPU 上被序列化。如果你安排t1
联合国 CPU1 和 t2
在 CPU2 上可能会发生 t2
在 t1
之前执行.
关于linux tasklets - 执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20050378/