Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
linux微线程-执行顺序_Linux_Linux Kernel_Tasklet - Fatal编程技术网

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(核心)。