linux微线程-执行顺序
在我的大学里,我正在做一个涉及一些内核编程的项目。其中一部分是可加载内核模块,它为某个给定的中断注册中断处理程序 现在我有了中断处理程序和微线程使用的共享数据结构,我想知道是否可以确定微线程的执行顺序与它们被调度的顺序相同,还是没有定义linux微线程-执行顺序,linux,linux-kernel,tasklet,Linux,Linux Kernel,Tasklet,在我的大学里,我正在做一个涉及一些内核编程的项目。其中一部分是可加载内核模块,它为某个给定的中断注册中断处理程序 现在我有了中断处理程序和微线程使用的共享数据结构,我想知道是否可以确定微线程的执行顺序与它们被调度的顺序相同,还是没有定义 例如,在时间t1和时间t2调用我的中断处理程序,每次调用都执行tasklet\u调度(&customTasklet)。现在,我可以确保在时间t1调度的小任务将首先执行吗?调度的tasklet存储在一个列表中;系统以FIFO顺序读取此列表,因此:是t1在t2之前执
例如,在时间
t1
和时间t2
调用我的中断处理程序,每次调用都执行tasklet\u调度(&customTasklet)代码>。现在,我可以确保在时间t1
调度的小任务将首先执行吗?调度的tasklet
存储在一个列表中;系统以FIFO顺序读取此列表,因此:是t1
在t2
之前执行
在这里,我们将了解其机制
编辑
正如CL所提醒的,每个CPU都有一个tasklet列表;因此,当您调度tasklet时,您是在活动CPU上调度它。因此,tasklet是在同一个CPU上序列化的。如果您在CPU2上调度t1
unCPU1和t2
,则可能会发生t2
在t1
之前执行的情况……如果在同一个CPU上调度小任务。好的,谢谢您的回答,但是如果CPU有多个线程,该怎么办?它是针对每个物理CPU的吗?我不是100%确定这一点。但我认为是针对每个物理CPU(核心)。