- 论坛徽章:
- 46
|
回复 1# Dannysd
本质上讲,tasklet也是软中断实现的,只不过是级别比软中断低而已
系统也提供高等级的tasklet,只是平常不使用而已,如下是所有的软中断类型
enum
{
HI_SOFTIRQ=0, 高等级的tasklet
TIMER_SOFTIRQ,
NET_TX_SOFTIRQ,
NET_RX_SOFTIRQ,
BLOCK_SOFTIRQ,
BLOCK_IOPOLL_SOFTIRQ,
TASKLET_SOFTIRQ, 低等级的tasklet,我们平常都在使用的这个
SCHED_SOFTIRQ,
HRTIMER_SOFTIRQ,
RCU_SOFTIRQ, /* Preferable RCU should always be the last softirq */
NR_SOFTIRQS
};
问题:
1)为什么同类的tasklet不能同时执行?而且在SMP的情况下,也只能是在同一个核心上执行
这是内核给我们提供的一种机制,如果你想在多核下同时执行的话,那就别使用tasklet。使用tasklet在同步上要比用软中断简单
2)而软中断却可以,不但可以同时执行,而且还可以在不同的核心上同时执行?
这个是可以的
原因是因为tasklet可以在进程上下文执行有关系吗?
不是,在进程上下文执行只能是工作队列 |
|