执行顺序
在我的大学里,我正在研究一个涉及一些内核编程的项目。 其中一部分是可加载的内核模块,它为某些给定的中断注册中断处理程序。
现在我共享了中断处理程序和tasklets使用的数据结构,我想知道是否可以确定tasklet是按照它们被调度的相同顺序执行还是未定义?
例如,我的中断处理程序在时间t1
和时间t2
调用,每个调用执行tasklet_schedule(&customTasklet);
。 现在,我可以确定在时间t1
安排的tasklet会先执行吗?
计划tasklet
都存储在一个列表中; 系统以FIFO的顺序读取这个列表,所以:是的t1
在t2
之前执行。
这里有一些代码来理解机制。
编辑
正如CL提醒的那样,每个CPU都有一个tasklet列表; 所以当你制作一个tasklet的时候,你正在调度它在活动的CPU上。 所以tasklet在同一个CPU上被序列化。 如果在CPU2上计划t1
un CPU1和t2
,可能会发生t2
在t1
之前执行。
上一篇: order of execution